keepalived的配置
以下是 Keepalived 的配置指南,用于实现高可用(HA)和故障切换。以下以主备模式(Master-Backup)为例:
1. 安装 Keepalived
在 Ubuntu/Debian 或 CentOS/RHEL 上安装:
# Ubuntu/Debian
sudo apt update && sudo apt install keepalived -y
# CentOS/RHEL
sudo yum install keepalived -y
2. 配置文件路径
主配置文件和默认路径:
- Ubuntu/Debian:
/etc/keepalived/keepalived.conf
- CentOS/RHEL:
/etc/keepalived/keepalived.conf
3. 主节点(Master)配置示例
编辑配置文件 /etc/keepalived/keepalived.conf
:
(假设虚拟IP为 192.168.1.100
,网卡为 ens33
)
vrrp_instance VI_1 {state MASTER # 角色:主节点interface ens33 # 绑定网卡名称(需实际修改)virtual_router_id 51 # 虚拟路由ID(范围1-255,主备需一致)priority 100 # 优先级(主节点 > 备份节点)advert_int 1 # 主备心跳间隔(秒)authentication {auth_type PASS # 认证类型auth_pass 123456 # 密码(主备需一致)}virtual_ipaddress {192.168.1.100 # 虚拟IP(VIP),可配置多个}
}
# 可选:配置健康检查(例如检查 Nginx 是否存活)
virtual_server 192.168.1.100 80 {delay_loop 6 # 检查间隔(秒)lb_algo rr # 负载均衡算法(如 round-robin)lb_kind NAT # 负载均衡模式persistence_timeout 50 # 会话保持时间protocol TCP # 协议类型real_server 192.168.1.10 80 { # 真实服务器IP和端口weight 1TCP_CHECK {connect_timeout 3 # 连接超时时间nb_get_retry 3 # 重试次数delay_before_retry 3 # 重试间隔}}
}
4. 备份节点(Backup)配置示例
vrrp_instance VI_1 {state BACKUP # 角色:备份节点interface ens33 # 网卡名称(需与主节点一致)virtual_router_id 51 # 必须与主节点一致priority 99 # 优先级低于主节点advert_int 1authentication {auth_type PASSauth_pass 123456 # 密码与主节点一致}virtual_ipaddress {192.168.1.100 # 同一个虚拟IP}
}
# 健康检查配置需与主节点相同
5. 启动 Keepalived 服务
sudo systemctl start keepalived # 启动服务
sudo systemctl enable keepalived # 设置开机自启
6. 验证配置
检查虚拟IP是否生效:
ip addr show ens33 | grep "192.168.1.100"
输出应包含虚拟IP
192.168.1.100
。模拟主节点故障:
- 停止主节点的 Keepalived 服务:
sudo systemctl stop keepalived
- 在备份节点检查是否接管虚拟IP。
- 停止主节点的 Keepalived 服务:
7. 防火墙配置
开放 VRRP 协议(112端口)和业务端口:
# 允许 VRRP 协议
sudo iptables -A INPUT -p vrrp -j ACCEPT# 允许业务端口(如HTTP 80)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT# 持久化规则(Ubuntu/Debian)
sudo netfilter-persistent save
8. 日志排查
查看 Keepalived 日志:
# Ubuntu/Debian
tail -f /var/log/syslog | grep keepalived# CentOS/RHEL
journalctl -u keepalived -f
9. 完整配置示例
global_defs {notification_email {admin@example.com # 故障通知邮箱(可选)}notification_email_from keepalived@example.comsmtp_server 127.0.0.1 # SMTP服务器地址smtp_connect_timeout 30router_id LVS_DEVEL # 唯一标识符(如主机名)
}
vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.1.100/24 dev ens33 # 指定子网和网卡}
}
10. 注意事项
- 虚拟路由ID唯一性:同一局域网内不同 VRRP 组的
virtual_router_id
必须不同。 - 网络连通性:主备节点必须在同一子网。
- 优先级策略:故障恢复后,主节点应自动抢占(默认行为)。
- 多 VIP 支持:在
virtual_ipaddress
块中添加多个 IP。
若有具体需求(如双主模式、多业务VIP),可进一步优化配置!