如何在 Azure 中维护 VIP 交换或同等级别的现有连接

如何在 Azure 中维护 VIP 交换或同等级别的现有连接

我想在 Azure 上进行从暂存到生产的蓝绿部署。

我们的 Web 应用程序与后端服务器保持着长期运行的 EventSource/SSE 连接。在从暂存状态切换到生产状态期间,这些长期运行的连接不得中断。

换句话说,如果生产服务器最初是蓝色服务器,则在绿色服务器升级为生产服务器期间和之后,与蓝色服务器的任何连接都必须在蓝色服务器上继续。新连接将路由到绿色服务器。

我自己的测试表明,Azure 云服务(经典)VIP 交换不能以这种方式工作,至少对于 https 连接来说是这样。在交换期间,现有连接将被终止。进一步阅读如何管理云服务,似乎无法保证维持现有的连接。

如上一节所述,部署交换通常非常快,因为它只是 Azure 负载均衡器中的配置更改。但在某些情况下,它可能需要十秒或更长时间,并导致暂时连接失败。为了限制对客户的影响,请考虑实施客户端重试逻辑。

我的问题的第一部分是,我上面描述的是否是 VIP 交换的预期行为,或者是否应该维持现有的连接。

问题的第二部分是,在 Azure 上实现我的目标的推荐方法是什么。我无法找到 Azure 的官方文档,其中详细介绍了此方案以及有关现有连接的详细信息。

请注意,我想避免使用基于 DNS 的解决方案。我正在寻找网络堆栈更底层的解决方案。类似于在 AWS 上使用 Elastic Load Balancer 进行蓝绿部署,详情如下这里

答案1

看起来排水截止阀不受 Azure 负载均衡器支持。

其他方法使用自定义健康检查可能会有效,但有点笨拙

事实上,健康检查方法对于一次性删除整个服务器集群来说是非常不切实际的,所以我想出了一个解决方法。

我尝试设置一个 https 重定向器,可以通过环境变量轻松地在蓝色和绿色之间切换,但这导致 cors 的 Origin 被设置为 null,并且不建议允许空来源

最后,我选择的解决方案是配置服务,它将被查询以获取最新端点。在我的情况下,这是可行的,但我可以看到,对于许多实现来说,这可能是一个问题。

相关内容