使用 Azure 负载均衡器持续交付

Continuous Delivery with Azure Load Balancer

我们在负载均衡器后面有两个虚拟机。我们希望在进行新部署时让其中一个 VM 不可公开访问,这样我们就可以在应用程序的新版本变得可公开访问之前对其进行测试。当前的计划是通过负载均衡器的服务标签更改网络安全组规则来阻止两台虚拟机中的一台:

有效。当我们将 VM1 的 NSG 规则从允许更改为拒绝时,只有 VM2 保持可公开访问。一旦我们验证新版本按预期工作,我们就会切换 VM2 的 NSG 规则并切换 VM1 的 NSG 规则,因此当我们更新另一个 VM 上的应用程序时,只有具有最新版本应用程序的 VM 是可访问的。

问题是 NSG 规则不会立即生效,可能需要 1-3 分钟才能创建 VM inaccessible/accessible。 此外,如果我们同时为两个 VM 切换 NSG,我们可能会遇到两个具有不同软件版本的 VM 都公开可用的情况,这可能导致数据损坏或数据丢失或两个 VM 都无法访问。因此,解决此问题的唯一方法是更改​​ VM2 的 NSG 规则,然后更改 VM1 的 NSG 规则,并有 2-6 分钟的停机时间。有更好的方法吗?

通过 PowerShell Remoting 使用 Windows Defender 防火墙阻止端口 80 和 443 使停机时间总计达到 40 秒。