从Azure负载平衡器(排水停止)

我们有一个应用程序部署到由IIS服务的Azure IaaS虚拟机。 为了安装更新,我们需要将每台机器逐个从负载平衡器中取出。 在迁移到Azure之前,我们使用Microsoft NLB,它具有DRAIN停止节点的function – 不发送新连接,而是保持现有连接处于打开状态,直到完成。 我们如何才能达到与Azure LB相同?

build议的方法是在您的负载平衡组中设置自定义运行状况探测器。 例如,您可以在每个虚拟机(例如wwwroot)上都有一个简单的healthcheck.html页面,并将您的负载均衡集中的探针指向此页面。 只要探针可以检索该页面(HTTP 200),Azure负载平衡器就会不断向VM发送用户请求。

当您需要更新虚拟机时,只需将healthcheck.html重命名为不同的名称,如_healthcheck.html即可 。 这将导致探测器开始接收HTTP 404错误,并将使该机器不受负载平衡旋转,因为它没有获取HTTP 200.现有连接将继续提供服务,但Azure LB将停止向VM发送请求。

在虚拟机更新完成后,将_healthcheck.html重新命名为healthcheck.html 。 Azure LB探测器将开始获取HTTP 200响应,并因此开始再次向该VM发送请求。

对负载平衡组中的每个虚拟机重复此操作。