如何在后端升级期间暂停Nginx请求

前端之家收集整理的这篇文章主要介绍了如何在后端升级期间暂停Nginx请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我希望Nginx在短时间内暂停(保持)http请求,同时升级或重启后端服务,执行数据库迁移或其他一些管理任务,而不会给最终用户造成错误.

基本上我想做以下操作序列:

>告诉Nginx停止向我的后端转发请求,而不是将它们保存在异步队列中;
>等待并在完成对后端的所有待处理请求时得到通知;
>升级,重启或以其他方式操作空闲后端服务;
>使用其私人地址快速验证后端服务是否正常运行;
>打开Nginx的洪水门,让所有待处理的请求通过.

理想情况下,这将允许我执行需要独占访问整个后端服务器的管理任务,例如重新启动,升级或迁移,而不会导致最终用户比延迟更严重,希望不到一分钟.

我找到了this solution,但它没有解决第2点.此外,它需要编译成Nginx的Lua解释器,任何内存泄漏和可能暗示的安全问题.

是否有任何配置技巧或Nginx模块专门针对此问题?是否可以通过测试控制文件的存在来完成Nginx库存?

其他管理员如何解决这个问题?

(我知道全功能和有点庞大的uWSGI application server在其他数百个版本中都有这个功能,但我宁愿避免在Nginx和我的后端之间引入另一个元素.)

最佳答案
您可以配置Nginx来执行脚本,以便通过在502 BAD GATEWAY和/或503 SERVICE UNAVAILABLE上使用错误处理来按摩并将http调用传递给某些队列进程,例如beanstalkd. (当您的后端服务不可用时出错).

然后,在后端升级之后,弹出beanstalkd的reqs,并将它们处理到您的后端服务.

此外,如果您的后端服务无意中发生故障,这可能会成为HA解决方案的两倍,以免丢失API呼叫.设置jenkins / cron以自动检查和处理任何beanstalk队列.

原文链接:https://www.f2er.com/nginx/435660.html

猜你在找的Nginx相关文章