AWS允许您将多个弹性networking接口(ENI)连接到EC2实例。 除了“使它看起来像一个本地服务器”,是否有任何情况下,实际上需要多个ENI?
我已经考虑过在内部环境中要做这些事情的原因,但是这些原因似乎都不适用于AWS:
AWS隐含的路由器总是“坐在”每个ENI和其他所有东西之间,所以不可能再放置另一个实例(运行,比如嗅探器)。
亚马逊自己的文档甚至不清楚为什么你需要一个实例上的多个ENI。 它只是说多个接口是“有用的,当你想要:”
创build一个pipe理networking。
在您的VPC中使用networking和安全设备。
在不同的子网上创build具有工作负载/angular色的双宿主实例。
创build一个低预算,高可用性的解决scheme。
但是这并不能解释为什么ENI是必需的,甚至是用于这些用例的理想select。 (显然,在不同子网上的双宿主实例需要多个ENI,但是这并不能解释为什么你首先需要一个双宿主实例)。
我唯一可以想到的用例是一个运行容器的实例(例如Docker),并且您想要将各个容器映射到不同子网中的主机IP地址。
什么是多个ENI的使用情况,如果有的话?
AWS已经build立了与ENI相关的中断恢复能力。 但是,可能有些情况下,您希望在服务器上有多个ENI。
例如,具有多个出站IP地址的MTA服务器可能希望在服务器上运行多个ENI,以便可以处理更多的邮件发送,而不会被垃圾邮件标记攻击。
正如@Nath指出的那样,您可能还需要多个ENI来将您的服务器作为防火墙来运行,并在两个接口之间build立桥梁来执行一些数据包检查。
从AWS的可用性angular度来看,没有任何“需求”需要在实例上拥有多个ENI,但是有时候您可能需要多个ENI来执行您的出价任务。
希望有所帮助!
用例是需要具有一个“外部/互联网”接口和一个“内部/私人”接口的软件,或者这样做使软件/操作系统更易于configuration的软件,这是许多防火墙/代理设备。 我个人已经将它们用于思科CSR和netscaler市场AMI,因为你最终的configuration看起来像我以前在aws之外看到的configuration(我也最终添加了第二个内部接口, webserversdebugging时,因为这意味着当在这个内部接口上做数据包捕获时,我可以看到它和下游依赖关系(DB,LDAP)之间的stream量,而不必过滤掉来自互联网的stream量,从而简化了捕获并从操作系统给了我更多有意义的SNMP指标。
ENI的两大用途:
你想让一个公共的EIP失败。 在待机监视器上有一个Keepalive实例,如果主服务器出现故障,则会窃取该实例。
VPC间路由,IE。 应用防火墙,IPS / IDS,VPN路由器,安全网关等
您可以使用私有子网中的接口启动实例。 您以后可以将ENI附加到公共子网中,以允许从Internet传入的stream量。 你需要2个ENI来实现这一点。