4

出于地理冗余和性能原因,我们将在多个区域中设置多个 EC2 服务器,这些服务器将使用 Amazon 的 AutoScaling 按需扩展和缩减。然而,我们有一个有点独特的要求,即所有地区的每台服务器都需要能够相互通信。虽然在单个区域中设置防火墙以允许这样做非常简单,但由于不支持从其他区域引用防火墙中的安全组,因此如何跨区域实现这一点并不明显。

有谁知道确保我们所有服务器都可以在特定端口上相互访问的最佳方法是什么?请记住,Amazon 的 AutoScaling 将添加和删除服务器,因此手动输入 IP 地址很快就会过时。我希望有一种方法可以通过配置来实现这一点,而不是每次通过 AutoScaling 添加或删除服务器时都必须进行 API 调用。

4

1 回答 1

1

我不相信这是可能的。您可以尝试使用安全组 ID 而不是名称,但我不确定这些是否可以跨区域工作。我只是试了一下,无法让它工作。该规则创建得很好,但不能保证我添加的安全组实际上是从我的帐户添加的,因为您实际上可以跨帐户添加安全组。如果您有 VPN 连接,则很可能使用 VPN 连接,因为 VPN 可以让您更好地控制防火墙规则,但我从未尝试过。

说了这么多。我认为你应该重新审视你的应用程序的要求。我不知道您为什么需要在两个区域之间连接,我了解您的目标是实现地理冗余。但是,在考虑容错时,要求两个环境相互连接会给我带来危险。如果您的环境以任何方式连接,那么即使一个环境发生故障,您也会面临完全故障的风险。在两个区域中启动实例除了延迟或容错之外还有什么用途?我的观点是,如果服务器需要安全组中的规则,则您的环境可能过于连接,并且拥有两个地理位置并没有任何好处。

每个 EC2 区域都是隔离的,以帮助提供强大的架构设计决策。他们还希望将任何问题隔离到一个区域,这也是您应该努力的目标。

于 2012-07-07T16:31:20.117 回答