我想在 Azure 上进行从暂存到生产的蓝绿部署。
我们的 Web 应用程序与后端服务器保持着长期运行的 EventSource/SSE 连接。在从暂存状态切换到生产状态期间,这些长期运行的连接不得中断。
换句话说,如果生产服务器最初是蓝色服务器,则在绿色服务器升级为生产服务器期间和之后,与蓝色服务器的任何连接都必须在蓝色服务器上继续。新连接将路由到绿色服务器。
我自己的测试表明,Azure 云服务(经典)VIP 交换不能以这种方式工作,至少对于 https 连接来说是这样。在交换期间,现有连接将被终止。进一步阅读如何管理云服务,似乎无法保证维持现有的连接。
如上一节所述,部署交换通常非常快,因为它只是 Azure 负载均衡器中的配置更改。但在某些情况下,它可能需要十秒或更长时间,并导致暂时连接失败。为了限制对客户的影响,请考虑实施客户端重试逻辑。
我的问题的第一部分是,我上面描述的是否是 VIP 交换的预期行为,或者是否应该维持现有的连接。
问题的第二部分是,在 Azure 上实现我的目标的推荐方法是什么。我无法找到 Azure 的官方文档,其中详细介绍了此方案以及有关现有连接的详细信息。
请注意,我想避免使用基于 DNS 的解决方案。我正在寻找网络堆栈更底层的解决方案。类似于在 AWS 上使用 Elastic Load Balancer 进行蓝绿部署,详情如下这里