tre*_*der 6 python deployment web-applications
我想我并不完全了解部署过程.这就是我所知道的:
imp.reload 是一个坏主意,我们应该重新启动应用程序,而不是重新加载已更改的模块现在,假设我有wsgi一个在反向代理后运行的应用程序的多个实例nginx(如8011,8012等端口).而且,我们还假设我5每秒都会收到请求.
现在在这种情况下,我应该如何在应用程序的所有正在运行的实例中更新我的代码.
有人可以彻底解释这样繁忙的应用程序是如何热部署的吗?
对于跨负载均衡器(如nginx)后面的多个热实例进行部署,我喜欢使用Fabric等工具进行滚动部署。
这样你就永远不会离线,而且它是无缝的,因为 nginx 知道网络服务器何时被关闭,当它尝试循环到它时,就会转移到下一个,并且一旦节点/实例备份它将重新投入生产使用。
编辑:
您可以使用nginx 中的ip_hash模块来确保来自一个 IP 地址的所有请求在会话期间都发送到同一台服务器
该指令导致请求根据客户端的 IP 地址在上游之间分发。哈希的关键是客户端的 C 类网络地址。该方法保证客户端请求始终传输到同一个服务器。但如果该服务器被认为不工作,那么该客户端的请求将被转移到另一台服务器。这使得客户端很有可能始终连接到同一服务器。
这对您来说意味着,一旦您的 Web 服务器更新并且客户端连接到新实例,该会话的所有连接将继续转发到同一服务器。
这确实会让你陷入这样的境地
这种情况引出了一个问题,您是否从 API/站点中删除了可能会让客户陷入困境的内容?如果您所做的只是更新 UI 元素或添加页面等,但不更改任何后端 API,那么您应该不会遇到任何问题。如果您要删除 API 函数,最终可能会遇到问题。
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |