【问题标题】:NGINX load balancer and deploymentsNGINX 负载均衡器和部署
【发布时间】:2017-03-22 13:51:12
【问题描述】:

我的网站依赖于服务器关联。我的设置有 2 个节点(A 和 B)服务客户端请求。

在部署之前,我希望 NGINX 负载均衡器停止向节点 B 发送新请求,但所有已经与节点 B 有关联的请求都应该发送到节点 B。

NGINX 可以做到这一点吗?

【问题讨论】:

    标签: nginx


    【解决方案1】:

    就像@mikhailov 在 cmets 中告诉我的那样,当前请求将完成,尽管服务器已从配置中删除。 所以这里是战术:

    • 从配置中删除服务器(将被部署)
    • 重新加载 nginx 配置

    部署完成后:

    • 再次将服务器添加到配置中
    • 重新加载 nginx 配置

    【讨论】:

    • 内置 ip_hash 提供会话持久性nginx.org/en/docs/http/…
    • 感谢克里斯托弗您的回复。在服务器 B 上具有活动会话的用户需要先完成他们的事务,然后我才能将其从负载均衡器中删除,因此需要将所有新请求重定向到服务器 A。我将尝试第一个选项。
    • 告诉我们,如果它按预期工作,那么! @mikhailov:是的,但在这种情况下,他不想与所有服务器共享会话,而是让所有用户在禁用 serverB 之前先完成他们的请求。但尽管如此,我认为共享会话总是一件好事。
    • 同一请求/响应周期内的事务将由同一上游完成。如果失败请求重定向到另一个上游没有任何问题。 Nginx 努力避免响应失败,见证明链接:youtu.be/yQvcHy_tPjI
    • @ChristopherMäuer 这可以通过更新配置来完成(暂时排除 ServerB)并发送 HUP 信号以加载新配置。当前请求将正常完成。
    【解决方案2】:

    您可以使用server "someserverip" down; 我们就是这样做的,而且效果很好!它允许当前请求完成,然后将所有新请求发送到其他服务器。然后部署到该服务器并删除“down”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      相关资源
      最近更新 更多