Nginx 负载均衡:如何让主服务器也加入“996”?

在这个故事里,我们有一台主服务器(代号:A,IP: 192.168.5.149),它平时就像个包工头,只负责把活儿(流量)分配给下面的苦力服务器(代号:B 和 C)。
但老板觉得 A 太闲了,不仅拿高薪(主服务器待遇),还只动嘴不动手。于是,我们决定让 A 也加入搬砖行列,还要防止它陷入“自己给自己派活”的死循环。


🛠️ 第一幕:人员配置(别搞混了!)

为了让大家看懂这场“服务器宫斗剧”,先认认人:

  • 包工头 A:192.168.5.149(原本只负责指挥,现在要被迫营业)
  • 打工人 B:192.168.5.27
  • 打工人 C:192.168.5.126
  • 测试域名:a.com(这就是客户找上门的门牌号)

剧情设定:客户(浏览器)只认门牌号 a.com,直接找 A。A 以前的做法是:自己躲清闲,把活全推给 B 和 C。

💻 第二幕:基础配置(包工头的诞生)

首先,我们要把 A 配置成一个合格的包工头。

**在主服务器 A 的 ***conf.d*** 文件夹里,新建 **master.conf**:**

# 定义一个叫 a.com 的"搬砖小分队"
upstream a.com {
    server 192.168.5.126:80; # 叫上 C
    server 192.168.5.27:80;  # 叫上 B
}

# 监听80端口,等待客户上门
server {
    listen 80;
    server_name a.com;

    location / {
        proxy_pass http://a.com; # 客户来了?转手!扔给搬砖小分队!
        proxy_set_header host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

在 B 和 C 服务器上,随便写个 index.html,内容搞点区别(比如 B 写“我是B,好累”,C 写“我是C,想辞职”),方便后面看效果。

重启 Nginx!
这时候访问 a.com,你会发现刷新一下,页面在 B 和 C 之间跳来跳去。A 依然在旁边嗑瓜子。

🤔 第三幕:灵魂拷问(A 也要干活!)

Q: 如果 B 或 C 罢工(宕机)了怎么办?
A: 别担心,Nginx 很聪明,发现谁没响应,下次就不派活给它了。这就是高可用,简称“优胜劣汰”。

Q: 既然 B 和 C 都在干活,为什么 A 这个包工头不能闲着?能不能让它也加入?
A: 当然可以! 但这里有个坑,千万别跳。

⚠️ 第四幕:避坑指南(死循环警告!)

如果你直接把 A 加进名单里,会发生什么?

场景模拟:
客户访问 A:80 -> A 一看,自己也在名单里,于是把活转给 A:80 -> A 又接到活,又转给 A:80 -> …

结果:服务器当场精神分裂(死循环),直到崩掉。

怎么解决?
分身术! 让 A 换个马甲(端口)去干活。

**在主服务器 A 上,修改 ****nginx.conf**,加一段:

server {
    listen 8080;          # 换个端口,比如8080,这是A的"打工专用通道"
    server_name a.com;
    index index.html;
    root /data0/htdocs/www; # 这里放A自己的网站内容
}

重启 Nginx。
现在,A 有了双重身份:

  1. 身份一:A:80(包工头,负责指挥)。
  2. 身份二:A:8080(打工人,负责搬砖)。

🎉 第五幕:最终配置(全员恶人…全员打工!)

现在,我们可以把 A 的“打工身份”加进名单了。

**修改 ***master.conf*** 中的 upstream 部分:**

upstream a.com {
    server 192.168.5.126:80; # B 继续搬
    server 192.168.5.27:80;  # C 继续搬
    server 127.0.0.1:8080;  # A 也别闲着,加进来!(用127.0.0.1或本机IP都可以)
}

再次重启 Nginx!

大结局:
现在访问 a.com,你会发现 A、B、C 都在轮流干活。A 再也不能偷懒了,资源利用率瞬间拉满!


📝 剧终总结

  • 不浪费:主服务器不再只做转发,也参与服务,性价比拉满。
  • 高可用:谁宕机了 Nginx 自动剔除,客户根本感觉不到(社畜倒下了,还有别人顶上)。
  • 安全:域名只解析到主服务器 A,真正的 B 和 C 的 IP 被藏在内网,黑客想直接攻击 B 和 C?门都没有!

本剧终,感谢观看!

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 共8条

请登录后发表评论

    暂无评论内容