keepalived高可用
keepalived
Keepalived是一个开源的路由软件,主要用于提供高可用性(HA)解决方案,通过VRRP(Virtual Router Redundancy Protocol)协议实现负载均衡和故障转移。
- 高可用(HA):Keepalived通过VRRP协议实现高可用性,允许一组路由器(或服务器)共享一个虚拟IP地址(VIP)。当主服务器(Master)故障时,备用服务器(Backup)可以自动接管这个VIP,确保服务不中断。
- VRRP:VRRP是一种网络协议,设计用于在多台路由器之间实现冗余。Keepalived利用VRRP来检测和管理服务器或路由器的健康状态。
- Keepalived提供健康检查机制,可以监控服务或服务器的健康状态。如果检测到故障,它可以自动进行故障转移,确保服务的高可用性。
- 故障转移:当主服务器检测到故障或停止响应时,Keepalived会自动将VIP转移到备用服务器,从而实现无缝的服务转移。
- 自定义脚本执行:支持在状态变更时执行自定义脚本,进行特定的操作,如通知管理员、启动或停止服务等。
VRRP相关概念以及工作原理
概念
虚拟路由器冗余协议(VRRP):VRRP是一种网络协议,设计用于在多台路由器或服务器之间提供冗余,以提高网络的可靠性和可用性。
虚拟IP(VIP):VIP是一个共享的IP地址,被配置在VRRP组内的所有路由器或服务器上。客户端使用这个VIP来访问服务,而不直接访问具体的物理设备。
VRRP组:一个VRRP组由一个或多个路由器组成,其中一个被选为主路由器(Master),其余为备用路由器(Backup)。
Master路由器:在VRRP组中,优先级最高的路由器或被指定为Master,它负责处理流量和响应ARP请求。
Backup路由器:如果Master路由器发生故障,Backup路由器中优先级最高的会接管成为新的Master。
工作原理
- 选举:
- VRRP通过选举机制确定Master。选举基于以下几个因素:
- 优先级:每个VRRP实例都有一个优先级,优先级高的路由器被选为Master。
- IP地址:如果优先级相同,则选择拥有最高IP地址的路由器为Master。
- VRRP通告(Advertisement):Master路由器会定期发送VRRP通告信息(VRRP Advertisement),告知其他备用路由器自己是活跃的。
- 故障转移:
- 当Master路由器停止发送VRRP通告(可能是由于故障或网络问题),Backup路由器会检测到此情况并启动选举过程:备用路由器等待一个预设的间隔(Master Down Interval)后,如果没有收到通告,则认为Master已下线。优先级最高的备用路由器将接管Master角色,接管VIP,并开始处理流量。
- VRRP报文:
- VRRP使用组播地址224.0.0.18发送VRRP报文,包括:
- VRRP Advertisement:由Master发送,用于告知状态。
- VRRP Request:由新加入的或重启的路由器发送,用于请求当前的VRRP状态。
- VRRP使用组播地址224.0.0.18发送VRRP报文,包括:
- 认证:
- VRRP支持简单的密码认证(如使用auth_type PASS),以防止非法节点加入VRRP组。
- 负载均衡:
- VRRP本身不提供负载均衡,但可以与LVS(Linux Virtual Server)等负载均衡技术结合使用。
keepalived工作模式
- 抢占模式:keepalived默认为抢占模式,在该模式下,如果一个优先级更高的备用节点(BACKUP)启动或者恢复,它会立即接管master
- 非抢占模式:在非抢占模式下,即使一个优先级更高的备用节点启动或恢复,它也不会主动接管Master角色,除非当前的Master节点出现故障。通过在VRRP实例配置中添加
nopreempt
选项来启用非抢占模式。
keepalived相关命令
1 | 启动停止重启服务 |
启动keepalived后可以抓包查看多播信息
1 | ]tcpdump -i ens160 -nn|grep 224.0.0.18 |
配置文件实例
keepalived配置文件为/etc/keepalived/keepalived.conf
1 | # Keepalived配置文件示例 |