我似乎无法找到任何相关文档。
如果连接耗尽不可用,那么应该如何进行零停机部署?
答案 0 :(得分:1)
Rick Rainey在服务器故障上回复了essentially the same question。他说:
建议的方法是使用自定义运行状况探测器 你的负载平衡设置。例如,你可以有一个简单的 每个虚拟机上的 healthcheck.html 页面(例如,在wwwroot中) 并将探针从您的负载平衡设置指向此页面。只要 因为探测器可以检索该页面(HTTP 200),所以Azure加载 balancer将继续向VM发送用户请求。
当您需要更新VM时,您只需重命名即可 healthcheck.html 使用其他名称,例如 _healthcheck.html 。这个 将导致探针开始接收HTTP 404错误并将采取 那台机器出了负载平衡旋转,因为它没有 获得HTTP 200.现有连接将继续得到服务 但Azure LB将停止向VM发送新请求。
完成VM上的更新后,重命名 _healthcheck.html 返回 healthcheck.html 。 Azure LB探测器将开始获取HTTP 200响应,因此开始发送 再次请求此VM。
对负载平衡集中的每个VM重复此操作。
但请注意,Microsoft的Kevin Williamson在其MSDN博客文章Heartbeats, Recovery, and the Load Balancer中说明,“确保您的探测路径不是一个简单的HTML页面,但实际上包含确定您的服务健康状况的逻辑(例如,尝试连接到SQL数据库)。“所以你可能真的想要一个可以检查几个因素的aspx页面,包括你放在某个地方的自定义“排水”标志。
答案 1 :(得分:0)
您的客户只需重试即可。
负载均衡器仅将请求转发给活动的实例(由ping确定),它不会跟踪连接。因此,如果您有长期连接,则有责任在重新启动事件时清理它们或将其留给操作系统在重新启动时清理它们(在大多数情况下显然不是优雅的)。
零停机意味着您始终能够访问一个活着的实例,仅此而已 - 它无法保证长时间运行的请求。
答案 2 :(得分:0)
请注意,当探针关闭时,只有新连接将转到其他VM 现有连接不受影响。