Microsoft Azure VPN高可用介绍
前面花了一些不少的篇幅介绍如何利用Azure VPN服务实现网络的互联互通,和几个朋友聊天,他们建议说最好也介绍一下微软Azure VPN高可用的实现,这样未来进行网络规划以及架构设计时,可以做一个参考。
主动-待机模式Azure VPN网关
在我们创建Azure VPN网关时,每个VPN网关由两个采用主动-待机(默认)配置的实例组成。当主动实例发生任何计划内维护或计划外中断时,待机实例将自动接管负载(故障转移),恢复S2S VPN连接或vNet到vNet连接,但是会出现短暂的中断。经过验证发现,发生计划内维护时,10到15秒内应可恢复连接。如果发生计划外故障时,恢复连接所需的时间更长,在最糟的情况下大约需1到1.5分钟。如果我们有使用P2S VPN,那么为使 P2S VPN 客户端与网关建立连接,需要先断开P2S连接,然后,用户必须从客户端计算机重新连接。
这种VPN架构设计如下图所示:
如果您本地需要多个站点连接并访问Azure资源,那么如下图所示
当企业处于该种架构设计时,会存在一些要求和限制:
- 需要创建从VPN设备到Azure的多个S2S VPN连接。 将多个VPN设备从同一本地网络连接到Azure时,需要为每个VPN设备创建一个本地网络网关,以及一个从Azure VPN网关到每个本地网络网关的连接。
- 对应于VPN设备的本地网络网关在”GatewayIpAddress”属性中必须有唯一的公共IP地址。
- 此配置需要 BGP。必须在”BgpPeerIpAddress”属性中为代表VPN设备的每个本地网络网关指定唯一的BGP对等IP地址。
- 每个本地网络网关中的AddressPrefix属性字段不能重叠。应在AddressPrefix字段中指定/32CIDR格式的”BgpPeerIpAddress”,例如10.200.200.254/32。
- 应使用BGP向Azure VPN网关播发同一本地网络的相同前缀,流量将同时通过这些隧道转发。
- 每个连接将计入Azure VPN网关的隧道数目上限,基本和标准 SKU的上限为 10,高性能SKU的上限为30。
主动-待机模式Azure VPN网关的模式下,只收去一个VPN 网关实例的费用
主动-主动模式Azure VPN网关
为了保证Azure平台层面的VPN服务实时可用,我们需要将”主动-待机模式” Azure VPN网关改为”主动-主动模式“Azure VPN网关,如果希望创建时就为”主动-主动模式“Azure VPN网关则需要利用脚本或者命令行进行创建。如下图所示:
在此配置中,每个Azure VPN网关实例都有唯一的公共IP地址,每个实例将与本地网络网关和连接中指定的本地VPN设备建立 IPsec/IKE S2S VPN 隧道。 请注意,这两个VPN隧道实际上属于同一个连接。仍然需要配置本地VPN设备,以便与这两个Azure VPN网关公共IP地址建立两条S2S VPN隧道,或者接受这种通道。
由于Azure网关实例采用主动-主动配置,因此,从Azure虚拟网络到本地网络的流量同时通过这两条隧道路由,即使本地VPN设备优先选择其中一个隧道,也是如此。需要注意的是,除非其中一个实例发生维护,否则相同的TCP或 UDP流量始终会遍历相同的隧道或路径。
当一个网关实例发生计划内维护或计划外事件时,从该实例到本地VPN设备的 IPsec 隧道会断开。VPN设备上的对应路由应会自动删除或撤消,以便将流量切换到其他活动IPsec隧道。在Azure端,自动从受影响的实例切换到活动实例。
双重冗余架构设计如下:
此处创建并设置了采用主动-主动配置的Azure VPN网关,并针对上述两个本地VPN设备创建了两个本地网络网关和两个连接。结果是在Azure虚拟网络与本地网络之间建立了包含4 个IPsec隧道的全面网格连接。
所有网关和隧道从Azure端激活,因此流量同时分散在4个隧道之间,每个 TCP或UDP流量再次沿着源自Azure端的相同隧道或路径传送。尽管分散了流量,但可能会发现,IPsec隧道上的吞吐量稍有提高,而此配置的主要目标就是实现高可用性。由于分散的统计特征,难以通过某种测量方式来确定不同的应用程序流量状况对聚合吞吐量造成的影响。
此架构需要使用两个本地网络网关和两个连接来支持本地VPN设备对,需要使用BGP来与同一个本地网络建立两个连接。上述配置同样需要满足这些要求。
上述介绍的为主动-主动模式Azure VPN网关,这种模式下会收去两个VPN 网关实例的费用
前面介绍的都是站点到站点VPN的设计,该架构同样适用于Azure vNet到vNet的连接
该种架构设计确保用于任何计划内维护事件的两个虚拟网络之间始终有一对隧道,进一步提高可用性。和站点到站点的高可用架构设计不同的是,vNet到vNet拓扑只需要为每个网关建立一个连接。 此外,除非基于vNet到vNet连接的传输路由是必需的,否则BGP是可选的。
如果您基于Azure的网络组网规模比较大,需要设计为跨Azure region,跨本地站点的网络,其可以参考:
- 在用户站点和Azure之间建立支持BGP的VPN连接Azure
- 不同区域虚拟网络之间通过微软骨干网建立VPN连接
- 在用户网络和Azure骨干网之间通过BGP实现路由传递