【问题标题】:AWS Application in Private EC2 and HTTP traffic私有 EC2 和 HTTP 流量中的 AWS 应用程序
【发布时间】:2018-07-24 09:07:53
【问题描述】:

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

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

我刚刚得出下一个结论:

  • 如果我从 Internet 请求:http://index.html

  • 私有 EC2 实例使用 NAT 网关发回 HTTP 响应,因此您需要为该 NAT 处理付费。

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

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

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

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

有什么办法可以避免这种情况吗?我只能想到以下几点:

  • 将应用程序移动到 Web 层(在公共子网中),以便 EC2 实例具有公共 IP,因此它不需要 NAT 网关来响应每个 HTTP 请求

  • 在应用层之外创建一个 Web 层,以便所有流量都来自 NLB Web 层 应用层

  • 创建 NAT 实例而不是 NAT 网关,这样您就无需为该 NAT 处理付费。

谢谢!

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-vpc aws-vpc


    【解决方案1】:

    因此,事实证明 NLB 中存在一种奇怪的行为(错误?),它需要到 something 的默认路由才能返回流量。

    场景:

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

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

    添加:

    • NAT 网关
    • 在私有路由表中添加一个路由以指向 NAT 网关

    这行得通。

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

    而不是添加一个 NAT 网关,您可以改为创建一个到另一个实例的默认路由,例如:

    0.0.0.0/0 -> another instance

    然后,连接到 NLB 就可以了!

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

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

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

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

    【讨论】:

    • 正常异常...但请稍等... OP 报告该流量似乎出现在 NAT 网关流量统计信息中。
    • 谢谢约翰。但在您的示例中,您正在为公共子网中的 EC2 实例替换 NAT 网关,并且该实例成为故障点。如果您删除该 EC2 实例(或 NAT 网关,或 0.0.0.0/0 路由),则来自 Internet 的 HTTP 请求不起作用。请在使用 NAT 网关时,在发送 HTTP 请求时检查监控流量……它实际上使用的是 NAT 网关。
    • 据我所知,只需要一个有效的默认路由。 NLB 将发送返回流量。例如,我将默认路由指向私有子网中的一个实例(没有 NAT 网关)并且它工作正常。它实际上并没有使用该实例。
    • 我想知道如果您停止用于默认路由的 EC2 实例,它是否仍然有效。并且如果该 EC2 实例实际上正在接收一些流量(想知道这一点,因为 NAT 网关实际上正在根据监控窗口接收该流量)
    • AWS 支持也确认了这一点:“由于目标组中的实例不会通过 NAT 网关发送响应,而是通过 NLB 返回,因此您不会被收费。 "
    猜你喜欢
    • 2017-06-12
    • 2020-01-23
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多