gpt4 book ai didi

amazon-web-services - 私有(private) EC2 和 HTTP 流量中的 AWS 应用程序

转载 作者:行者123 更新时间:2023-12-04 00:15:15 24 4
gpt4 key购买 nike

我有一个在私有(private)子网中的 EC2 实例中运行的应用程序(以增加额外的安全性),直接从与公共(public)子网关联的面向 Internet 的 NLB 接收流量。

我还在公共(public)子网中配置了一个 NAT 网关,以便私有(private) EC2 实例可以从 Internet 下载所需的任何内容。

我刚刚得出下一个结论:

  • 如果我从互联网上请求:http://index.html
  • 私有(private) EC2 实例使用 NAT 网关发回 HTTP 响应,因此您需要为该 NAT 处理付费。

  • https://aws.amazon.com/vpc/pricing/

    “数据处理费用适用于通过 NAT 网关处理的每个千兆字节,无论流量的来源或目的地如何”

    与私有(private)子网(Web/应用服务器所在的位置)关联的路由表具有 { - local ; 0.0.0.0/0 - NATGateway} 如果我删除 0.0.0.0/0 条目,那么对服务器的 HTTP 请求将不起作用。如果我删除 NAT 网关,我会遇到同样的问题。
    此外,当我有 NAT 网关和路由表以从私有(private)子网使用它时,当我从 Internet 执行简单的 HTTP 请求时,我还可以在 NAT 网关的监控选项卡中看到流量 - http:///index .html

    有人遇到过同样的问题吗?我的理解正确吗?

    有什么办法可以避免这种情况吗?我只能想到以下几点:
  • 将应用程序移动到 Web 层(在公共(public)子网中),以便 EC2 实例具有公共(public) IP,因此它不需要 NAT 网关来响应每个 HTTP 请求
  • 在应用层之外创建一个 Web 层,以便所有流量都来自 NLB <-> Web 层 <-> 应用层
  • 创建一个 NAT 实例而不是 NAT 网关,这样您就无需为该 NAT 处理付费。

  • 谢谢!

    最佳答案

    因此,事实证明 NLB 中存在一个奇怪的行为(错误?),它需要默认路由到某物才能使返回流量正常工作。

    设想:

  • 公共(public)子网中的 NLB
  • NLB 目标组指向私有(private)子网中的实例

  • 向 NLB 发送流量不会给出响应。

    添加:
  • NAT网关
  • 在私有(private)路由表中添加一个指向 NAT 网关的路由

  • 这行得通。

    但是,它实际上并没有使用 NAT 网关!

    您可以创建到另一个实例的默认路由,而不是添加 NAT 网关,例如:
    0.0.0.0/0 -> another instance
    然后,连接到 NLB 就可以了!

    在后台,VPC 网络检测到来自实例的流量是对来自 NLB 的请求的响应,流量将被路由出 NLB。

    但是,它仅适用于 有效的默认路由 在路由表中。没有使用路由——网络会覆盖它,所以它指向什么并不重要。但是,它必须指向一个有效的资源。如果它指向一个没有附加到任何东西的 ENI,它就不起作用。在我的测试中,如果你将它指向同一个实例,它似乎也不起作用。但是,我将它指向另一个实例和 它工作得很好 .

    AWS Support 同意这不是最佳行为,但这是目前必须配置的方式。

    底线:它不需要 NAT 网关。它只需要一个有效的默认路由,在路由返回流量时将被忽略。

    关于amazon-web-services - 私有(private) EC2 和 HTTP 流量中的 AWS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48776248/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com