HA(High available)-Keepalived高可用性集群
Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP),类似于工作在3,4,5层的交换机软件。利用其来避免单点故障。即:检测web服务状态。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服 务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。
keepalived和heartbeat区别
Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
Heartbeat是基于主机或网络服务的高可用方式;
keepalived的目的是模拟路由器的双机[前端]
heartbeat的目的是用户service的双机[服务]
lvs的高可用建议用keepavlived
业务的高可用用heartbeat
VRRP中有两组重要的概念:VRRP路由器和虚拟路由器,主控路由器和备份路由器。
VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
测试环境如下
两台物理服务器和一个虚拟服务器(vip):
master:redhat 6.5 eth1 192.168.1.105
backup: redhat 6.5 eth1 192.168.1.106
vip: 192.168.1.100
测试环境的网络图如下:
+---------------------------VIP(192.168.1.100)----------------------+
| |
| |
Server[master]<----------------keppalived------------------>server[BACKUP]
eth0:192.168.1.105 eth0:192.168.1.106
节点A 192.168.1.105(主节点), 节点B 192.168.1.106(备用节点),虚拟IP(对外提供服务的IP 192.168.1.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点A网卡的MAC地址
图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点B网卡的MAC地址
图中的其它电脑如客户端会更新自己的ARP表,对应192.168.1.100的MAC地址=节点B网卡的MAC地址。
配置如下:
>/etc/keepalived/keepalived.conf 清除原配置文件内容。
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id wyl01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 55
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:1
}
}
保存退出。
配置备节点,主备节点配置大致相同,只需更改:
router_id wyl01
state MASTER
priority 100
为:
router_id wyl02
state BACKUP
priority 99
保存即可。
说明:
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id wyl01 id为wyl01必须唯一,不同的keepalived.conf此处的ID必须唯一
}
vrrp_instance VI_1 { 实例名为VI_1,相同实例的备节点要和这个名字相同。
state MASTER 节点状态为MASTER 备节点状态应该为BACKUP
interface eth0 通讯接口为eth0
virtual_router_id 55 实例ID为55 keepalived.conf 里唯一。
priority 100 优先级为100,备节点的优先级必须比这个低
advert_int 1 通讯检查时间间隔为1s
authentication {
auth_type PASS PASS为认证类型,此参数主备节点必须相同
auth_pass 1111 密码1111 准备节点必须相同
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:1
}
}
虚拟ip即vip为192.168.1.100,子网掩码为24,绑定接口为eth0 别名为eth0:1 次参数准备节点相同
启用服务主备keepalived ,和nginx :
/etc/init.d/keepalived start
service nginx start
查看备节点ip :ip arrd |grep eth0:1
显示有记录,查看备节点显示无此记录
如果备节点中出现eth0:1说明keepalived 配置不正常。高可用裂脑了,可逐步排除。
浏览器访问192.168.1.100 显示正常。
测试主备切换
停到主节点,理论:切换到备服务
service keepalived stop
查看备节点ip :ip addr |grep eth0:1
备节点显示正常,浏览器测试:ok
测试2
重新开启主节点 理论:备接节点vip失效,主节点重新接管。
service keepalived start
查看主节点ip 浏览器访问
显示正常。
查看备节点ip
ip显示正常。
Keepalived 主备单实例实验完结。