第 10 章 部署多个 overcloud

重要

该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息

您可以使用一个 undercloud 节点部署并管理多个 overcloud。每个 overcloud 都是唯一的 heat 栈,不共享堆栈资源。如果环境中 undercloud 和 overcloud 的比率为 1:1 时会造成无法管理的 overclound 数量时,可以使用该方法。例如,Edge、多站点和多产品环境。

多 overcloud 情境中的 overcloud 环境是完全独立的,您可以使用 source 命令切换环境。如果您使用 Ironic 进行裸机置备,则所有 overcloud 都必须在同一置备网络中。如果无法使用同一置备网络,则可使用部署的服务器方法使用路由的网络部署多个 overcloud。在这种情况下,您必须确保 HostnameMap 参数中的值与每个 overcloud 的堆栈名称匹配。

基本流程如下:

部署 undercloud
正常部署 undercloud。有关更多信息,请参见 第 I 部分 “director 的安装和配置”
部署第一个 overcloud
正常部署第一个 overcloud。有关更多信息,请参见 第 II 部分 “基本的 overcloud 部署”
部署额外 overcloud
为新 overcloud 创建一组新环境文件。运行部署命令,指定核心 heat 模板以及新配置文件和新 stack 名称。

10.1. 部署额外 overcloud

在此示例中,overcloud-one 是已存在的 overcloud。完成以下步骤以部署新 overcloud overcloud-two

先决条件

开始部署额外 overcloud 之前,请确保您的环境包含以下配置:

  • 成功的 undercloud 和 overcloud 部署。
  • 可用于额外 overcloud 的节点。
  • 为额外 overcloud 自定义网络,使得每个 overcloud 在生成的堆栈中都有唯一的网络。

步骤

  1. 为您想部署的额外 overcloud 创建新目录:

    $ mkdir ~/overcloud-two
  2. 在新目录中,创建特定于额外 overcloud 要求的新环境文件,并从现有 overcloud 中复制所有相关环境文件:

    $ cp network-data.yaml ~/overcloud-two/network-data.yaml
    $ cp network-environment.yaml ~/overcloud-two/network-environment.yaml
  3. 根据新 overcloud 的规范修改环境文件。例如,现有 overcloud 的名称为 overcloud-one 并使用您在 network-data.yaml 环境文件中定义的 VLAN:

    - name: InternalApi
      name_lower: internal_api_cloud_1
      service_net_map_replace: internal_api
      vip: true
      vlan: 20
      ip_subnet: '172.17.0.0/24'
      allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}]
      ipv6_subnet: 'fd00:fd00:fd00:2000::/64'
      ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}]
      mtu: 1500
    - name: Storage
      ...

    新 overcloud 的名称为 overcloud-two 并使用不同的 VLAN。编辑 ~/overcloud-two/network-data.yaml 环境文件并包括每个子网的新 VLAN ID。您还必须定义一个唯一的 name_lower 值,并将 service_net_map_replace 属性设置为您要替换的网络名称:

    - name: InternalApi
      name_lower: internal_api_cloud_2
      service_net_map_replace: internal_api
      vip: true
      vlan: 21
      ip_subnet: '172.21.0.0/24'
      allocation_pools: [{'start': '172.21.0.4', 'end': '172.21.0.250'}]
      ipv6_subnet: 'fd00:fd00:fd00:2001::/64'
      ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2001::10', 'end': 'fd00:fd00:fd00:2001:ffff:ffff:ffff:fffe'}]
      mtu: 1500
    - name: Storage
      ...
  4. 修改 ~/overcloud-two/network-environment.yaml 文件中的以下参数:

    • ExternalNetValueSpecs 参数的 {'provider:physical_network'} 属性中输入一个唯一值,使得 overcloud-two 具有不同的外部网络,并使用 'provider:network_type' 属性定义网络类型。
    • ExternalInterfaceDefaultRoute 参数设置为外部网络网关的 IP 地址,使 overcloud 拥有外部访问权限。
    • DnsServers 参数设置为 DNS 服务器的 IP 地址,使 overcloud 能够到达 DNS 服务器。

      parameter_defaults:
        ...
        ExternalNetValueSpecs: {'provider:physical_network': 'external_2', 'provider:network_type': 'flat'}
        ExternalInterfaceDefaultRoute: 10.0.10.1
        DnsServers:
          - 10.0.10.2
        ...
  5. 运行 openstack overcloud deploy 命令。使用 --templates 选项指定核心 heat 模板集,使用 --stack 选项指定新 stack 名称,并从 ~/overcloud-two 目录指定所有新环境文件:

    $ openstack overcloud deploy --templates \
        --stack overcloud-two \
        ...
        -n ~/overcloud-two/network-data.yaml \
        -e ~/overcloud-two/network-environment.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
        ...

每个 overcloud 都有一个唯一的凭据文件。在此示例中,部署过程为 overcloud-one 创建 overcloud-onerc,为 overcloud-two 创建 overcloud-tworc。要与任一 overcloud 交互,必须获取正确的凭据文件。例如,要获取第一个 overcloud 的凭据,可运行以下命令:

$ source overcloud-onerc