一、介绍
Keepalived软件主要是通过VRRP协议实现**高可用**功能。
VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)是一种网络协议,旨在提供在局域网中实现冗余路由器的机制。它允许多台路由器组成一个虚拟路由器组,并通过从主路由器向备用路由器传递路由信息来保持网络的高可用性。
VRRP协议定义了以下主要概念和工作原理:
1. 虚拟路由器组(VRID):一组路由器被逻辑上组合在一起形成一个虚拟路由器组。每个虚拟路由器组都有一个唯一的虚拟路由器组标识(VRID),用于在局域网中区分不同的虚拟路由器组。
2. 主备选举:在每个虚拟路由器组中,选举出一个主路由器和一个或多个备用路由器。主路由器负责转发网络流量,而备用路由器则监听主路由器的状态,以便在主路由器失效时接管其功能。
3. 虚拟IP地址:虚拟路由器组中的主路由器与备用路由器共享一个虚拟IP地址。对外部主机而言,虚拟IP地址是网络常规路由器的下一跳地址,用于转发流量到底层的实际路由器。
4. 路由器通告:主路由器定期发送路由器通告(Router Advertisement)消息,通知局域网中其他设备自己是当前的活动路由器。备用路由器监听这些消息,以便在主路由器失效时进行接管。
通过使用VRRP协议,网络可以实现冗余路由器,确保即使主路由器发生故障,备用路由器也能够接管并提供连续的网络服务。这对于需要高可用性的网络环境非常重要,例如对关键业务流量进行负载均衡和故障恢复。
VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
Keepalived同时具有配置管理LVS和LVS下节点健康检查的功能
Keepalived软件的官方站点是http://www.keepalived.org
二、高可用功能原理
- 当两台lb主机同时安装好Keepalived软件并启动服务,开始正常工作时:
正常状态:
- 由角色为Master的主机获得所有资源(ip资源)并对用户提供服务;
- 角色为Master节点会不断地向Backup节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着;
- 角色为Backup的主机作为Master主机的热备
Master故障:
- 当角色为Master的主机失效或出现故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master节点的心跳信息了,角色为Backup的主机将自动接管Master主机的所有工作(ip),其中包括接管VIP资源及相应资源服务;
Master恢复:
- 当角色为Master的主机故障修复后,又会自动接管回它原来处理的工作(ip),角色为Backup的主机则同时释放Master主机失效时它接管的工作,此时,两台主机将恢复到最初启动时各自的原始角色及工作状态。
三、安装、配置
yum -y install keepalived
lb01:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
# 主机身份ID标识,主备不一致
router_id lb01
}
# vrrp的配置,实例名-主备一致
vrrp_instance zrlog {
# 实例状态:MASTER,备节点设置BACKUP
state MASTER
# 实例网络接口,主备一致
interface eth0
# 实例身份ID标识,主备一致,且keepalived.conf唯一
virtual_router_id 51
# 优先级,数字大的优先级高
priority 150
# 通信检查时间1s,主备一致
advert_int 1
# 通信认证配置,主备一致
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP,VIP配置在interface指定的网卡上(同网段)
virtual_ipaddress {
10.0.0.6/24
}
}
lb02:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance zrlog {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.6/24
}
}
Master:
Backup:
当主机宕机后:
恢复后:
Master:
Backup: