Nginx如何做主从高可用?

Nginx高可用

Nginx 通常处在流量入口层,一旦单机故障,后端再稳也没意义。

Nginx如何做主从高可用?-mikechen

单点 Nginx 的典型风险:

机器宕机;

进程异常退出;

网络抖动;

人为误操作(reload / 发布);

所以,只要 Nginx 对外提供服务,就必须考虑高可用。

 

Nginx如何做架构可用

Nginx 本身,不带高可用机制,最常见、最成熟的生产级做法是结合 Keepalived 实现主从热备(Active-Passive)。

通过 VRRP 协议,让一台服务器持有虚拟 IP(VIP)。

主节点宕机/ Nginx 进程异常时,VIP 自动漂移到从节点,切换时间通常在 1-3 秒 内,基本无感知。

Nginx如何做主从高可用?-mikechen

用户请求
   ↓
  VIP (例如 10.0.0.100:80/443)  ← 漂移的虚拟 IP
   ↓
┌───────────────┐
│ 主 Nginx (Master) │  ← 优先级高,持有 VIP
│ IP: 10.0.0.11    │
└───────┬───────┘
        │
   ┌────┴────┐
   │         │
┌──┴──┐   ┌──┴──┐
│ 从 Nginx (Backup)│  ← 优先级低,VIP 漂移过来后接管
│ IP: 10.0.0.12    │
└──────────────────┘
        ↓
   后端服务集群(Tomcat/Go/Node/PHP 等)

主从(Active-Passive):一台 Nginx 为主节点对外提供服务,另一台为备节点处于热备状态。

主节点故障时由备节点接管,适用于对会话粘性或共享状态敏感的场景。

心跳与漂移 IP(Floating IP),使用 keepalived(基于 VRRP)或类似方案。

在主节点发生故障时,将虚拟 IP 自动漂移到备节点,外部无感知地完成切换。

mikechen睿哥

10年+一线大厂架构实战经验,操盘多个亿级大厂核心项目,就职于阿里、淘宝等一线大厂。

评论交流
    说说你的看法