Nginx主从详解
【摘要】 Nginx主从详解Nginx主从架构通过冗余备份和故障自动转移机制实现高可用性,结合Keepalived工具管理虚拟IP(VIP),确保服务持续运行。以下是详细解析及案例实践:一、核心原理与价值架构组成主节点(Master)绑定VIP,处理核心流量。从节点(Backup)监控主节点状态,故障时接管VIP。Keepalived基于VRRP协议实现心跳检测、VIP漂移和健康检查。故障转移流程阶段...
Nginx主从详解
Nginx主从架构通过冗余备份和故障自动转移机制实现高可用性,结合Keepalived工具管理虚拟IP(VIP),确保服务持续运行。以下是详细解析及案例实践:
一、核心原理与价值
-
架构组成
- 主节点(Master)
绑定VIP,处理核心流量。 - 从节点(Backup)
监控主节点状态,故障时接管VIP。 - Keepalived
基于VRRP协议实现心跳检测、VIP漂移和健康检查。 -
故障转移流程
- 阶段1(正常)
VIP在主节点,Keepalived广播存活状态。 - 阶段2(主节点故障)
主机宕机、Nginx进程崩溃或网络中断。 - 阶段3(切换)
从节点检测不到心跳→抢占VIP→成为新主节点(耗时1-2秒)。 -
核心价值
- 消除单点故障
主从切换保障服务连续性。 - 无缝体验
用户无感知切换,提升系统可靠性。
二、配置实战(Linux环境)
1. Keepalived主节点配置
vrrp_instance VI_1 {
state MASTER # 角色为主
interface ens33 # 网卡名称(需根据服务器调整)
virtual_router_id 51 # 路由ID(主从需一致)
priority 100 # 优先级(主>从)
advert_int 1 # 心跳间隔
authentication {
auth_type PASS
auth_pass 1111 # 认证密码
}
virtual_ipaddress {
192.168.17.50 # 虚拟IP(VIP)
}
track_script {
chk_nginx # 关联Nginx健康检查脚本
}
}
2. Keepalived从节点配置
vrrp_instance VI_1 {
state BACKUP # 角色为备
priority 90 # 优先级低于主节点
# 其他配置与主节点一致(virtual_router_id、authentication等)
}
3. Nginx健康检查脚本 (/etc/keepalived/nginx_check.sh
)
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ]; then
/usr/local/nginx/sbin/nginx # 尝试重启Nginx
sleep 2
if [ `ps -C nginx --no-header | wc -l` -eq 0 ]; then
killall keepalived # 重启失败则停止Keepalived,触发VIP漂移
fi
fi
关键点:
脚本需赋予执行权限: chmod +x /etc/keepalived/nginx_check.sh
在Keepalived配置中通过 vrrp_script
调用。
:双主模式
通过配置两个VIP,让两台Nginx同时工作(非主备),实现负载分担:
# 节点1配置(第一个VIP为主)
vrrp_instance VI_1 {
state MASTER
virtual_ipaddress { 192.168.10.100 }
}
# 节点2配置(第二个VIP为主)
vrrp_instance VI_2 {
state MASTER
virtual_ipaddress { 192.168.10.200 }
}
优势:
-
资源利用率更高,两台服务器均处理流量。 -
任一节点故障时,另一节点接管全部VIP。
四、案例分析与最佳实践
场景:电商网站高可用架构
- 需求
避免Nginx单点故障导致服务中断。 - 部署:
-
两台服务器(IP: 192.168.17.129/131)安装Nginx+Keepalived。 -
配置VIP为 192.168.17.50
,用户访问该IP而非具体服务器。 -
后端Web服务(如Tomcat)通过Nginx负载均衡( upstream
配置)。 - 故障模拟:
-
关闭主节点Nginx → 脚本检测到进程消失 → 重启Nginx失败 → Keepalived停止 → VIP漂移到从节点 → 服务恢复(2秒内)。
最佳实践:
- 配置一致性
主从节点的Nginx配置需完全同步,避免切换后功能异常。 - 安全加固
关闭防火墙和SELinux(生产环境需按需调整规则): systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config - 日志监控
定期检查Nginx和Keepalived日志,定位潜在问题。
五、主从 vs 双主模式对比
特性 | 主从模式 | 双主模式 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
推荐选择:
追求简单高可用 → 主从模式 追求性能最大化 → 双主模式。
通过上述配置和案例,Nginx主从架构可有效解决单点故障问题。实际部署时,需结合业务流量、服务器资源及运维复杂度综合选择模式。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)