将具有相同 CIDR 块的多个 VPC 连接到共享 VPC

Jos*_*lsh 2 networking amazon-web-services amazon-vpc vpc-peering

在我公司的 AWS 云中,我们有 4 个 VPC,一个用于我们的每个主要 API 环境(开发、测试、阶段、生产)。为了使这些环境尽可能相似,它们都将 CIDR 块设置为 10.0.0.0/16。

现在我们需要创建一个在这些环境之间共享的内部服务。为了便于论证,我们假设这个新服务存储来自所有这些环境的日志数据。此服务存在于其自己的 VPC 中,其 CIDR 块为 10.1.1.0/24。

起初,我认为我可以简单地将来自所有环境 VPC 的对等连接添加到日志记录 VPC 中。但是,当我开始设置路由表时遇到了障碍。我从 Dev -> Logging 创建了一个路由表,它路由目的地为 10.1.1.0/24 的所有流量。但是我仍然无法从 dev 连接到我的日志记录服务器。似乎我需要为 Logging -> Dev 添加一个路由表,它路由目标为 10.0.0.0/16 的所有流量。这允许我从开发服务器连接到日志服务器,但现在我无法将我的任何其他环境连接到日志 VPC。

日志服务器永远不必启动与我的 API 服务器的连接,它只需要接收和响应连接。所以我的下一个想法是我可以在每个环境 VPC 上使用 NAT 网关,然后将它们路由到日志记录 VPC。不幸的是,NAT 网关似乎直接连接到 Internet,我不希望我的日志记录 VPC 连接到 Internet。

我觉得一定有办法让这个工作,但我想不出一个。目前我觉得我唯一的选择是创建 4 个日志 VPC 并在每个 VPC 中运行单独的日志服务器,但从成本的角度来看,这对我来说并不真正吸引我。

EEA*_*EAA 6

首先,我必须提到:您在 VPC 中复制子网是一个非常严重的错误。即使您需要在它们之间路由流量的可能性几乎为零,RFC1918 地址空间也足够大,您可以为每个 VPC 提供一个唯一的子网。我就 AWS 主题咨询了许多公司,并维护了一个“主子网列表”电子表格,以记录我在为客户分配 VPC 时使用的子网,以确保我没有重叠的子网。

您问题的明显答案是重新编号重叠的 VPC。这会很痛苦,但它是这个问题的正确答案,并且会为你一劳永逸地解决这个问题。

如果这不是一个选项,我可以想到其他几个选项:

  1. 将 SQS 用于您的日志 - 将日志从您的应用 VPC 发送到 SQS 队列,使用每个应用 VPC 的源 ID 进行注释,然后从您的日志记录 VPC 使用 SQS 中的日志。除了解决您陈述的问题之外,这还会在您的日志生产者和日志使用者之间放置一个非常高可用的缓冲区。如果您的基础架构出现问题,或者您需要将其关闭以进行维护,这可以防止您丢失日志。
  2. 通过公共 IP(ELB、EIP 等)公开您的日志记录端点,对其设置防火墙,以便只有您的应用服务器的公共 IP 可以访问它并让它们以这种方式发送日志。流量将保留在 AWS 的网络上,只要经过加密和身份验证,就不是什么安全问题。不过,您将为带宽支付更多费用。