重启Web服务器而不影响用户?

时间:2013-10-25 00:41:39

标签: python nginx dns webserver restart

我可以想到这样做的一系列技术:

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

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

重新启动网络服务器的最佳方法是什么 - 所以我的Python网络应用程序的最新版本可以上线 - 而不会明显影响网站访问者/用户/客户?

1 个答案:

答案 0 :(得分:2)

越简越好,没有银弹。

  1. 对于单个服务器,正常重启机制可能会有所帮助。它将启动新进程以接受新请求,并维护旧进程,直到旧请求完成。 Nginx已经在使用此功能,请参阅http://wiki.nginx.org/CommandLine#Stopping_or_Restarting_Nginx

  2. 对于多台服务器,使用反向代理是一种很好的做法。示例结构如下所示,可以使用Nginx轻松构建: enter image description here 如果某些后端服务器发生故障,则反向代理可以将请求分派给其他正常的服务器,并且不会影响用户。您可以自定义负载平衡策略以进行细粒度控制。您还可以灵活地添加服务器以进行扩展,或者选择关闭服务器以进行故障排除或代码更新。