出于地理冗余和性能原因,我们将在多个地区设置多个EC2服务器,这些服务器将使用亚马逊的AutoScaling按需扩展和缩小。然而,我们有一个独特的要求,即所有区域的每个服务器都需要能够相互通信。虽然设置防火墙以允许在单个区域中实现这一点非常简单,但是不支持跨域的实现方式并不明显,因为不支持从其他区域引用防火墙中的安全组。
有谁知道确保我们所有服务器在特定端口上相互访问的最佳方法是什么?请记住,亚马逊的AutoScaling将添加和删除服务器,因此手动输入IP地址将很快过时。我希望有一种方法可以通过配置来实现这一点,而不是每次通过AutoScaling添加或删除服务器时都必须进行API调用。
答案 0 :(得分:1)
我不相信这是可能的。您可以尝试使用安全组ID而不是名称,但我不确定那些跨区域工作。我只是试了一下,无法让它工作。该规则创建得很好但不能保证我实际从我的帐户添加的安全组,因为您实际上可以跨帐户添加安全组。如果你有一个VPN连接很可能,因为VPN可以让你更多地控制防火墙规则,但是我从来没有尝试过。
所有这一切都在说。我认为您应该重新审视您的应用程序的要求。我不知道为什么你需要在两个地区之间建立连接,我理解你的目标是实现地理冗余。但是,在考虑容错时,要求两个环境相互连接会给我一个红旗。如果您以任何方式连接环境,即使一个环境出现故障,您也可能面临完全失败的风险。延迟或容错以外的目的是在两个区域中启动实例吗?我的观点是,如果服务器需要安全组中的规则,您的环境可能过于紧密,并且您通过拥有两个地理位置就无法获益。
每个EC2区域都是隔离的,以帮助提供强有力的建筑设计决策。他们还希望将任何问题隔离到一个区域,这也是您应该努力的目标。