【问题标题】:Public/Private Subnet Architecture on AWSAWS 上的公共/私有子网架构
【发布时间】:2020-11-24 01:54:14
【问题描述】:

我无法理解this 图像:

具体来说,我想要的是附加到每个区域的全局加速器,每个区域都有一个 VPC 和负载均衡器。然后在一个区域的每个 AZ 中,都有一个公共子网和一个私有子网。私有子网或数据库服务器将完成所有计算和渲染。公共子网是负载均衡器(或者公共子网是否需要是一组实例?)。

公共子网还附加了一个 Internet 网关和 NAT 网关。文档说私有子网可以使用公共子网中的 NAT 网关访问互联网,但我不明白为什么它不只使用互联网网关。

我在公共子网和私有子网中有一个路由表。在公共子网中,路由表转到指向 Internet 网关的 0.0.0.0/0。在私有子网中,它转到指向 NAT 网关的0.0.0.0/0

还有一个与 NAT 网关关联的弹性 IP,大概是我从私有服务器发出请求时互联网看到的。

我的问题是,什么与什么有关?文档在实际示例中不够清楚。我想要一个公共子网,我认为它不需要任何实例(我错了吗?),只需要负载均衡器。那么私有子网是计算/数据库子网,确实由实例组成,这些实例只能通过连接到 NAT 网关的负载均衡器连接到互联网。

我很困惑。我一遍又一遍地阅读文档,但仍然看不到应该如何连接。任何帮助解释与此图表中的内容相关的内容(将其扩展到包括全球加速器)将不胜感激。

【问题讨论】:

  • 如果您使用全局加速器,您的 ALB 和实例可以是私有的,如 here 所示。不确定这是否是您所追求的?
  • 哦,太好了,是的,这就是我所追求的!
  • 很高兴听到。如果您不介意,我可以提供更多信息的答案。
  • 是的,那太好了!

标签: amazon-web-services


【解决方案1】:

当您使用 AWS Global Accelerator 时,您可以保持您的 ALB 和实例私有,而不会将它们暴露在互联网上。

最近的 AWS 博客文章中解释了这种架构:

在此架构中,使用内部 ALB,并且没有没有公共子网。唯一的要求是在 VPC 中假装 Internet 网关。需要注意的是,即使有互联网网关,也没有为子网配置访问互联网的路由:

为避免互联网流量意外流入私有子网,我们要求在创建客户端地址保留加速器时将互联网网关连接到包含资源的 VPC。

【讨论】:

  • 如果互联网网关没有连接到任何路由或除 VPC 之外的任何东西,那么它的目的是什么?由于他们的代码或其他原因,这似乎是一个 hack :)
  • 我需要对 ENI 做什么,是我创建这些还是自动完成?
  • @LancePollard “为避免 Internet 流量意外流入私有子网,我们要求在创建客户端地址保留加速器时将 Internet 网关连接到包含资源的 VPC。” ENI 应该由您指定的子网中的加速器创建。我没有所有可能的答案:-(
  • 这带来的另一个问题是您是否还需要在该系统中使用 NAT 网关。
  • @LancePollard 它的应用程序是您的应用程序。 NAT 网关用于您的实例访问 Internet,但 Internet 中的任何内容都无法访问该实例。因此,您的实例将需要更新、安装软件或外部 API,而不是 NAT。但是对于 NAT,您还需要一个公共子网。因此,您的 VPC 将需要至少有一个这样的子网。
【解决方案2】:

请不要误会,但我不认为你真的需要你所说的一切。

我建议您从一个区域开始,不要使用全球加速器。实施您的系统并创建一个可以模拟用户流量的测试平台,或者将您的系统发布给您的客户并对其进行监控以确定性能。

  • 如果您在多个区域运行,您会遇到数据保存位置的问题——数据可能会在每个区域中单独保存或复制。这一切都取决于您的需求。我建议您从简单开始,如果您需要以不同的方式进行操作,请扩展。
  • Global Accelerator 在使用多个区域时没有意义,因为它旨在将流量发送到一个位置。相反, 考虑 Amazon CloudFront 将数据缓存在离客户更近的地方,以提供更好的性能。
  • 如果您的应用程序在多个 Web 服务器上运行,请将负载均衡器放在公共子网中,将其他所有内容放在私有子网中。

简单地说,从简单开始。让您的应用程序以最简单的方式运行。然后,如果您有更高的要求(例如对用户的低延迟),请考虑添加 Amazon CloudFront。很少有应用程序跨越多个区域,因此请谨慎选择并有特定的理由。

【讨论】:

  • “使用多个区域时全局加速器没有意义” 我认为全局加速器的全部意义在于进行任播并支持多个区域(如 Google Cloud)。
  • 如果我在公有子网中有负载均衡器,是否需要公有子网中的instances?或者我可以将所有实例都放在私有子网中吗?
  • 糟糕!你说得很对! Global Accelerator 被列为对多个区域有用。我确实建议您在这样做之前有充分的理由使用多个区域。它们引入了许多您的应用程序可能不需要的复杂性。
  • 默认情况下,您应该将所有内容放在私有子网中以提高安全性。但是,something 需要进入公共子网才能“接收”流量。如果您使用的是负载均衡器,那么它将进入公共子网。如果您只有一个没有负载均衡器的 Web 服务器,那么 Web 服务器将进入公共子网。从理论上讲,您可以将所有内容放在公共子网中,并使用安全组保护资源,但通常建议使用多层保护以获得更好的安全性。
  • 酷,所以公共子网不需要任何实例,我一直在想这个!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
相关资源
最近更新 更多