高可用负载架构:Nginx+Keepalived 双机热备架构!

在金融、电商、支付等对可用性要求极高的场景下,就会涉及到高可用,比如:使用 Nginx + Keepalived 实现主备热切切换@mikechen

高可用架构

Nginx+Keepalived 双机热备负载均衡是一种成熟/且可靠的高可用架构,尤其适用于对系统可用性要求高的场景。

整体架构,如下图所示:

高可用负载架构:Nginx+Keepalived 双机热备架构!-mikechen

Nginx在每台服务器上部署 Nginx,作为反向代理、和负载均衡器。

Keepalived:在每台服务器上部署 Keepalived,用于实现虚拟 IP(VIP)的漂移、和健康检查。

虚拟 IP (VIP),对外提供服务的统一入口 IP 地址,VIP 在主服务器上绑定并对外提供服务。

当主服务器故障时,VIP 会自动漂移到备用服务器上,客户端无需更改任何配置即可继续访问服务。

+-------------+          +-------------+
| Nginx 主节点 |  <====>  | Nginx 备节点 |
+-------------+          +-------------+
       |                         |
       |                         |
    [Keepalived 高可用漂移 IP: VIP]
       |
       V
     后端服务集群(Tomcat/Java/Golang)

 

 

高可用工作原理

整体配置,如下:

+-------------+          +-------------+
| Nginx 主节点 |  <====>  | Nginx 备节点 |
+-------------+          +-------------+
       |                         |
       |                         |
    [Keepalived 高可用漂移 IP: VIP]
       |
       V
     后端服务集群(Tomcat/Java/Golang)

Nginx A (Master)

运行 Nginx:作为主Web服务器,处理客户端请求。

运行 Keepalived:负责管理虚拟IP(VIP 192.168.1.10),并通过VRRP协议与备份服务器通信。

默认状态:主动持有VIP,对外提供服务。

Nginx B (Backup)

运行 Nginx:作为备用Web服务器,配置与主服务器相同。

运行 Keepalived:监听主服务器状态,准备接管VIP。

默认状态:待命,不持有VIP。

虚拟IP (VIP: 192.168.1.10)

客户端通过该IP访问服务,实际流量由当前主服务器处理。

Keepalived确保,VIP始终绑定在可用的服务器上。

客户端 (Client)

始终访问VIP,无需感知后端服务器的切换。

高可用负载架构:Nginx+Keepalived 双机热备架构!-mikechen

 

工作原理

主服务器(NginxA)持有VIP,处理所有请求。

Keepalived通过VRRP协议定期发送心跳包,备份服务器(NginxB)监听主服务器状态。

主服务器故障

备份服务器检测到主服务器心跳丢失,比如:Nginx崩溃或网络中断…等等。

备份服务器立即接管VIP,成为新的主服务器,客户端流量无缝切换至NginxB。

主服务器恢复

若原主服务器恢复,根据配置可自动或手动切换回主从状态(抢占或非抢占模式)。

通过 Nginx + Keepalived 双机热备架构,可以实现高可用负载均衡。

主节点故障时,备节点通过 VIP 快速接管,这种设计简单高效,非常适合对稳定性和性能要求极高的场景。

评论交流
    说说你的看法