Keepalived高可用集群
一、服务介绍
keepalive起初是专为LVS设计的,专门用来监控LVS集群系统红各个服务节点的状态,后来又加入了VRRP的功能,因此不了配合LVS服务外,也可以作为其他服务(nginx,haproxy)的高可用软件,VRRP是virtual router redundancy protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由出现的单点故障问题,他能够保证网络的不间断、稳定的运行。所以,keepalive一方面具有LVS(cluster nodes healthchecks)功能,另一方面也具有LVS directors failover功能。
主要功能:实现LB Master主机和backup主机之间故障转义和自动切换。
二、keepalived故障切换转义原理介绍
2.1 切换原理
keepalived directors高可用对之间的故障切换转移,是通过VRRP协议(virtual router redundancy Protocol虚拟路由器冗余协议)来实现的。
在keepalived Directors正常工作时,主director节点会不断的向备节点广播心跳消息,用以告诉备节点自己还活着,当主节点发生故障时,备节点就无法继续检测到主节点的心跳,进而调用自身的接管程序,接管主节点的IP资源及服务。而当主节点恢复故障时,备节点会释放主节点故障时自身接管的IP资源及服务,恢复到原来的自身的备用角色。
2.1 协议介绍
VRRP协议,全称Virtual Router Redundancy Protocol,中文名,虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障,VRRP是通过一种竞选协议机制来将路有任务交给某台VRRP路由器。
MASTER和BACKUP
在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台物理的机器并不同时工作,而是由一台称为MASTER的负责路由工作,其他的都是BACKUP,MASTER并非一成不变,VRRP协议让每个VRRP路由器参与竞选,最终获胜的就是MASTER。MASTER有一些特权,比如拥有虚拟路由器的IP地址,我们的主机就是用这个IP地址作为静态路由的。拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。
VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(multicast)包(多播地址224.0.0.18)形式发送的。虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址:00-00-5E-00-01-{VRID}。所以,在一个虚拟路由器中,不管谁是MASTER,对外都是相同的MAC和IP(称之为VIP)。客户端主机并不需要因为MASTER的改变而修改自己的路由配置,对他们来说,这种主从的切换是透明的。
在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP广告包(VRRP Advertisement message),BACKUP不会抢占MASTER,除非它的优先级(priority)更高。当MASTER不可用时(BACKUP收不到广告包),多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性。
处于安全性考虑,VRRP包使用了加密协议进行加密。
三、keepalived安装、配置、启动
3.1软件的安装
[root@linux-node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.5. (Core)
方法一,直接yum安装:
[root@linux-node2 ~]# yum install keepalived -y
方法二,采用编译安装:
软件下载地址:http://www.keepalived.org/download.html
[root@linux-node1 ~]# wget http://www.keepalived.org/software/keepalived-2.0.12.tar.gz
[root@linux-node1 ~]# mkdir /etc/keepalived
[root@linux-node1 ~]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ # 拷贝配置文件
[root@linux-node1 ~]# cp /usr/local/sbin/keepalived /usr/sbin/ # 拷贝keepalived命令到环境变量默认目录
[root@linux-node1 ~]# systemctl start keepalived.service # 通过命令启动文件
3.2 MASTER的配置
[root@linux-node1 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {
notification_email {
acassen@firewall.loc # 可选配置,收件人地址,定义服务故障报警的Email地址,当服务发生主备切换或RS节点有故障时,发送报警邮件。
}
notification_email_from Alexandre.Cassen@firewall.loc # 可选配置,发件人地址。
smtp_server 192.168.200.1 # 定义SMTP服务器
smtp_connect_timeout
router_id proxy_01 # 是路由标识,在一个局域网里面应该是唯一的
vrrp_mcast_group4 224.0.0.19
} vrrp_script chk_nginx_proxy
{
script "/home/scripts/chk_nginx_proxy.sh" #定时执行脚本
interval 2 # 健康检查周期
weight
} vrrp_instance VI_1 { # 定义一个为VI_1的实例(可以定义多个),备节点也要有相同的实例。
state MASTER # 当前实例角色状态
interface eth0 # 选择绑定的网络通信接口
virtual_router_id 77 # 虚拟路由ID标识,最好是数字,MASTER和BACKUP配置相同实例时此ID必须一致
priority 150 # 优先级,数字越大优先级越高,MASTER要高于BACKUP,数值最好相差50以上
advert_int 1 # 同步通知间隔,M端和B端通信检查时间间隔,单位为秒。
authentication { # 权限认证配置
auth_type PASS # 建议为PASS方式还有AH方式
auth_pass 6666 # 密码建议为4位数字
}
virtual_ipaddress {
192.168.7.80 # 虚拟IP,可绑定多个地址,每个地址独占一行。
}
track_script {
chk_nginx_proxy # 追踪脚本
}
}
3.3 检查脚本配置,如果检查nginx服务异常,则停止keepalived服务
[root@linux-node1 ~]# chmod +x /home/scripts/chk_nginx_proxy.sh
[root@linux-node1 ~]# cat /home/scripts/chk_nginx_proxy.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" -eq ]; then
killall keepalived
fi
3.4 BACKUP的配置
[root@linux-node2 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs {
notification_email {
acassen@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout
router_id proxy_02
vrrp_mcast_group4 224.0.0.19
} vrrp_script chk_nginx_proxy {
script "/home/scripts/chk_nginx_proxy.sh"
interval
weight
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.7.80/
}
}
Keepalived高可用集群的更多相关文章
- Keepalived高可用集群应用
Keepalived高可用集群应用 1.keepalived服务说明 1.1.keepalived介绍 Keepalived是一个用C语言编写的路由软件.该项目的主要目标是为Linux系统和基于Lin ...
- Haproxy+keepalived高可用集群实战
1.1 Haproxy+keepalived高可用集群实战 随着互联网火热的发展,开源负载均衡器的大量的应用,企业主流软件负载均衡如LVS.Haproxy.Nginx等,各方面性能不亚于硬件负载均衡 ...
- Nginx+Keepalived高可用集群应用实践
Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...
- Keepalived高可用集群搭建(转载linuxIDC)
1.Keepalived简介 Keepalived是一个基于VRRP协议来实现的WEB服务高可用方案,可以利用其来避免单点故障.使用多台节点安装keepalived.其 他的节点用来提供真实的服务,同 ...
- 基于Keepalived高可用集群的MariaDB读写分离机制实现
一 MariaDB读写分离机制 在实现读写分离机制之前先理解一下三种主从复制方式:1.异步复制:MariaDB默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库 ...
- Linux 笔记 - 第十八章 Linux 集群之(一)Keepalived 高可用集群
一.前言 Linux 集群从功能上可以分为两大类:高可用集群和负载均衡集群.此处只讲高可用集群,负载均衡放在下一篇博客讲解. 高可用集群(High Availability Cluster,简称 HA ...
- Keepalived高可用集群介绍
1.Keepalived服务介绍 Keepalived起初是专为LVS设计的,专门用来监控LVS集群系统中各个服务节点的状态,后来又加入了VRRP的功能,因此除了配合LVS服务外,也可以为其他服务(n ...
- keepalived高可用集群。
keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keepalived三大功能1实现物理高可用, ...
- Linux系统——Keepalived高可用集群
#### keepalived服务的三个重要功能1. 管理LVS负载均衡软件Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动,停止功能,这使得 ...
- Nginx入门篇(七)之Nginx+keepalived高可用集群
一.keepalived介绍 keepalived软件最开始是转为负载均衡软件LVS而设计,用来管理和监控LVS集群系统中各个服务节点的状态,后来又加入了可实现高可用的VRRP功能.所以Keepali ...
随机推荐
- Windows 7系统启动MongoDB失败解决办法?
问题现象: 1.在配置Python环境安装MongoDB时发现在“服务”里面手动启动失败,报错如下: 2.在cmd里面也无法启动,注意这里要以管理员身份启动cmd哦 问题解决: 1.需要先在bin下执 ...
- 使用GTID给Galera集群做数据库异步复制
一.为什么要做Galera集群异步复制 Galera集群解决了数据库高可用的问题,但是存在局限性,例如耗时的事务处理可能会导致集群性能急剧下降,甚至出现阻塞现象.而不幸的是,类似报表等业务需求就需要做 ...
- RAID廉价磁盘冗余阵列介绍
RAID(廉价磁盘冗余阵列)技术主要是为了改善磁盘的访问延迟,增强磁盘的可用性和容错能力.目前服务器级别的计算机都支持插入多块磁盘(8块或者更多),通过使用RAID技术,实现数据在多块磁盘上的并发读写 ...
- Oracle 数据库创建(图形界面操作)
Oracle 创建数据库图文分解: 1. 选择所有程序->Oracle-OraDb11g_home1->Configuration and Migration Tools -> Da ...
- 理解活在Iphone中的那些App (二)
app是什么,为什么而存在 存在即合理的说法,已经被批臭批烂了.所以,作为一个程序员不能简简单单的因为上面来了一个需求,就完成一个需求.让做一个app就做一个app,只是简单的认为存在即合理,头让写就 ...
- 【整理】close 和 shutdown 的原理
http://stackoverflow.com/questions/14740852/linux-socket-close-vs-shutdown shutdown(sd, SHUT_WR) 发送 ...
- 根据需求设计类并且画UML类图练习
题目如下: // 打车时,可以打专车或者快车.任何车都有车牌号和名称// 不同车价格不同,快车每公里1元,专车每公里2元// 行程开始时,显示车辆信息// 行程结束时,显示打车金额(假定行程就5公里) ...
- VMware三个版本号workstation、server、esxi的差别
VMware三个版本号 workstation: 单机级.用在个人桌面系统中.须要操作系统支持 servier:工作组级,用于服务器.须要操作系统支持 esxi:企业级,用于服务器,不须要操作系统支持 ...
- 【bzoj 3252】攻略
题意 我们想到一个贪心,就是每次找到根路径前缀和最大的一个点,取走这条路径,同时把这条路径上的点权变成\(0\) 正确性显然 进一步发现我们需要从树上选择\(m\)条链使得链的总和最大 于是我们考虑换 ...
- Python文件和流
#coding = utf-8 from pprint import pprint import fileinput #read(n) f = open(r'E:\test_dir\somefile. ...