AWS EC2 实例是否需要多个 ENI?

AWS EC2 实例是否需要多个 ENI?

AWS 允许您将多个弹性网络接口 (ENI) 附加到 EC2 实例。除了“使其看起来像本地服务器”之外,还有哪些情况实际上需要多个 ENI?

我已经考虑过在本地环境中执行此操作的原因,但这些似乎都不适用于 AWS:

  • 链路聚合
  • 链路冗余
  • 单独的管理界面
  • 在线IDS/IPS
  • 内联防火墙

AWS 隐含路由器始终“位于”每个 ENI 和其他所有东西之间,因此无法在线放置另一个实例(例如,运行嗅探器)。

亚马逊自己的文档甚至没有明确说明为什么需要在一个实例上使用多个 ENI。它只是说多个接口“在需要时很有用:”

创建管理网络。
使用 VPC 中的网络和安全设备。
创建双宿主实例,并在不同的子网上分配工作负载/角色。
创建低预算、高可用性的解决方案。

但它没有解释为什么这些用例需要甚至希望使用 ENI。(很明显,不同子网上的双宿主实例需要多个 ENI,但它没有解释为什么你首先想要一个双宿主实例)。

我能想到的唯一用例是运行容器(即 Docker)的实例,并且您想要将各个容器映射到不同子网中的主机 IP 地址。

如果有的话,多个 ENI 的用例是什么?

答案1

ENI 的两大用途:

  • 您想要对公共 EIP 进行故障转移。让备用实例监控 keepalive 并在主实例发生故障时窃取接口。

  • VPC 间路由,例如应用防火墙、IPS/IDS、VPN 路由器、安全网关等。

答案2

用例是需要具有一个“外部/互联网”接口和一个“内部/私有”接口的软件,或者这样做可以使软件/操作系统更易于配置,这是许多防火墙/代理设备。我个人已经将它们与 Cisco CSR 和 netscaler 市场 AMI 一起使用,因为最终得到的配置看起来像我在 aws 之外看到的配置。(我在调试时还在我们的一个 Web 服务器上添加了第二个内部接口,因为这意味着当在这个内部接口上执行数据包捕获时,我可以看到它和它的下游依赖项(DB、LDAP)之间的流量,而不必过滤掉往返于互联网的流量,这简化了捕获过程并为我提供了来自操作系统的更有意义的 SNMP 指标。

答案3

您可以使用私有子网中的接口启动实例。稍后,您可以在公共子网中附加 ENI,以允许从 Internet 传入的流量。您需要 2 个 ENI 才能实现此目的。

相关内容