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

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

最佳答案

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

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

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

10-08 09:25