首页 区块链

告别 996:基于 Nginx 的高可用架构实战与避坑指南(打工人日报#20250930)

分类:区块链
字数: (0940)
阅读: (5599)
内容摘要:告别 996:基于 Nginx 的高可用架构实战与避坑指南(打工人日报#20250930),

每天早上醒来,最怕的就是收到监控报警短信,线上服务挂了,等着打工人去救火。尤其是在流量高峰期,单个节点的故障很容易导致服务雪崩。今天,我们来聊聊如何利用 Nginx 搭建高可用架构,避免类似打工人日报#20250930 中描述的悲剧重演,让大家也能稍微喘口气。

Nginx 高可用架构原理深度剖析

反向代理与负载均衡

Nginx 的核心功能之一就是反向代理,它可以将客户端的请求转发到后端的多个服务器上。而负载均衡则是在反向代理的基础上,将流量均匀地分配到不同的后端服务器,从而提高整体的吞吐量和可用性。常见的负载均衡算法包括轮询、加权轮询、IP Hash 等。

健康检查机制

仅仅做负载均衡是不够的,我们需要确保后端服务器是健康的。Nginx 提供了健康检查机制,定期探测后端服务器的状态,如果发现服务器不可用,则将其从负载均衡列表中移除,避免将流量转发到故障节点。当服务器恢复正常后,Nginx 会自动将其重新加入负载均衡列表。

告别 996:基于 Nginx 的高可用架构实战与避坑指南(打工人日报#20250930)

Keepalived 与虚拟 IP

为了实现 Nginx 本身的高可用,我们可以使用 Keepalived。Keepalived 基于 VRRP 协议,可以实现多个 Nginx 节点之间的故障转移。通过配置虚拟 IP (VIP),当主 Nginx 节点宕机时,Keepalived 会自动将 VIP 切换到备用节点,从而保证服务的连续性。

实战:基于 Nginx 和 Keepalived 搭建高可用 Web 服务

1. Nginx 安装与配置

首先,在两台服务器上安装 Nginx。以 CentOS 为例:

告别 996:基于 Nginx 的高可用架构实战与避坑指南(打工人日报#20250930)
yum install -y nginx

然后,配置 Nginx 的反向代理和负载均衡。例如,将请求转发到两个后端的 Tomcat 服务器:

http {
    upstream backend {
        server 192.168.1.101:8080 weight=5; # Tomcat 服务器 1
        server 192.168.1.102:8080 weight=5; # Tomcat 服务器 2
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend; # 转发到后端 upstream
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

2. Keepalived 安装与配置

在两台服务器上安装 Keepalived:

告别 996:基于 Nginx 的高可用架构实战与避坑指南(打工人日报#20250930)
yum install -y keepalived

配置主 Nginx 节点(192.168.1.110):

vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 健康检查脚本
  interval 2 # 间隔时间,单位秒
  weight -20 # 权重,如果脚本返回错误,则降低权重
}

vrrp_instance VI_1 {
  state MASTER # 初始状态为主节点
  interface eth0 # 网络接口
  virtual_router_id 51 # VRRP 路由 ID,需要保持一致
  priority 100 # 优先级,主节点优先级较高
  advert_int 1 # 广播间隔,单位秒
  authentication {
    auth_type PASS
    auth_pass 1111 # 认证密码
  }
  virtual_ipaddress {
    192.168.1.100 # 虚拟 IP
  }
  track_script {
    chk_nginx # 引用健康检查脚本
  }
}

配置备 Nginx 节点(192.168.1.111):

告别 996:基于 Nginx 的高可用架构实战与避坑指南(打工人日报#20250930)
vrrp_script chk_nginx {
  script "/etc/keepalived/check_nginx.sh" # 健康检查脚本
  interval 2 # 间隔时间,单位秒
  weight -20 # 权重,如果脚本返回错误,则降低权重
}

vrrp_instance VI_1 {
  state BACKUP # 初始状态为备节点
  interface eth0 # 网络接口
  virtual_router_id 51 # VRRP 路由 ID,需要保持一致
  priority 90 # 优先级,备节点优先级较低
  advert_int 1 # 广播间隔,单位秒
  authentication {
    auth_type PASS
    auth_pass 1111 # 认证密码
  }
  virtual_ipaddress {
    192.168.1.100 # 虚拟 IP
  }
  track_script {
    chk_nginx # 引用健康检查脚本
  }
}

创建健康检查脚本 /etc/keepalived/check_nginx.sh

#!/bin/bash

nginx_pid=`pidof nginx`
if [ -z "$nginx_pid" ]; then
  exit 1
else
  exit 0
fi

3. 启动服务

分别启动 Nginx 和 Keepalived 服务:

systemctl start nginx
systemctl start keepalived

实战避坑经验总结

  1. 防火墙配置:确保服务器的防火墙允许 Nginx 和 Keepalived 的流量通过,否则可能会导致服务不可用。
  2. 健康检查脚本:健康检查脚本需要足够健壮,能够准确判断 Nginx 的状态。避免误判导致频繁的故障转移。
  3. 会话保持:如果后端服务需要会话保持,可以考虑使用 Nginx 的 IP Hash 负载均衡算法,或者使用 Redis 等外部存储来共享会话。
  4. 日志监控:配置 Nginx 的日志,并使用 ELK 等工具进行监控,以便及时发现和解决问题。
  5. 性能优化:根据实际情况调整 Nginx 的 worker 进程数、连接超时时间等参数,以提高性能。宝塔面板是一个方便的可视化管理工具,可以简化 Nginx 的配置和管理。

通过以上方法,我们就可以搭建一个高可用的 Web 服务,降低服务宕机的风险,减少打工人的焦虑。希望这些经验能够帮助大家更好地应对线上问题。

告别 996:基于 Nginx 的高可用架构实战与避坑指南(打工人日报#20250930)

转载请注明出处: 代码一只喵

本文的链接地址: http://m.acea2.store/blog/728656.SHTML

本文最后 发布于2026-03-30 21:52:39,已经过了28天没有更新,若内容或图片 失效,请留言反馈

()
您可能对以下文章感兴趣
评论
  • 佛系青年 6 天前
    配置虚拟 IP 的时候一定要注意网段,之前配错了导致一直不通。
  • 芝麻糊 3 天前
    配置虚拟 IP 的时候一定要注意网段,之前配错了导致一直不通。
  • 扬州炒饭 6 天前
    学习了,最近也在研究 Nginx 的高可用,这篇文章很有帮助!