nginx 反向代理设置用于处理上游服务器的正常部署

nginx 反向代理设置用于处理上游服务器的正常部署

我当前的设置是 nginx 作为负载均衡器,位于一堆上游服务器的前面。

我希望能够在不改变用户体验的情况下进行部署。这意味着不会出现 502 错误,也不会增加页面时间。

我的理解是,当nginx -s reload发出时,nginx 将正常生成新线程来处理新配置的新连接,但仍将完成处理重新加载时正在进行的请求。此外,我曾在某处读到,将上游标记为上游块down并重新加载将使上游脱离轮换,但仍将完成与其进行的任何正在进行的连接。

以上内容全部正确吗?

当前的计划是在 nginx 主机中运行一个小进程,该进程基本上会改变 nginx 配置,并在通过内部 REST API 要求时发出这些优雅的重新加载。

然后,在每个上游的正常关闭和启动/预热完成后,我的部署工具将连接该进程并按顺序从 nginx 配置中添加/删除我的上游。

这有意义吗?其他人是怎么做的?有没有现成的工具可以实现这一点?

我搜索这方面的信息时运气不太好......

答案1

是的,您的想法是正确的,nginx 在重新加载时会继续处理当前请求,并会使用新的配置开始处理新请求。

http://nginx.org/en/docs/beginners_guide.html#control

旧工作进程收到关闭命令后,将停止接受新连接并继续处理当前请求,直到处理完所有请求。 此后,旧工作进程退出。

将上游标记为与down将其从配置中删除没有太大区别。在这两种情况下,它都不会接受新请求。

我们经常重新加载 nginx 配置(使用 coghttps://nedbatchelder.com/code/cog/)并且就代理而言,它不会导致任何停机,因为上游位置。只要上游本身已准备好处理请求,就不会出现停机。

相关内容