我正在为 Azure 中的产品创建蓝/绿部署,但遇到了有关内部部署数据库的出站流量的问题。
我们的初步想法可以从下图中看出:
你可以看到建筑蓝绿部署图 。
我们有三个主要的“活动部件”:
具有 VNET 的分支订阅和运行我们产品不同版本的虚拟机
具有 VPN 网关的中心订阅和网络
具有数据库和客户端的本地网络
我们的生产虚拟机需要能够通过固定 IP 被本地客户端访问,而且还能够访问数据库(本地防火墙只允许单个 IP)。
这对于单个虚拟机来说运行得很好,但是现在我们想要进行蓝/绿部署,事情就变得有点复杂了。
使用负载均衡器,入站部分非常容易,但出站部分(从服务器到本地 VM 的固定私人的IP) 被证明比预期的要难得多。特别需要本地网络看到单个私人的IP 因为防火墙只允许这个单一 IP 访问数据库。
我看到了很多类似的问题,但它们都关注公共 IP,而不是私有 IP,而这才是我真正需要的。
我最初的想法是使用 NAT 网关或内部负载均衡器来处理出站流量,但它们都使用民众IP,当我们需要完全私密时。
使用 Azure 防火墙并“强制” SNAT 确实会转换 IP 地址,但它使用内部 IP 池而不是固定 IP 池,因此这也不起作用。
有什么建议么?
答案1
理想情况下,弹性、独立测试的系统共享尽可能少的通用组件。尽量不要依赖于此类环境之间的 IP 地址相同。如果您想要切换网络、区域或云提供商,则可以提供更大的灵活性。
将数据库复制到相同的辅助副本。结果为蓝色副本和绿色副本各一份。这相当复杂,因为现在您必须处理将数据复制到辅助副本、客户端负载平衡、切换和基础设施成本。但是现在您拥有经过实际测试的数据灾难恢复副本,并且可以先在用户较少的副本上部署数据库更改。
尽管全力以赴蓝绿假设独立环境的边界延伸到数据库。可以选择 DB 保留一个共享副本。
也许可以通过向数据库主机添加额外的 IP 地址来使防火墙规则可行。那么即使在 IP 目标标头中也可以看到哪个环境。即使数据库恰好是同一个实例。