Nginx主从架构详解(图文全面总结)

Nginx是大型架构的必备技能,下面我重点详解Nginx主从架构@mikechen

Nginx主从

Nginx 主从架构并不是 Nginx 官方强制定义的固定模式,而是运维实践中的一种部署思路。

其核心思想是:主节点承担管理与调度职责,从节点承担业务访问职责。

Nginx主从架构详解(图文全面总结)-mikechen

可以将其理解为:

主节点(Master Node):负责配置分发、服务启动/停止、健康管理、状态协调等;

从节点(Worker/Slave Node):负责处理客户端请求,提供实际的代理、缓存、负载均衡等能力。

正常情况下,客户端请求首先进入主Nginx。

当主Nginx发生故障时,通过Keepalived + VIP等机制,将流量自动切换到从Nginx。

 

 

Nginx主从架构

整体架构,如下图所示:

Nginx主从架构详解(图文全面总结)-mikechen

               用户请求
                   │
                   ▼
            ┌─────────────┐
            │     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

以上

评论交流
    说说你的看法