当我们在负载均衡器(lb)后面有一组机器时,通常硬件负载均衡器具有持久连接,
现在,当我们需要在所有机器上部署一些更新(滚动更新)时,要做的方法是让一台机器退出轮换,找不到通过lb发送到该服务器的请求。当应用程序没有达到请求状态时然后手动更新。
图片中有70-80台服务器,这变得非常痛苦。
有人可以更好地做到这一点。
答案 0 :(得分:0)
70-80台服务器是一个非常水平扩展的实现......干得好!更好是一个非常相对的术语,希望其中一个建议算得上“更好”。
为应用程序实施智能运行状况检查,并能够在应用程序运行时调整运行状况检查。我们所做的是在应用程序运行正常时运行状况检查开始失败。这允许负载平衡器自动使系统停止旋转。我们的停止脚本查询负载均衡器以确保它没有旋转,然后正常关闭,这允许现有连接耗尽。
将多组系统批处理在一起。我假设您有70台服务器来处理峰值负载。这意味着您应该能够一次重启几个。执行此操作的标准方法是实现最多10个令牌的简单令牌授予服务。让您的关闭脚本在继续之前签出令牌。
另一种方法是使用蓝色/绿色部署。这意味着您拥有整个第二个服务器场,然后在第二个服务器场更新后,切换负载平衡以指向新的服务器场。
这是选项3的替代选项。在同一服务器上安装两个版本的应用程序,然后使用内部代理服务(如haproxy)切换部署的应用程序版本之间的连接。例如:
haproxy在8080上收听 app version 0.1听9001 app version 0.2听9002
一旦您对部署应用版本0.2开关haproxy感到满意,就可以将流量发送到9002.当您发布版本0.3时,将负载平衡切换回9001等。