第 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 在生成的堆栈中都有唯一的网络。
步骤
为您想部署的额外 overcloud 创建新目录:
$ mkdir ~/overcloud-two
在新目录中,创建特定于额外 overcloud 要求的新环境文件,并从现有 overcloud 中复制所有相关环境文件:
$ cp network-data.yaml ~/overcloud-two/network-data.yaml $ cp network-environment.yaml ~/overcloud-two/network-environment.yaml
根据新 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 ...
修改
~/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 ...
-
在
运行
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