第 4 章 规划 IP 地址的使用

一个 OpenStack 环境可能会需要使用比想象中更多的 IP 地址。本节的内容可以帮助您更准确地预测所需的地址数量,并介绍了它们需要在哪里被使用。

注意

VIP(也被称为 Virtual IP Addresses - 虚拟 IP 地址) - VIP 地址用来支持 HA 服务,它就是一个被多个控制器节点共享的 IP 地址。

4.1. 使用多个 VLAN

在计划您的 OpenStack 部署时,首先应该从一组子网开始,然后才能计划不同的地址需要被如何使用。当有了多个子网后,您就可以把不同系统间的网络数据进行分隔来组成 VLAN。例如,在一般情况下,管理网络流量和 API 网络流量不应该和处理 web 网络流量的系统共享相同的网络。另外,不同 VLAN 间的网络流量都需要通过一个路由器,这样就可以在路由器上设置防火墙来进一步控制网络流量的安全。

4.2. 隔离 VLAN 的网络数据

一般情况下,您需要为不同的网络类型分配不同的 VLAN。例如,您可以为每一个网络类型都分配一个它们自己的 VLAN。这样,只有 External 网络需要可以路由到外部的物理网络中。在 Red Hat Enterprise Linux OpenStack Platform 7 中,DHCP 服务由 director 提供。

注意

每个 OpenStack 部署不一定都需要本节中提到的所有 VLAN。例如,您的云用户不需要动态创建特定的虚拟网络,则不需要租户网络;如果您只希望所有虚拟机都直接连接到其它物理系统连接到的交换机时,您可能只需要把您的 Compute 节点直接连接到一个供应商网络中,从而使您的实例直接使用供应商网络。

  • Provisioning 网络 - 这个 VLAN 被专门用于使用 director 通过 PXE 引导实施新的节点。OpenStack Orchestration(heat)会在 overcloud 的裸机服务器上安装 OpenStack;它们被附加到物理网络上来从undercloud 系统中获得平台的安装镜像。
  • Internal API 网络 - Internal API 网络被用来处理 OpenStack 服务间的通讯,包括 API 通讯、RPC 消息数据以及数据库通讯。另外,这个网络还被用来处理控制器节点间的操作信息。在设计您的 IP 地址分配时,需要考虑到,每个 API 服务都需要自己的 IP 地址。以下的每个服务都需要一个 IP 地址:

    • vip-msg(ampq)
    • vip-keystone-int
    • vip-glance-int
    • vip-cinder-int
    • vip-nova-int
    • vip-neutron-int
    • vip-horizon-int
    • vip-heat-int
    • vip-ceilometer-int
    • vip-swift-int
    • vip-keystone-pub
    • vip-glance-pub
    • vip-cinder-pub
    • vip-nova-pub
    • vip-neutron-pub
    • vip-horizon-pub
    • vip-heat-pub
    • vip-ceilometer-pub
    • vip-swift-pub
注意

在使用高可用性功能时,Pacemaker 需要可以在不同的物理节点间移动 VIP 地址。

  • Storage(存储)网络 - 块存储、NFS、iSCSI 和其它存储。因为性能的原因,在理想情况下这个网络应该位于一个完全独立的物理以太网连接环境中。
  • Storage Management(存储管理)网络 - OpenStack Object Storage(swift)使用这个网络来在相关的副本节点中同步数据项。代理服务(proxy service)在用户请求和底层的存储层间起到一个中间接口的作用。这个代理会接收用户的请求,并找到所需的副本来获得所需的数据。使用 Ceph 作为后端的服务会通过 Storage Management 网络进行连接,因为它们不会和 Ceph 直接进行交流,而是使用前端的服务。请注意,RBD 驱动是个例外,它会直接连接到 Ceph。
  • 租户网络 - Neutron 为每个租户提供自己的网络。这可以通过使用 VLAN 隔离(VLAN segregation,每个租户网络都是一个网络 VLAN)实现,也可以使用 VXLAN 或 GRE 通道(tunneling)实现。每个租户网络的网络数据会被相互隔离,并都有一个相关联的 IP 子网。多个租户子网可以使用相同的地址。
  • External 网络 - 允许入站的网络流量到达相关实例,它使用 1 对 1 的 IP 地址映射把浮动 IP 地址和在租户网络中实际分配给实例的 IP 地址相关联。另外,还支持 OpenStack Dashboard(horizon)进行图形化的系统管理、OpenStack 服务的公共 API 以及对入站网络流量进行 SNAT 处理来把它们导向正确的目标。如果 external 网络使用私有 IP 地址(RFC-1918),还需要对来自于互联网的流量进行额外的 NAT 处理。
  • Provider(供应商)网络 - 实例可以使用这些网络附加到已存在的网络基础设施中。通过扁平化网络结构(flat networking)或 VLAN tag,您可以使用供应商网络直接映射到数据中心中的一个物理网络。这可以使一个实例共享相同的 2 层网络作为 OpenStack Networking 基础架构的一个外部系统。

4.3. IP 地址的消耗

以下系统会消耗您的 IP 地址分配范围内的 IP 地址:

  • Physical(物理)节点 - 每个物理 NIC 都需要一个 IP 地址;一般情况下,最好是每个物理 NIC 都只提供特定的功能。例如,管理网络有它自己专用的物理 NIC,NFS 网络也有自己专用的 NIC(有时,多个 NIC 连接到不同的交换机来提供冗余容错功能)。
  • 用于高可用性的虚拟 IP(VIP) - 控制器节点间共享的每个网络都需要 1 到 3 个 IP。

4.4. 虚拟网络

这些虚拟资源会消耗 OpenStack Networking 中的 IP 地址。它们被认为是云基础架构的本地资源,并不需要被外部物理网络中的系统访问:

  • Tenant(租户)网络 - 每个租户网络都需要一个子网来为实例分配 IP 地址。
  • 虚拟路由 - 每个插入到子网中的路由接口都需要一个 IP 地址。
  • 实例 - 每个实例都需要从它所在的租户子网中获得一个 IP 地址。如果实例有入站网络流量,则还需要从相关的外部网络中分配一个浮动 IP 地址。
  • Management(管理)网络流量 - 包括 OpenStack 服务和 API 的网络流量。在 Red Hat Enterprise Linux OpenStack Platform 7 中,所需虚拟 IP 地址的数量已被减小,所有服务将共享一组少量的 VIP。API、RPC 和数据库服务还在一个内部的 API VIP 上进行通讯。

4.5. 网络计划示例

这个例子分配了一组网络来运行 7 个子网,每个子网需要一定数量的地址:

表 4.1. 子网计划示例

子网名地址范围地址的数量子网掩码

Provisioning 网络

192.168.100.1 - 192.168.100.250

250

255.255.255.0

Internal API 网络

172.16.1.10 - 172.16.1.250

241

255.255.255.0

Storage

172.16.2.10 - 172.16.2.250

241

255.255.255.0

Storage Management

172.16.3.10 - 172.16.3.250

241

255.255.255.0

Tenant network (GRE/VXLAN)

172.19.4.10 - 172.16.4.250

241

255.255.255.0

External network(包括浮动 IP)

10.1.2.10 - 10.1.3.222

469

255.255.254.0

Provider 网络(基础架构)

10.10.3.10 - 10.10.3.250

241

255.255.252.0