无法访问 EC2 实例,但无法访问其他 VPC 中的 NLB

无法访问 EC2 实例,但无法访问其他 VPC 中的 NLB

我最近开始从 AWS ELB 切换到 NLB,但遇到了一些连接问题。

我们有 2 个 VPC。VPC1 中有两个 EC2 数据库服务器、旧 ELB 和 NLB。VPC2 中有一些连接到数据库服务器的 EC2 服务器

在 VPC1 中,我们没有遇到任何连接问题。

在 VPC2 中,我无法通过 NLB 访问 DB。

  • 我可以通过旧的 ELB 访问数据库,它与 EC2 服务器位于同一安全组中
  • 我可以通过直接连接到数据库服务器来访问数据库(EC2 数据库服务器允许来自 VPC2 的流量)
  • NLB、ELB 和 EC2 DB 服务器位于同一子网
  • NLB 为内部类型

据我对 NLB 工作方式的理解,我可以直接连接到 EC2 实例这一事实意味着我应该能够通过 NLB 连接到它 - NLB 本身没有安全组并使用 EC2 实例的安全组,因为它转发源 IP。

有谁知道可能出了什么问题?

答案1

如果 NLB 是内部类型,则意味着它没有公共 IP。为了能够通过 NLB 的私有 IP 从另一个 VPC 向其路由流量,需要有一个VPC 对等连接在这些 VPC 之间建立对等连接。要使 VPC 对等连接正常工作,您还需要将对等连接的路由添加到子网的路由表中

答案2

NLB 本身没有安全组,而是使用 EC2 实例的安全组,因为它转发源 IP。

那是不对的。NLB 没有安全组,但它也有隐藏源的安全组。它仅使用 IP 地址。

因此,如果您的数据库安全组允许从 EC2 SG 进行访问,则必须添加另一条基于 IP 的规则,以允许从客户端 IP 进行访问。一旦流量通过 NLB,它丢失源安全组标签

无论如何,NLB 适用于非常专业的用例。你确定 ALB(应用程序负载均衡器)不会为你提供更好的服务吗?它在 HTTP / HTTPS 级别上工作,并让你更好地控制请求路由等。

希望有帮助:)

答案3

事实证明,尽管 NLB 支持 VPC 对等连接,但它仅适用于所谓的 Nitro 实例

如果对等 VPC 与负载均衡器位于同一区域,则客户端必须是 Nitro 实例。

“VPC2”中的实例类型t2.small不是硝基。

相关内容