Nginx是大型架构的必备技能,下面我重点详解Nginx主从架构@mikechen
Nginx主从
Nginx 主从架构并不是 Nginx 官方强制定义的固定模式,而是运维实践中的一种部署思路。
其核心思想是:主节点承担管理与调度职责,从节点承担业务访问职责。

可以将其理解为:
主节点(Master Node):负责配置分发、服务启动/停止、健康管理、状态协调等;
从节点(Worker/Slave Node):负责处理客户端请求,提供实际的代理、缓存、负载均衡等能力。
正常情况下,客户端请求首先进入主Nginx。
当主Nginx发生故障时,通过Keepalived + VIP等机制,将流量自动切换到从Nginx。
Nginx主从架构
整体架构,如下图所示:

用户请求
│
▼
┌─────────────┐
│ VIP │
│ 192.168.1.100│
└──────┬──────┘
│
┌─────────┴─────────┐
│ │
▼ ▼
┌────────────────┐ ┌────────────────┐
│ Nginx Master │ │ Nginx Slave │
│ 192.168.1.101 │ │ 192.168.1.102 │
│ Keepalived │ │ Keepalived │
└───────┬────────┘ └───────┬────────┘
│ │
└──────────┬─────────┘
│
▼
┌─────────────────────┐
│ 后端应用服务器 │
├─────────────────────┤
│ Java / Spring Boot │
│ Tomcat / Docker │
└─────────────────────┘
整个故障切换过程可以分成4步。
第一步:Master正常工作
VIP
│
▼
Master Nginx
│
▼
Backend
Master持有VIP:
192.168.1.100
第二步:Keepalived持续检测
Keepalived会持续检测Master状态。
例如:
Nginx进程是否正常
服务器网络是否正常
服务器是否存活
可以通过脚本检测Nginx:
pidof nginx
如果检测失败,就认为Nginx出现故障。
第三步:Master故障
例如:
Master Nginx
↓
宕机
Keepalived检测到故障后:
Master
↓
故障
↓
释放VIP
第四步:Slave接管VIP
Slave发现Master不可用后:
Slave
↓
成为Master
↓
接管VIP
以上