软件开发 --- Keepalived 之初体验
Keepalived
是一个高可用性解决方案,常与 LVS (Linux Virtual Server) 一起使用,用于实现虚拟路由冗余协议 (VRRP),提供高可用性功能。它的主要作用是监控服务节点的状态,在主节点出现故障时将流量切换到备用节点,从而避免单点故障,保证服务的持续可用。
使用场景
- 负载均衡高可用:与 LVS 配合,保证负载均衡器的高可用性。
- 虚拟 IP 高可用:通过 VRRP 实现虚拟 IP 的主备切换。
- 故障检测:监控系统或服务状态,自动切换。
实际应用场景举例
假设我们有两个 LVS 服务器,它们通过 Keepalived
配置成主备模式。我们通过虚拟 IP (VIP) 对外提供服务,Keepalived
会保证即使主节点故障,VIP 也会切换到备节点。
1. 安装 Keepalived
在 CentOS 或 RHEL 上安装 Keepalived:
sudo yum install keepalived
2. 配置 Keepalived
配置文件 keepalived.conf
是 Keepalived 的核心配置文件,它指定了高可用性集群的行为。我们需要在主节点和备节点上分别配置此文件。
2.1 配置 Master 节点(主节点)
在主节点上编辑 keepalived
配置文件 /etc/keepalived/keepalived.conf
,配置 VIP、VRRP、优先级等:
sudo nano /etc/keepalived/keepalived.conf
主节点配置示例:
vrrp_instance VI_1 {
state MASTER # 设置为主节点
interface eth0 # 监听的网络接口
virtual_router_id 51 # 虚拟路由器 ID,确保在同一组中唯一
priority 101 # 优先级,主节点优先级设置较高
advert_int 1 # 广播间隔时间,单位为秒
virtual_ipaddress {
192.168.0.100 # 虚拟 IP,客户端访问的 IP
}
}
在此配置中:
state MASTER
:指定当前节点为主节点。priority 101
:主节点的优先级高,确保它是主节点。virtual_ipaddress
:指定虚拟 IP(VIP),这个 IP 将在主节点和备节点之间切换。
2.2 配置 Backup 节点(备节点)
在备节点上编辑 keepalived
配置文件 /etc/keepalived/keepalived.conf
:
sudo nano /etc/keepalived/keepalived.conf
备节点配置示例:
vrrp_instance VI_1 {
state BACKUP # 设置为备份节点
interface eth0 # 监听的网络接口
virtual_router_id 51 # 虚拟路由器 ID,确保在同一组中唯一
priority 100 # 优先级设置为 100,低于主节点
advert_int 1 # 广播间隔时间
virtual_ipaddress {
192.168.0.100 # 虚拟 IP,主备节点共享的 IP
}
}
在此配置中:
state BACKUP
:指定当前节点为备份节点。priority 100
:备节点的优先级较低,只有在主节点故障时才会变为主节点。
2.3 启动 Keepalived 服务
在主节点和备节点上启动 keepalived
服务:
# 启动 keepalived 服务
sudo systemctl start keepalived
# 设置开机自启动
sudo systemctl enable keepalived
可以通过以下命令检查 keepalived
的状态:
sudo systemctl status keepalived
3. 验证 Keepalived 配置
3.1 查看虚拟 IP 的状态
在主节点上,可以通过以下命令查看 VIP 是否成功绑定:
ip a show dev eth0
如果主节点处于活动状态,应该能够看到 192.168.0.100
被绑定在 eth0
接口上。
3.2 测试故障切换
为了验证高可用性效果,尝试禁用主节点上的 keepalived
或关闭网络接口。此时,VIP 应该会自动切换到备节点。
# 模拟主节点故障
sudo systemctl stop keepalived
此时,备节点会自动接管 VIP,你可以在备节点上执行以下命令验证:
ip a show dev eth0
备节点应该接管了 VIP 地址,表示故障切换成功。
4. 高可用性服务的恢复
当主节点恢复后,keepalived
会自动检测到并将 VIP 恢复到主节点。
# 启动主节点的 keepalived 服务
sudo systemctl start keepalived
主节点重新接管 VIP,恢复为主节点。
5. 结合 LVS 使用
Keepalived 通常与 LVS 配合使用,以实现负载均衡的高可用性。例如,在 LVS 的 Director 节点上配置 VIP 并使用 Keepalived 确保 VIP 在主备节点之间切换。
LVS 配合 Keepalived 的配置示例如下:
- LVS Director 配置为
192.168.0.100
VIP。 - 真实服务器配置
192.168.0.101
、192.168.0.102
等。
总结
Keepalived
的核心功能是通过 VRRP 协议提供虚拟 IP 的高可用性。其主要应用场景包括:
- 主备节点切换:通过优先级判断故障节点并切换 VIP。
- 负载均衡高可用性:配合 LVS 或 HAProxy 等工具,确保负载均衡器的高可用性。
- 故障检测:监控服务或网络故障,自动切换节点。
Keepalived 提供的高可用性和自动故障转移特性非常适合需要高可靠性和持续服务的场景,尤其是在 Web 服务器、数据库和其他业务系统中广泛应用。