NGINX负载平衡器和部署

NGINX负载平衡器和部署,nginx,Nginx,我的网站依赖于服务器亲和力。我的设置有2个节点(A和B)为客户端请求提供服务 在部署之前,我希望NGINX负载平衡器停止向节点B发送新请求,但是所有已经与节点B有关联的请求都应该发送到节点B NGINX是否可以实现这一点?就像@mikhailov在评论中告诉我的那样,当前请求将完成,尽管服务器已从配置中删除。 以下是策略: 从配置中删除服务器(将在部署中) 重新加载nginx配置 部署完成后: 再次将服务器添加到配置中 重新加载nginx配置 您可以使用服务器“someserverip”关

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

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


NGINX是否可以实现这一点?

就像@mikhailov在评论中告诉我的那样,当前请求将完成,尽管服务器已从配置中删除。 以下是策略:

  • 从配置中删除服务器(将在部署中)
  • 重新加载nginx配置
部署完成后:

  • 再次将服务器添加到配置中
  • 重新加载nginx配置
您可以使用
服务器“someserverip”关闭

我们就是这样做的,效果很好!它允许当前请求完成,然后所有新请求转到其他服务器。然后部署到该服务器并删除“down”。

内置ip_哈希为您的响应提供了比Christopher更持久的会话。在服务器B上具有活动会话的用户需要完成其事务,然后我才能将其从负载平衡器中删除,因此需要将所有新请求重定向到服务器A。我将尝试第1个选项。请告诉我们,如果它按预期工作,那么@米哈伊洛夫:是的,但在这种情况下,他不想与所有服务器共享会话,而是让所有用户在禁用serverB之前先完成请求。不过,我认为共享会话总是一件好事。同一请求/响应周期内的事务将由同一上游完成。在失败的情况下,请求重定向到另一个上游而没有任何问题。Nginx努力避免响应失败,请参阅证明链接:@ChristopherMäuer这可以通过更新配置(暂时排除ServerB)并发送HUP信号来加载新配置来完成。当前请求将优雅地完成。