使用Azure负载均衡器以零停机时间重新启动/更新服务器

时间:2018-01-30 12:48:10

标签: windows azure load-balancing azure-load-balancer

我有一个非常简单的设置:一个用于http(s)流量的天蓝色负载均衡器,两个运行Windows的应用服务器和一个还包含会话数据的数据库。

目标是能够重新启动或更新服务器上的软件,而不会丢弃任何请求。问题是健康探测器将每5秒进行一次测试,并且需要连续失败2次。这意味着当我杀死应用程序服务器时,这10秒内的大量请求将超时。我怎么能避免这个?

我已经尝试在另一个端口上运行运行状况探测,然后使用Windows防火墙拒绝所有到不同端口的流量。负载均衡器会认为该应用程序已关闭该节点,因此不再向该特定节点发送新流量。但是...... Azure LB执行基于散列的负载平衡。因此,已经进入现在被杀死的节点的流量将继续在那里停留几秒钟!

1 个答案:

答案 0 :(得分:0)

首先,您能否向我们提供更多详细信息:您的数据库负载是否也是平衡的?您是在此数据库上执行读写操作还是仅读取?

有关您的信息,您可以更改Azure负载均衡器分发模式,请参阅此文章了解详细信息:https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-distribution-mode

我建议您在负载均衡器级别禁用正在更新的服务器。在开始更新之前,请等待几分钟(取决于您的应用程序)。这应该“清除”您的端点。更新完成后,再次更新负载均衡器并将服务器放回其中。 云概念是基础架构作为代码:这可以很容易编写脚本并包含在您的部署/更新过程中。

另一种解决方案是使用Traffic Manager。它可以为您提供管理端点的额外选项(对于2个VM /端点,它可能有点过大)。

最后的解决方案是迁移到PaaS解决方案,其中所有这些功能都已可用(部署插槽)。

希望这会有所帮助。

祝你好运