我能想到以下几种技术来实现这个目标: 在不同的端口和/或IP上设置副本Web服务器,然后使用DNS作为负载均衡器;逐个重新启动服务器 利用更明确的负载平衡(PaaS如Heroku和OpenShift使用)与隐式副本 使用一些内置机制(例如:在nginx中) 我正在一个IaaS解决方案中工作,并将设置git和一些监听器来处理整个设置。 最佳的重启Web服务器的方法是什么——以便我的Python Web应用程序的最新版本可以上线,而不会对站点访问者/用户/客户产生明显的影响?
越简单越好,没有万能的解决方案。1. 对于单个服务器,优雅重启机制可能会有所帮助。它将启动新进程以接受新请求,并保持旧进程直到旧请求完成。Nginx已经在使用这种机制,参见http://wiki.nginx.org/CommandLine#Stopping_or_Restarting_Nginx 2. 对于多个服务器,使用反向代理是一个好的实践。一个示例结构如下图所示,可以很容易地使用Nginx构建: 如果某些后端服务器出现故障,反向代理可以将请求分派给其他健康的服务器,而不会影响用户。您可以自定义负载平衡策略进行精细控制。您也可以灵活地添加服务器以扩展,或挑选服务器进行故障排除或代码更新。