如何在后端升级期间暂停Nginx请求
我希望Nginx在短时间内暂停(保持)http请求,同时升级或重启后端服务,执行数据库迁移或其他一些管理任务,而不会给最终用户造成错误. 基本上我想做以下操作序列: >告诉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队列. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |