【问题标题】:Restarting web server without affecting users?在不影响用户的情况下重新启动 Web 服务器?
【发布时间】:2013-11-03 22:40:04
【问题描述】:

我可以想到很多技术来做到这一点:

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

我正在使用 IaaS 解决方案,并将设置 git 和一些侦听器来处理整个设置。

重新启动网络服务器的最佳方法是什么——这样我的 Python 网络应用的最新版本才能上线——而不会明显影响网站访问者/用户/客户?

【问题讨论】:

    标签: python nginx dns webserver restart


    【解决方案1】:

    越简单越好,没有灵丹妙药。

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多