0

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

目标是能够重新启动或更新服务器上的软件,而不会丢弃单个请求。问题是运行状况探测会每 5 秒进行一次测试,并且需要连续失败 2 次。这意味着当我终止应用程序服务器时,这 10 秒内的很多请求都会超时。我怎样才能避免这种情况?

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

4

1 回答 1

0

首先,您能否提供更多详细信息:您的数据库是否也负载均衡?你是在这个数据库上执行读写还是只读取?

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

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

另一种解决方案是使用流量管理器。它可以为您提供额外的选项来管理您的端点(对于 2 个虚拟机/端点来说,它可能有点过大)。

最后一个解决方案是迁移到所有此类功能都可用的 PaaS 解决方案(部署槽)。

希望这会有所帮助。

最好的祝福

于 2018-01-30T13:42:26.407 回答