为什么nova需要公共接口?

为什么nova需要公共接口?

我已经阅读了一些关于 nova-network 的解释以及如何像 wiki 中的那样配置它的解释:

我对一个细节感到困惑。如果来自实例的每个流量都必须经过 nova 控制器节点,那么为什么我们仍然需要 nova-compute 节点的公共接口?有必要吗?

当外部请求到达实例时会发生什么?例如,我有一个控制器节点和一个 nova-compute 节点。在 nova-compute 节点中,我运行一个带有 Wordpress 网站的实例。然后有人连接到此实例的公共 IP。那么请求是直接从路由器发送到 nova-compute 节点,还是从路由器发送到控制器节点,然后发送到 nova-compute 节点?

答案1

如果 nova-network 在控制器节点上运行,实例会将该节点用作其通向外界的网关。公共接口在计算节点上配置,浮动(公共)IP 直接在计算节点上配置。因此,实例绑定的公共流量将转到计算节点上的公共接口,而不是控制器。

更好的网络模型是 FlatDHCP + multi_host。请参阅这篇博文详细描述了它并说明了为什么它是更好的选择。

总结一下:nova-network 在每个计算主机上运行。物理 flat_interface(在配置中指定,通常为 eth1)在其上构建了一个桥接器,该桥接器在私有实例网络上分配了一个 IP 地址。使用这个桥接器,nova-network 为该计算节点上托管的所有实例提供 DHCP、DNS 和网关。物理 flat_interface(eth1)应链接到连接其他计算节点的 flat_interface 的交换机。这可以在内部私有网络(例如 10.0.0.0/24)上启用实例间流量。

每个计算节点还在配置中指定了一个 public_interface(默认为 eth0)。预计这将连接到面向公众的网络,例如 192.168.25.0/24。作为用户,您可以分配一个地址并将其与正在运行的实例关联。这些地址是从您在最初设置 nova 网络时配置的池中分配的。使用 EC2,例如:

adam@amebix:~/nova$ euca-allocate-address
ADDRESS 192.168.25.241
adam@amebix:~/nova$ euca-associate-address 192.168.25.241 -i i-00000126
ADDRESS 192.168.25.241  i-00000126

在计算节点上,192.168.25.241 作为辅助虚拟 IP 地址添加到 public_interface,并且计算节点 iptables 规则配置为将到此地址的流量路由到适当的实例。但是,默认安全组不允许任何入站流量通过。您需要授权实例所分配到的安全组中的端口(通过 euca-authorize)。这相当于 nova-network 在与该实例对应的 iptables 规则集中打开端口。

相关内容