如何在不影响用户的情况下重启Web服务器?

4

我能想到以下几种技术来实现这个目标:

  • 在不同的端口和/或IP上设置副本Web服务器,然后使用DNS作为负载均衡器;逐个重新启动服务器
  • 利用更明确的负载平衡(PaaS如Heroku和OpenShift使用)与隐式副本
  • 使用一些内置机制(例如:在nginx中)

我正在一个IaaS解决方案中工作,并将设置git和一些监听器来处理整个设置。

最佳的重启Web服务器的方法是什么——以便我的Python Web应用程序的最新版本可以上线,而不会对站点访问者/用户/客户产生明显的影响?

1个回答

2
越简单越好,没有万能的解决方案。
1. 对于单个服务器,优雅重启机制可能会有所帮助。它将启动新进程以接受新请求,并保持旧进程直到旧请求完成。Nginx已经在使用这种机制,参见http://wiki.nginx.org/CommandLine#Stopping_or_Restarting_Nginx 2. 对于多个服务器,使用反向代理是一个好的实践。一个示例结构如下图所示,可以很容易地使用Nginx构建: enter image description here 如果某些后端服务器出现故障,反向代理可以将请求分派给其他健康的服务器,而不会影响用户。您可以自定义负载平衡策略进行精细控制。您也可以灵活地添加服务器以扩展,或挑选服务器进行故障排除或代码更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接