目标是在不同地区的VPC之间build立数据链路,即使在一个VPC或另一个VPC中的可用区域出现故障时,该链路也应该继续工作。
在每端都有一个简单的VPN隧道和一个VPN实例将不起作用; 如果错误的AZ在一端失败,隧道就会closures。
我希望亚马逊会允许你创build从一个VGW到另一个VGW的VPN隧道,但这似乎还不可能。 太糟糕了,因为在不同地区的VPC之间build立完全冗余的互连选项将是一种简单的方法。
还有直接连接,如果设置正确,可能会允许一些冗余(至less在AWS级别)。 但build立直stream链路需要时间,而且非常昂贵。 这不是你想要testing一个想法的事情。
从理论上讲,在每一端都有一对VPN实例,可以使用BGP和某种types的心跳,但是设置必须相当复杂(实例必须相互监视并将路由改变推送到VPC)。 这个话题的任何HOWTO?
其他想法?
你是对的 – 这是一个棘手的命题。
我不知道如果我的configuration是辉煌的或荒谬的,但我决定避免networking重新configuration自己的需要提供每个可用性区域与自己的硬件…这就是我使用:
在每个AZ中,我有一个VPN实例,所以对于两个区域,每个3个AZ,即总共6个。 他们是T2级的机器,所以性价比很高,性价比很高。 其中每一个都有一个隧道到远程地区的所有单位,所以这三台机器中的每一个都有3个到远程地区的3个AZ的隧道。
VPC路由是静态的 – 每个AZ中的远端IP块的所有stream量路由到本地AZ中的隧道服务器,然后对其进行encryption和封装,并将其发送。 每个隧道服务器都有到远程AZ中的子网的静态路由,终止于目的地可用区域远端的正确VPN节点。 (每个AZ中的子网是一个连续的/ 21个networking块,所以它只是一条path)。
另一方面,情况正好相反。
因此,VPN节点的丢失只会导致该节点所在的可用区域内的计算机与远程区域中的所有区域隔离,因此与故障位于同一区域的其他可用区域不依赖于任何types的故障转移机制 – 他们不受影响。
在整个可用性区域中实际丢失的所有内容都不会影响任何其他区域的VPN连接,而使用此设置的未受影响的区域将不会受到影响。
实际上,VPN机器有两种方式可以连接到每个同行。 第一个是“正常”路由,通过互联网到对端的弹性IP,另一个是通过备份路由,VPN服务器都连接集线器,而不是集中在AWSnetworking – 理论上,那里,因为隧道可能在直接的互联网可路由性部分丧失的情况下幸存下来,stream量将采用与备用中心站点不同的骨干网并被中继给对等体,从而允许它们将stream量通过较慢且更潜在的备份path而无损在互联网连接丢失的情况下隧道连通性。 由于主path和备用path在每端都以相同的实例终止,并且备份“集线器”不跟踪stream量,所以在振荡期间短暂的非对称隧道stream量路由不会引起任何问题。
必须解决VPN节点的故障才能恢复到受影响的区域的连接。 或者更改路由表。