Atom feed of this document
  

 网络概念

计算服务分配一个私有的 IP 地址给每一台虚拟机实例。计算服务在固定 IP 和浮动 IP 之间做了区别。固定 IP 是在创建时分配给实例的 IP 地址,并保持不变,直到实例被明确终止。浮动 IP 是可以动态分配给实例的 IP 地址。浮动 IP 可以在任何时候附加和分配给另一台实例。用户可以为他们的项目保留一个浮动 IP。

[注意]注意

目前,计算节点上的 nova-network 仅支持 Linux 桥接网络,允许虚拟接口通过物理接口连接到外部网络。

网络控制节点的 nova-network 提供虚拟网络,以允许计算服务器之间以及与公有网络的交互。计算节点的 nova-network 支持以下网络模式,它们是作为网络管理者类型实现的:

扁平化网络管理器

在这个模式下,网络管理者指定了一个子网。虚拟机实例的 IP 地址是从子网中分配的,并在启动时注入镜像中。每个实例从可用地址池中接收一个固定 IP 地址。系统管理员必需在运行 nova-network 服务的系统上创建 Linux 网络桥接 (通常命名为 br100,尽管它是可配置的)。所有的系统的实例被附加到由网络管理员手动配置的同一个桥接上。

[注意]注意

配置注入目前仅支持linux风格的系统,且将网络配置保持在/etc/network/interfaces

扁平化DHCP网络管理器

在这个模式下,除了手动配置网络桥接之外,OpenStack 启动了一个 DHCP 服务器 (dnsmasq) 来为虚拟机实例从指定子网中分配 IP 地址。虚拟机实例的 IP 地址由网络管理员从指定的子网中分配。

类似于扁平化模式,所有的实例都被附加到计算节点的单个桥接上。此外,DHCP 服务器与 nova-network 根据单/多主机模式配置实例。在这个模式下,计算节点做了更多的配置。它尝试桥接到一个 Ethernet 设备 (flat_interface,默认是 eth0)。对于每个实例,计算节点分配一个固定 IP 地址并为虚拟机将 dnsmasq 配置为 MAC ID 和 IP 地址。dnsmasq 不会参与 IP 地址的分配进程,它仅根据计算节点完成的映射来分发 IP。实例通过 dhcpdiscover 命令接收它们的固定 IP。这些 IP 没有分配到任何主机的网络接口,仅分配到虚拟机的宿主端接口。

在任意扁平化网络配置中,提供 nova-network 服务的主机负责从私有网络转发流量。它们也运行和配置 dnsmasq 作为一个 DHCP 服务器来监听这个桥接,一般在 IP 地址 10.0.0.1 (详情请看 DHCP server: dnsmasq ) 上。尽管有时并没有使用 NAT,计算节点也可以为每个网络决定 NAT 实体,例如网络被配置为所有的公共 IP,或如果硬件路由被使用 (这是一个高可用选项)。在这个情况下,主机需要配置 br100 并物理连接到任意其他托管的节点上。您必需设置 flat_network_bridge 选项或以桥接选项创建网络,以避免出现错误。计算节点为每个项目和项目的实例创建了 iptables 或 ebtables 实体,以防止 MAC ID 或 IP 地址欺骗和 ARP 中毒。

[注意]注意

在单节点扁平化 DHCP 模式下,您可以从 nova-network 节点上通过它们的固定 IP 地址 ping 虚拟机,但您不能从其他计算节点上 ping 到它们。这是符合预期的行为。

VLAN网络管理器

这是 OpenStack 计算节点的默认模式。在这个模式下,计算节点为每个租户创建一个 VLAN 和桥接。对于多机器的安装,VLAN 网络模式需要一个支持 VLAN 标签 (IEEE 802.1Q) 的转换器。租户得到私有 IP 的范围,它仅能从内部 VLAN 访问。为了用户可以在他们的租户下访问实例,需要创建一个指定的 VPN 实例 (名为 cloudpipe)。计算节点为用户生成一个证书和密钥,以访问 VPN 并自动启动 VPN。它为每个租户的实例提供了一个私有网络段,可以通过专有 VPN 连接从内部访问。在这个模式下,每个租户得到了他们自己的 VLAN、Linux 网络桥接和子网。

子网是由网络管理员指定的,并在需要时自动分配给租户。DHCP 服务器为每个 VLAN 启动以从分配给租户的子网传递 IP 地址给虚拟机实例。所有属于一个租户的实例被桥接到其租户的同一个 VLAN。OpenStack 计算节点在需要时创建 Linux 网络桥接和 VLAN。

这些网络管理器是可以并存的。然后,因为无法在给定的租户中选择网络的类型,所以不能够在单个的安装的计算中配置多个网络类型。

所有网络管理者都使用网络驱动配置网络。例如,Linux L3 驱动 (l3.pylinux_net.py),可以利用 iptablesroute 和其他网络管理设施,以及 libvirt 网络过滤设施。驱动没有绑定到任何特定的网络管理者上,所有的网络管理者使用同一个驱动。驱动通常仅在第一台实例在该主机上启动时初始化。

所有网络管理者在单主机或多主机模式中操作。这个选择非常影响网络的配置。在单主机模式下,单个 nova-network 服务为虚拟机提供一个默认网关并托管一个 DHCP 服务器 (dnsmasq)。在多主机模式下,每个计算节点运行自己的 nova-network 服务。在这两种情况下,所有虚拟机和互联网之间的流量流向 nova-network。每个模式都有优点和缺点。要了解更多与此相关的信息,请阅读 OpenStack 运维手册中的 网络拓扑 小节。

所有网络选项都需要在 OpenStack 物理节点之间已经配置好网络连通性。OpenStack 不会配置任何物理网络接口。所有网络管理者会自动创建虚拟机的虚拟接口。一些网络管理者也可以创建网络桥接,如 br100

内部网络接口用于与虚拟机交互。这个接口不应该在 OpenStack 安装之前附加 IP 地址,它仅作为一个构造服务,其实际端点为虚拟机和 dnsmasq。此外,内部网络接口必需是 promiscuous 模式,这样它就可以接收目标为虚拟机 MAC 地址的包,而不是主机的包。

所有机器必需有一个公共的和内部的网络接口 (由这些选项控制:public_interface 控制公有接口,flat_interfacevlan_interface 控制扁平化或 VLAN 内部网络接口)。本指南是指公有网络作为外部网络,而私有网络作为内部和租户网络。

对于flat和flat DHCP模式,使用命令nova network-create来创建网络:

$ nova network-create vmnet \
--fixed-range-v4 10.0.0.0/16 --fixed-cidr 10.0.20.0/24 --bridge br100

此例中使用了下列参数:

  • --fixed-range-v4- 指定网络子网。

  • --fixed-cidr指定了要分配的固定IP地址范围,且可以跟--fixed-range-v4参数。

  • --bridge指定了每台计算节点的网桥设备连接到此网络。

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page


loading table of contents...