0

当我们在负载均衡器 (lb) 后面有一个机器集群时,通常硬件负载均衡器具有持久连接,

现在,当我们需要在所有机器上部署一些更新(滚动更新)时,方法是让一台机器不旋转,寻找没有通过 lb 发送到该服务器的请求。当应用程序达到无请求状态时,然后手动更新.

在图片中有 70-80 台服务器时,这变得非常痛苦。

有人可以有更好的方法吗。

4

1 回答 1

0

70-80 台服务器是一个非常横向扩展的实现……干得好!更好是一个非常相对的术语,希望这些建议中的一个可以算作“更好”。

  1. 为应用程序实施智能健康检查,并能够在应用程序运行时调整健康检查。我们所做的是在应用程序运行良好时让运行状况检查开始失败。这允许负载平衡器自动使系统停止旋转。我们的停止脚本会查询负载均衡器以确保它不旋转,然后正常关闭,从而使现有连接耗尽。

  2. 将多组系统批处理在一起。我假设您有 70 台服务器来处理峰值负载。这意味着您应该能够一次重新启动多个。执行此操作的标准方法是实现一个最多 10 个令牌的简单令牌授予服务。在继续之前让您的关闭脚本检查令牌。

  3. 另一种方法是使用蓝/绿部署。这意味着您拥有一个完整的第二个服务器场,然后在第二个服务器场更新后切换负载平衡以指向新的服务器场。

  4. 这是选项 3 的替代方案。在相同的服务器上安装应用程序的两个版本,然后让内部代理服务(如 haproxy)在已部署的应用程序版本之间切换连接。例如:

haproxy 监听 8080 应用程序版本 0.1 监听 9001 应用程序版本 0.2 监听 9002

一旦您对应用程序 0.2 版的部署感到满意,请切换 haproxy 以将流量发送到 9002。当您发布 0.3 版时,然后将负载平衡切换回 9001 等。

于 2013-08-06T19:02:04.790 回答