Keepalived + Nginx 主备容灾方案介绍
*服务器* | *IP地址* | *角色* |
---|---|---|
Srv01 | 192.168.249.100 VIP: 192.168.249.110 | Nginx+Keepalive |
Srv02 | 192.168.249.101 | Nginx+Keepalive |
概述
Keepalived 和 Nginx 的组合是一个常见的高可用性(HA)方案,尤其适用于 Web 服务。通过 Keepalived 实现的虚拟 IP 地址(VIP)在主从服务器之间的切换,可以确保当主服务器(Master)出现故障时,从服务器(Backup)能够迅速接管服务,从而达到业务的高可用性和容灾目的。
方案架构
-
主服务器(Srv01):
- IP 地址:192.168.249.100
- VIP 地址:192.168.249.110
- 角色:Nginx + Keepalived(Master)
-
备服务器(Srv02):
- IP 地址:192.168.249.101
- 角色:Nginx + Keepalived(Backup)
关键组件
-
Nginx
Nginx 作为一个高性能的反向代理服务器,可以处理大量的 HTTP 请求。它在这个架构中负责处理客户端的请求,并将其转发到后端的应用服务器。 -
Keepalived
Keepalived 是一个用于实现高可用性和故障转移的服务。它通过 VRRP(虚拟路由冗余协议)来管理虚拟 IP 地址,并检测主服务器的健康状态。一旦检测到主服务器出现故障,Keepalived 会自动将 VIP 切换到备服务器上。
工作流程
-
正常运行状态:
- 在正常情况下,VIP 地址(192.168.249.110)绑定在主服务器(Srv01)上。
- 客户端请求通过 VIP 地址到达 Srv01,Nginx 处理这些请求。
-
故障切换:
- 如果 Keepalived 检测到 Srv01 不可用(例如由于硬件故障或网络问题),它会自动将 VIP 地址切换到备服务器(Srv02)。
- Srv02 上的 Nginx 接管请求,确保服务不中断。
-
恢复:
- 当 Srv01 恢复正常运行时,Keepalived 可以将 VIP 地址切回 Srv01,或者继续由 Srv02 处理请求,视配置而定。
Nginx 配置
Nginx 的配置通常不会因为 Keepalived 而有所不同,但是你可以配置一个简单的 HTTP 服务来测试高可用性。
测试步骤
- 确保两台服务器上 Nginx 和 Keepalived 均正常启动。
- 通过 VIP 地址(192.168.249.110)访问 Web 服务,确认能够正常访问。
- 模拟主服务器(Srv01)故障,观察 VIP 地址是否切换到备服务器(Srv02),并继续访问 Web 服务,确认服务不中断。
结论
这种主备架构提供了一个简单而有效的高可用性方案,适用于对服务可靠性有较高要求的场景。在实际生产环境中,还可以进一步优化配置,如使用更复杂的健康检查脚本、设置自动恢复策略等。
Server01,Server02前期配置
禁用 SELinux
-
编辑 SELinux 配置文件:
vim /etc/selinux/config
-
找到
SELINUX=enforcing
并将其改为SELINUX=disabled
:SELINUX=disabled
-
保存并退出,然后重启系统以使更改生效:
reboot
清除 iptables 规则
-
清除所有 iptables 规则:
iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -t raw -F iptables -t raw -X