利用Keepalived实现NGINX PLUS的HA部署
IDC服务
利用Keepalived实现NGINX PLUS的HA部署
2025-03-22 00:09
✨ 基于Keepalived的Nginx Plus高可用部署指南 通过Keepalived实现Nginx Plus的双机热备(Active-Standby),可有效避免单点故障,确保业务连续性。本教程将详解配置逻辑、关键参数及验证方法,适用于生产环境。
✨ 基于Keepalived的Nginx Plus高可用部署指南
通过Keepalived实现Nginx Plus的双机热备(Active-Standby),可有效避免单点故障,确保业务连续性。本教程将详解配置逻辑、关键参数及验证方法,适用于生产环境。
? 部署架构与核心原理
1. 基础架构图
+-------------+
| 虚拟IP (VIP)|
+------+------+
|
+--------------+--------------+
| |
+-------+-------+ +-------+-------+
| 主节点 | | 备用节点 |
| Nginx Plus | | Nginx Plus |
| Keepalived | | Keepalived |
+---------------+ +---------------+
2. 核心组件说明
- Keepalived:通过VRRP协议管理虚拟IP(VIP)漂移,实现故障切换。
- Nginx Plus:提供健康检查API接口,支持主动状态监控。
- VRRP协议:主备节点通过组播通信,优先级高的节点获得VIP控制权。
?️ 配置步骤详解
步骤1:环境准备
-
节点规划:
- 主节点:IP 192.168.1.10,优先级100
- 备节点:IP 192.168.1.11,优先级90
- 虚拟IP(VIP):192.168.1.100
-
依赖安装:
# CentOS/RHEL sudo yum install keepalived # Ubuntu/Debian sudo apt install keepalived
步骤2:配置Keepalived主节点
创建配置文件 /etc/keepalived/keepalived.conf
:
global_defs {
router_id nginx_ha_master # 唯一标识,建议按节点命名
}
vrrp_script chk_nginx {
script "/usr/bin/killall -0 nginx" # 检测Nginx进程是否存在
interval 2 # 每2秒执行一次检测
weight -20 # 检测失败时降低优先级20
}
vrrp_instance VI_1 {
state MASTER # 初始状态为主节点
interface eth0 # 绑定VIP的网络接口
virtual_router_id 51 # 虚拟路由ID,主备节点必须相同(1-255)
priority 100 # 初始优先级(主>备)
authentication { # 认证配置
auth_type PASS
auth_pass 1234 # 密码需主备一致
}
virtual_ipaddress {
192.168.1.100/24 # 虚拟IP及子网掩码
}
track_script {
chk_nginx # 关联健康检查脚本
}
}
步骤3:配置Keepalived备节点
备节点配置与主节点仅需修改两处:
vrrp_instance VI_1 {
state BACKUP # 初始状态为备节点
priority 90 # 优先级低于主节点
# 其他参数与主节点一致
}
步骤4:启动服务并验证
sudo systemctl enable keepalived # 设置开机启动
sudo systemctl start keepalived # 立即启动服务
# 检查VIP绑定状态
ip addr show eth0 | grep "inet 192.168.1.100"
? 关键配置参数解析表
参数 | 作用 | 注意事项 |
---|---|---|
state |
初始角色(MASTER/BACKUP) | 主备节点必须明确区分 |
virtual_router_id |
虚拟路由组标识(1-255) | 同一组主备必须相同 |
priority |
节点优先级(1-254) | 主节点需高于备节点 |
interval |
健康检查执行频率(秒) | 过短增加系统负载,过长延迟故障检测 |
weight |
健康检查失败时优先级调整值 | 负值表示降级,确保备节点能接管 |
? 高可用性验证与故障模拟
1. 主节点故障测试
# 在主节点停止Keepalived服务
sudo systemctl stop keepalived
# 在备节点检查VIP是否接管
ip addr show eth0 | grep "inet 192.168.1.100" # 应显示VIP
2. Nginx进程崩溃测试
# 在主节点强制终止Nginx
sudo pkill -9 nginx
# Keepalived将触发优先级降级,VIP漂移至备节点
⚠️ 生产环境注意事项
1. 避免脑裂(Split-Brain)
- 预防措施:
- 使用多播检测或第三方仲裁服务(如基于ICMP的监控)。
- 配置
nopreempt
禁止备节点主动抢占VIP(需主节点恢复后手动切换)。
2. 防火墙配置
确保VRRP协议通信(IP协议号112)和组播地址 224.0.0.18
开放:
# CentOS firewalld
sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
sudo firewall-cmd --reload
# Ubuntu UFW
sudo ufw allow proto vrrp
3. 日志与监控
启用Keepalived详细日志:
# 修改/etc/keepalived/keepalived.conf
global_defs {
log_local 7 # 日志级别0-7(7为最详细)
}
? 总结
通过Keepalived实现Nginx Plus高可用需关注:VRRP配置同步、健康检查机制、优先级策略。关键参数state、priority、virtual_router_id需严格匹配,结合防火墙与监控可构建稳定HA环境。建议定期模拟故障,验证切换流程可靠性。?
掌握本教程内容后,可快速构建企业级高可用Web服务集群!
标签:
- Keepalived
- NGINX