spine Leaf Networking
使用 Red Hat OpenStack Platform director 配置路由的 spine-leaf 网络
OpenStack Documentation Team
rhos-docs@redhat.com摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
使用直接文档反馈(DDF)功能
使用 添加反馈 DDF 功能,用于特定句子、段落或代码块上的直接注释。
- 以 Multi-page HTML 格式查看文档。
- 请确定您看到文档右上角的 反馈 按钮。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点 添加反馈。
- 在添加反馈项中输入您的意见。
- 可选:添加您的电子邮件地址,以便文档团队可以联系您以讨论您的问题。
- 点 Submit。
第 1 章 spine-leaf networking 简介
以下章节提供有关为 Red Hat OpenStack Platform 环境构建 spine-leaf network topology 的信息。这包括完整的端到端场景和示例文件,以帮助在您自己的环境中复制更广泛的网络拓扑。
1.1. spine-leaf networking
Red Hat OpenStack Platform 具有可组合的网络架构,可用于将您的网络适应路由的 spine-leaf Data Center 拓扑。在路由 spine-leaf 的实际应用中,leaf 代表在数据中心机架中以可组合计算或存储角色代表,如图 1.1 所示,"Routed spine-leaf example"。Leaf 0 机架具有一个 undercloud 节点、控制器节点和 Compute 节点。可组合网络将呈现到节点,后者已分配给可组合角色。下图显示了以下配置:
-
存储租用网络将出现在 Ceph 存储和 Compute 节点上。 -
NetworkLeaf代表您要构成的所有网络的示例。
图 1.1. 路由 spine-leaf 示例

1.2. spine-leaf network topology
spine-leaf 场景利用 OpenStack Networking(neutron)功能定义单个网络段内的多个子网。每个网络都使用充当 Leaf 0 的基础网络。director 将 Leaf 1 和 Leaf 2 子网创建为主网络的片段。
这种情境使用以下网络:
表 1.1. leaf 0 Networks(基础网络)
| Network | 附加角色 | 子网 |
|---|---|---|
| provisioning / Ctlplane / Leaf0 | controller, ComputeLeaf0, CephStorageLeaf0 | 192.168.10.0/24 |
| 存储 | controller, ComputeLeaf0, CephStorageLeaf0 | 172.16.0.0/24 |
| StorageMgmt | controller, CephStorageLeaf0 | 172.17.0.0/24 |
| InternalApi | controller, ComputeLeaf0 | 172.18.0.0/24 |
| 租户 [1] | controller, ComputeLeaf0 | 172.19.0.0/24 |
| 外部 | Controller | 10.1.1.0/24 |
[1]租户网络也称为项目网络。
表 1.2. leaf 1 Networks
| Network | 附加角色 | 子网 |
|---|---|---|
| provisioning / Ctlplane / Leaf1 | ComputeLeaf1, CephStorageLeaf1 | 192.168.11.0/24 |
| StorageLeaf1 | ComputeLeaf1, CephStorageLeaf1 | 172.16.1.0/24 |
| StorageMgmtLeaf1 | CephStorageLeaf1 | 172.17.1.0/24 |
| InternalApiLeaf1 | ComputeLeaf1 | 172.18.1.0/24 |
| TenantLeaf1 [1] | ComputeLeaf1 | 172.19.1.0/24 |
[1]租户网络也称为项目网络。
表 1.3. leaf 2 Networks
| Network | 附加角色 | 子网 |
|---|---|---|
| provisioning / Ctlplane / Leaf2 | ComputeLeaf2, CephStorageLeaf2 | 192.168.12.0/24 |
| StorageLeaf2 | ComputeLeaf2, CephStorageLeaf2 | 172.16.2.0/24 |
| StorageMgmtLeaf2 | CephStorageLeaf2 | 172.17.2.0/24 |
| InternalApiLeaf2 | ComputeLeaf2 | 172.18.2.0/24 |
| TenantLeaf2 [1] | ComputeLeaf2 | 172.19.2.0/24 |
[1]租户网络也称为项目网络。
图 1.2. spine-leaf network topology

1.3. spine-leaf requirements
要在具有 L3 路由架构的网络中部署 overcloud,请完成以下步骤:
- layer-3 路由
- 配置网络基础架构的路由,以启用不同 L2 片段之间的流量。您可以静态或动态配置此路由。
- DHCP-Relay
-
每个不是 undercloud 本地的 L2 片段必须提供
dhcp-relay。您必须在连接 undercloud 的 provisioning 网络段上将 DHCP 请求转发到 undercloud。
undercloud 使用两个 DHCP 服务器。个用于裸机节点内省,另一个用于部署 overcloud 节点。确保读取 DHCP 转发配置,以便在配置 dhcp-relay 时了解要求。
1.4. spine-leaf limitations
- 一些角色(如 Controller 角色)使用虚拟 IP 地址和集群。这个功能后面的机制需要在这些节点间进行 L2 网络连接。您必须将这些节点放置在同一 leaf leaf 中。
- 类似限制适用于 Networker 节点。网络服务使用虚拟路由器冗余协议(VRRP)在网络中实现高度可用的默认路径。由于 VRRP 使用虚拟路由器 IP 地址,所以您必须将 master 节点和备份节点连接到相同的 L2 网络片段。
- 当使用带有 VLAN 分段的租户或提供商网络时,您必须在所有 Networker 和 Compute 节点之间共享特定的 VLAN。
可以使用多组 Networker 节点来配置网络服务。每个网络节点组共享其网络的路由,VRRP 在每组 Networker 节点中提供高度可用的默认路径。在这种配置中,共享网络的所有网络节点都必须位于同一 L2 网络段中。
第 2 章 在 undercloud 中配置路由 spine-leaf
本节介绍如何配置 undercloud 以使用可组合网络容纳路由的 spine-leaf 的用例。
2.1. 配置 spine leaf provisioning 网络
要为 spine leaf 基础架构配置 provisioning 网络,请编辑 undercloud.conf 文件并设置以下步骤中包含的相关参数。
流程
-
以
stack用户的身份登录 undercloud。 如果您还没有
undercloud.conf文件,请复制示例模板文件:[stack@director ~]$ cp /usr/share/python-tripleoclient/undercloud.conf.sample ~/undercloud.conf
-
编辑
undercloud.conf文件。 在
[DEFAULT]部分中设置以下值:将
local_ip设置为leaf0上的 undercloud IP:local_ip = 192.168.10.1/24
将
undercloud_public_host设置为面向 undercloud 的 IP 地址的外部:undercloud_public_host = 10.1.1.1
将
undercloud_admin_host设置为 undercloud 的管理 IP 地址。这个 IP 地址通常位于 leaf0 中:undercloud_admin_host = 192.168.10.2
将
local_interface设置为本地网络桥接的接口:local_interface = eth1
将
enable_routed_networks设置为true:enable_routed_networks = true
使用
subnets参数定义子网列表。在路由的 spine 和 leaf 中为每个 L2 片段定义一个子网:subnets = leaf0,leaf1,leaf2
使用
local_subnet参数指定与 undercloud 的本地物理 L2 片段关联的子网:local_subnet = leaf0
设置
undercloud_nameservers的值。undercloud_nameservers = 10.11.5.19,10.11.5.20
提示您可以通过在 /etc/resolv.conf 中查找用于 undercloud 名称服务器的 DNS 服务器的当前 IP 地址。
为您在
subnets参数中定义的每个子网创建一个新部分:[leaf0] cidr = 192.168.10.0/24 dhcp_start = 192.168.10.10 dhcp_end = 192.168.10.90 inspection_iprange = 192.168.10.100,192.168.10.190 gateway = 192.168.10.1 masquerade = False [leaf1] cidr = 192.168.11.0/24 dhcp_start = 192.168.11.10 dhcp_end = 192.168.11.90 inspection_iprange = 192.168.11.100,192.168.11.190 gateway = 192.168.11.1 masquerade = False [leaf2] cidr = 192.168.12.0/24 dhcp_start = 192.168.12.10 dhcp_end = 192.168.12.90 inspection_iprange = 192.168.12.100,192.168.12.190 gateway = 192.168.12.1 masquerade = False
-
保存
undercloud.conf文件。 运行 undercloud 安装命令:
[stack@director ~]$ openstack undercloud install
此配置会在 provisioning 网络或 control plane 上创建三个子网。overcloud 使用每个网络在各个各自的树内置备系统。
为确保正确中继到 undercloud 的 DHCP 请求,您可能需要配置 DHCP 转发。
2.2. 配置 DHCP 转发
您可以在连接到您要转发请求的远程网络片段的交换机、路由器或服务器中运行 DHCP 转发服务。
不要在 undercloud 上运行 DHCP 转发服务。
undercloud 在 provisioning 网络中使用两个 DHCP 服务器:
- 内省 DHCP 服务器。
- 置备 DHCP 服务器。
您必须配置 DHCP 转发,以将 DHCP 请求转发到 undercloud 上的两个 DHCP 服务器。
您可以将 UDP 广播与支持它的设备使用,将 DHCP 请求中继到 undercloud 置备网络连接的 L2 网络段。另外,您可以使用 UDP 单播,将 DHCP 请求中继到特定的 IP 地址。
在特定设备类型上配置 DHCP 转发超出了本文档的范围。作为参考,此文档使用 ISC DHCP 软件中的实施提供 DHCP 转发配置示例。如需更多信息,请参阅 man page dhcrelay(8)。
某些转发(特别是转发为 DHCPv6 地址)需要 DHCP 选项 79,并且转发不会通过原始 MAC 地址。如需更多信息,请参阅 RFC6939。
广播 DHCP 转发
此方法使用 UDP 广播流量将 DHCP 请求中继到 DHCP 服务器或服务器所在的 L2 网络段中。网络片段中的所有设备都会接收广播流量。使用 UDP 广播时,undercloud 上的两个 DHCP 服务器都会接收中继的 DHCP 请求。根据实现,您可以通过指定接口或 IP 网络地址来配置:
- Interface
- 指定连接到转发 DHCP 请求的 L2 网络片段的接口。
- IP 网络地址
- 指定转发 DHCP 请求的 IP 网络的网络地址。
单播 DHCP 转发
此方法使用 UDP 单播流量转发 DHCP 请求到特定的 DHCP 服务器。当使用 UDP 单播时,您需要配置一个设备,这个设备为转发 DHCP 请求进行转发到在 undercloud 中进行内省的接口所分配的 IP地址,以及 OpenStack Networking (neutron) 服务创建用于为 ctlplane 网络托管 DHCP 服务的网络命名空间的 IP 地址。
用于内省的接口是 undercloud.conf 文件中的 inspection_interface 定义的接口。如果没有设置此参数,undercloud 的默认接口是 br-ctlplane。
通常,将 br-ctlplane 接口用于内省。您在 undercloud.conf 文件中定义为 local_ip 的 IP 地址位于 br-ctlplane 接口上。
分配给 Neutron DHCP 命名空间的 IP 地址是您在 undercloud.conf 文件中为 local_subnet 配置的第一个地址。IP 范围中的第一个地址是您作为 dhcp_start 定义的地址。例如,如果您使用以下配置,192.168.10.10 是 IP 地址:
[DEFAULT] local_subnet = leaf0 subnets = leaf0,leaf1,leaf2 [leaf0] cidr = 192.168.10.0/24 dhcp_start = 192.168.10.10 dhcp_end = 192.168.10.90 inspection_iprange = 192.168.10.100,192.168.10.190 gateway = 192.168.10.1 masquerade = False
DHCP 命名空间的 IP 地址会被自动分配。在大多数情况下,这个地址是 IP 范围中的第一个地址。要验证这种情况,请在 undercloud 上运行以下命令:
$ openstack port list --device-owner network:dhcp -c "Fixed IP Addresses" +----------------------------------------------------------------------------+ | Fixed IP Addresses | +----------------------------------------------------------------------------+ | ip_address='192.168.10.10', subnet_id='7526fbe3-f52a-4b39-a828-ec59f4ed12b2' | +----------------------------------------------------------------------------+ $ openstack subnet show 7526fbe3-f52a-4b39-a828-ec59f4ed12b2 -c name +-------+--------+ | Field | Value | +-------+--------+ | name | leaf0 | +-------+--------+
dhcrelay 配置示例
在以下示例中,dhcp 软件包中的 dhcrelay 命令使用以下配置:
-
用于转发传入 DHCP 请求的接口:
eth1、eth2和eth3。 -
在网络段中接口 undercloud DHCP 服务器已连接到:
eth0。 -
用于内省的 DHCP 服务器正在侦听 IP 地址:192.168
.10.1。 -
用于置备的 DHCP 服务器在 IP 地址
192.168.10.10上侦听。
这会生成以下 dhcrelay 命令:
dhcrelay版本 4.2.x:$ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \ -i eth0 -i eth1 -i eth2 -i eth3
dhcrelay版本 4.3.x 及更新的版本:$ sudo dhcrelay -d --no-pid 192.168.10.10 192.168.10.1 \ -iu eth0 -id eth1 -id eth2 -id eth3
Cisco IOS 路由交换机配置示例
本例使用以下 Cisco IOS 配置来执行以下任务:
- 配置用于 provisioning 网络的 VLAN。
- 添加 leaf 的 IP 地址。
-
将 UDP 和 BOOTP 请求转发到侦听 IP 地址的内省 DHCP 服务器:
192.168.10.1。 -
将 UDP 和 BOOTP 请求转发到侦听 IP 地址
192.168.10.10的置备 DHCP 服务器。
interface vlan 2 ip address 192.168.24.254 255.255.255.0 ip helper-address 192.168.10.1 ip helper-address 192.168.10.10 !
现在您已经配置了 provisioning 网络,您可以配置剩余的 overcloud leaf 网络。
2.3. 为叶节点设计角色
每个 leaf 网络中的每个角色都需要一种类别和角色分配,以便您可以将节点标记到其各自叶型。完成以下步骤以创建每个类别并将每个类别分配给角色。
流程
Source
stackrc文件:[stack@director ~]$ source ~/stackrc
检索节点列表以标识其 UUID:
(undercloud)$ openstack baremetal node list
使用标识其 leaf network 和 role 的自定义资源类为角色分配您要指定的每个裸机节点。
openstack baremetal node set \ --resource-class baremetal.<ROLE> <node>
- 将 <ROLE> 替换为标识角色的名称。
将 <node> 替换为裸机节点的 ID。
例如,输入以下命令将带有 UUID 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 的节点标记到 Leaf2 上的 Compute 角色:
(undercloud)$ openstack baremetal node set \ --resource-class baremetal.COMPUTE-LEAF2 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
-
如果还没有定义,请将每个角色添加到
overcloud-baremetal-deploy.yaml中。 为角色定义您要分配给节点的资源类:
- name: <role> count: 1 defaults: resource_class: baremetal.<ROLE>- 将 <role> 替换为角色的名称。
- 将 <ROLE> 替换为标识角色的名称。
在 baremetal-deploy.yaml 文件中,定义您要分配给角色节点的资源类型。指定您要部署的角色、配置集、数量和相关网络:
- name: <role> count: 1 hostname_format: <role>-%index% ansible_playbooks: - playbook: bm-deploy-playbook.yaml defaults: resource_class: baremetal.<ROLE> profile: control networks: - network: external subnet: external_subnet - network: internal_api subnet: internal_api_subnet01 - network: storage subnet: storage_subnet01 - network: storage_mgmt subnet: storage_mgmt_subnet01 - network: tenant subnet: tenant_subnet01 network_config: template: templates/multiple_nics/multiple_nics_dvr.j2 default_route_network: - external- 将 <role> 替换为角色的名称。
将 <ROLE> 替换为标识角色的名称。
注意您必须在
/home/stack/<stack> 中,为要部署的每个堆栈创建一个baremetal-deploy.yaml环境文件。
2.4. 将裸机节点端口映射到 control plane 网络片段
要在 L3 路由网络上启用部署,您必须在裸机端口上配置 physical_network 字段。每个裸机端口都与 OpenStack Bare Metal(ironic)服务中的裸机节点关联。物理网络名称是 undercloud 配置中的 subnets 选项中包含的名称。
在 undercloud.conf 文件中指定为 local_subnet 的子网名称始终命名为 ctlplane。
流程
Source
stackrc文件:$ source ~/stackrc
检查裸机节点:
$ openstack baremetal node list
确保裸机节点处于
注册或可管理状态。如果裸机节点没有处于这些状态之一,则 baremetal 端口上设置physical_network属性的命令会失败。要将所有节点设置为manageable状态,请运行以下命令:$ for node in $(openstack baremetal node list -f value -c Name); do openstack baremetal node manage $node --wait; done
检查哪些 baremetal 端口与哪个裸机节点关联:
$ openstack baremetal port list --node <node-uuid>
为端口设置
physical-network参数。在以下示例中,在配置中定义三个子网:leaf0,leaf1, 和leaf2。local_subnet 是leaf0。由于local_subnet的物理网络始终为ctlplane,因此连接到leaf0的 baremetal 端口使用 ctlplane。剩余的端口使用其他 leaf 名称:$ openstack baremetal port set --physical-network ctlplane <port-uuid> $ openstack baremetal port set --physical-network leaf1 <port-uuid> $ openstack baremetal port set --physical-network leaf2 <port-uuid>
在部署 overcloud 前内省节点。包含
--all-manageable和--provide选项来将节点设置为可供部署使用:$ openstack overcloud node introspect --all-manageable --provide
2.5. 添加新的树到 spine-leaf provisioning 网络中
在增加可添加新物理站点的网络容量时,您可能需要在 Red Hat OpenStack Platform spine-leaf provisioning 网络中添加新叶和对应的子网。在 overcloud 上置备 leaf 时,会使用对应的 undercloud leaf。
先决条件
- 您的 RHOSP 部署使用 spine-leaf 网络拓扑。
流程
- 以 stack 用户身份登录 undercloud 主机。
提供 undercloud 凭证文件:
$ source ~/stackrc
在
/home/stack/undercloud.conf文件中,执行以下操作:找到
subnets参数,并为您要添加的 leaf 添加新子网。子网代表了路由的 spine 和 leaf 中的 L2 片段:
示例
在本例中,为新的leaf(
leaf3)添加新的子网(leaf3):subnets = leaf0,leaf1,leaf2,leaf3
为添加的子网创建一个部分。
示例
在本例中,为新子网添加了
[leaf3]部分(leaf3):[leaf0] cidr = 192.168.10.0/24 dhcp_start = 192.168.10.10 dhcp_end = 192.168.10.90 inspection_iprange = 192.168.10.100,192.168.10.190 gateway = 192.168.10.1 masquerade = False [leaf1] cidr = 192.168.11.0/24 dhcp_start = 192.168.11.10 dhcp_end = 192.168.11.90 inspection_iprange = 192.168.11.100,192.168.11.190 gateway = 192.168.11.1 masquerade = False [leaf2] cidr = 192.168.12.0/24 dhcp_start = 192.168.12.10 dhcp_end = 192.168.12.90 inspection_iprange = 192.168.12.100,192.168.12.190 gateway = 192.168.12.1 masquerade = False [leaf3] cidr = 192.168.13.0/24 dhcp_start = 192.168.13.10 dhcp_end = 192.168.13.90 inspection_iprange = 192.168.13.100,192.168.13.190 gateway = 192.168.13.1 masquerade = False
-
保存
undercloud.conf文件。 重新安装 undercloud:
$ openstack undercloud install
其他资源
第 3 章 备用置备网络方法
本节介绍可用于配置置备网络的其他方法,以使用可组合网络容纳路由的 spine-leaf。
3.1. VLAN Provisioning 网络
在本例中,director 通过置备网络部署新的 overcloud 节点,并在 L3 拓扑中使用 VLAN 隧道。如需更多信息,请参阅 图 3.1、"VLAN 置备网络拓扑"。如果使用 VLAN 调配网络,则 director DHCP 服务器可以将 DHCPOFFER 广播发送到任何leaf。要建立此隧道,在顶级Rack(ToR)leaf 交换机之间中继一个 VLAN。在下图中,StorageLeaf 网络向 Ceph 存储和 Compute 节点显示; NetworkLeaf 代表您要构成的所有网络的示例。
图 3.1. VLAN 置备网络拓扑

3.2. VXLAN Provisioning 网络
在本例中,director 通过置备网络部署新的 overcloud 节点,并使用 VXLAN 隧道跨第 3 层拓扑进行 span。如需更多信息,请参阅 图 3.2、"VXLAN 置备网络拓扑"。如果使用 VXLAN 调配网络,则 director DHCP 服务器可以将 DHCPOFFER 广播发送到任何leaf。要建立此隧道,在顶级Rack(ToR)leaf switch 上配置 VXLAN 端点。
图 3.2. VXLAN 置备网络拓扑

第 4 章 配置 overcloud
使用 Red Hat OpenStack Platform (RHOSP) director 在 RHOSP overcloud 中安装和配置 spine leaf 网络。高级别步骤有:
4.1. 定义叶网络
Red Hat OpenStack Platform (RHOSP) director 从您构建的 YAML 格式的自定义网络定义文件创建 overcloud leaf 网络。此自定义网络定义文件列出了每个可组合网络及其属性,还定义每个叶所需的子网。
完成以下步骤以创建 YAML 格式的自定义网络定义文件,该文件包含 overcloud 上 spine-leaf 网络的规格。之后,置备过程会从网络定义文件创建一个 heat 环境文件,该文件将在部署 RHOSP overcloud 时包括。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
在
/home/stack下创建一个templates目录:$ mkdir /home/stack/templates
通过将默认模板 route
-networks.yaml复制到您的templates目录中,使用默认模板 route-networks.yaml 模板作为基础来为环境创建自定义网络定义模板:示例
$ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/\ routed-networks.yaml \ /home/stack/templates/spine-leaf-networks-data.yaml
编辑网络定义模板的副本,以定义每个基本网络和对应的叶子网作为可组合网络项目。
提示如需更多信息,请参阅 Director 安装和使用指南中的 网络定义文件配置选项。
示例
以下示例演示了如何定义内部 API 网络及其叶网络:
- name: InternalApi name_lower: internal_api vip: true mtu: 1500 subnets: internal_api_subnet: ip_subnet: 172.16.32.0/24 gateway_ip: 172.16.32.1 allocation_pools: - start: 172.16.32.4 end: 172.16.32.250 vlan: 20 internal_api_leaf1_subnet: ip_subnet: 172.16.33.0/24 gateway_ip: 172.16.33.1 allocation_pools: - start: 172.16.33.4 end: 172.16.33.250 vlan: 30 internal_api_leaf2_subnet: ip_subnet: 172.16.34.0/24 gateway_ip: 172.16.34.1 allocation_pools: - start: 172.16.34.4 end: 172.16.34.250 vlan: 40
您需要在自定义网络定义模板中定义 Control Plane 网络,因为 undercloud 已创建了这些网络。但是,您必须手动设置参数,以便 overcloud 能够相应地配置 NIC。如需更多信息,请参阅在 undercloud 中配置路由 spine-leaf。
目前,网络子网和 allocation_pools 值没有自动验证。确保您以一致方式定义这些值,并且与现有网络没有冲突。
添加 vip 参数,并为托管基于 Controller 服务的网络将值设置为 true。在本例中,Internal Api 网络包含这些服务。
后续步骤
- 请注意您创建的自定义网络定义文件的路径和文件名。当您为 RHOSP overcloud 置备网络时,您将需要此信息。
- 继续下一步 定义叶角色并附加网络。
其他资源
- Director 安装和使用指南中的 网络定义文件配置选项
4.2. 定义叶角色和附加网络
Red Hat OpenStack Platform (RHOSP) director 为每个叶创建一个可组合角色,并从您构建的角色模板中将可组合网络附加到每个对应角色。首先从 director 核心模板复制默认 Controller、Compute 和 Ceph Storage 角色,并修改它们以满足您的环境需求。创建所有单独的角色后,您将运行 openstack overcloud roles generate 命令将它们连接到一个大型自定义角色数据文件。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
将 RHOSP 附带的 Controller、Compute 和 Ceph Storage 角色的默认角色复制到
stack用户的主目录。重命名文件以反映它们是叶 0:$ cp /usr/share/openstack-tripleo-heat-templates/roles/Controller.yaml ~/roles/Controller0.yaml $ cp /usr/share/openstack-tripleo-heat-templates/roles/Compute.yaml ~/roles/Compute0.yaml $ cp /usr/share/openstack-tripleo-heat-templates/roles/CephStorage.yaml ~/roles/CephStorage0.yaml
将叶 0 文件复制到您的叶 1 和叶 2 文件的基础:
$ cp ~/roles/Compute0.yaml ~/roles/Compute1.yaml $ cp ~/roles/Compute0.yaml ~/roles/Compute2.yaml $ cp ~/roles/CephStorage0.yaml ~/roles/CephStorage1.yaml $ cp ~/roles/CephStorage0.yaml ~/roles/CephStorage2.yaml
编辑每个文件中的参数,使其与对应的叶参数一致。
提示有关角色数据模板中各种参数的详情,请参考 Director 安装和使用指南中的 检查 角色参数。
Example - ComputeLeaf0
- name: ComputeLeaf0 HostnameFormatDefault: '%stackname%-compute-leaf0-%index%'
示例 - CephStorageLeaf0
- name: CephStorageLeaf0 HostnameFormatDefault: '%stackname%-cephstorage-leaf0-%index%'
编辑叶 1 和叶 2 文件中的
network参数,使它们与对应的叶网络参数一致。Example - ComputeLeaf1
- name: ComputeLeaf1 networks: InternalApi: subnet: internal_api_leaf1 Tenant: subnet: tenant_leaf1 Storage: subnet: storage_leaf1示例 - CephStorageLeaf1
- name: CephStorageLeaf1 networks: Storage: subnet: storage_leaf1 StorageMgmt: subnet: storage_mgmt_leaf1注意这只适用于叶 1 和叶 2。leaf 0 的
network参数保留基本子网值,这些值是每个子网的小写名称和_subnet后缀。例如,leaf 0 的内部 API 是internal_api_subnet。完成角色配置后,运行
overcloud roles generate命令来生成完整的角色数据文件。示例
$ openstack overcloud roles generate --roles-path ~/roles -o spine-leaf-roles-data.yaml Controller Compute Compute1 Compute2 CephStorage CephStorage1 CephStorage2
这会创建一个自定义角色数据文件,其中包含每个对应叶网络的所有自定义角色。
后续步骤
-
请注意
overcloud 角色 generate 命令输出的自定义角色数据文件的路径和文件名。部署 overcloud 时,您将需要此信息。 - 继续下一步,为叶角色创建自定义 NIC 配置。
其他资源
- 检查 Director 安装和使用指南中的 角色参数
4.3. 为叶角色创建自定义 NIC 配置
Red Hat OpenStack Platform (RHOSP) director 创建的每个角色都需要一个唯一的 NIC 配置。完成以下步骤以创建一组自定义 NIC 模板和一个自定义环境文件,用于将自定义模板映射到对应的角色。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。 - 您有一个自定义网络定义文件。
- 您有一个自定义角色数据文件。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
复制其中一个默认 NIC 模板中的内容,以用作 NIC 配置的自定义模板的基础。
示例
在本例中,
single-nic-vlansNIC 模板被复制,它将用作 NIC 配置的自定义模板的基础:$ cp -r /usr/share/ansible/roles/tripleo_network_config/\ templates/single-nic-vlans/* /home/stack/templates/spine-leaf-nics/.
编辑您在上一步中复制的 NIC 模板中的每个 NIC 配置,以反映您的 spine-leaf 拓扑的具体内容。
示例
{% set mtu_list = [ctlplane_mtu] %} {% for network in role_networks %} {{ mtu_list.append(lookup('vars', networks_lower[network] ~ '_mtu')) }} {%- endfor %} {% set min_viable_mtu = mtu_list | max %} network_config: - type: ovs_bridge name: {{ neutron_physical_bridge_name }} mtu: {{ min_viable_mtu }} use_dhcp: false dns_servers: {{ ctlplane_dns_nameservers }} domain: {{ dns_search_domains }} addresses: - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }} routes: {{ ctlplane_host_routes }} members: - type: interface name: nic1 mtu: {{ min_viable_mtu }} # force the MAC address of the bridge to this interface primary: true {% for network in role_networks %} - type: vlan mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} addresses: - ip_netmask: {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} {% endfor %}提示如需更多信息,请参阅 Director 安装和使用 指南中的 自定义网络接口模板。
创建自定义环境文件,如
spine-leaf-nic-roles-map.yaml,其中包含将自定义 NIC 模板映射到每个自定义角色的parameter_defaults部分。parameter_defaults: %%ROLE%%NetworkConfigTemplate: <path_to_ansible_jinja2_nic_config_file>
示例
parameter_defaults: Controller0NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' Controller1NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' Controller2NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' ComputeLeaf0NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' ComputeLeaf1NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' ComputeLeaf2NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' CephStorage0NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' CephStorage1NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' CephStorage2NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2'
后续步骤
- 请注意自定义 NIC 模板的路径和文件名,以及将自定义 NIC 模板映射到每个自定义角色的自定义环境文件。部署 overcloud 时,您将需要此信息。
- 继续下一步 映射单独的网络并设置 control plane 参数。
其他资源
- Director 安装和使用指南中的 自定义网络接口模板
4.4. 映射单独的网络和设置 control plane 参数
在 spine leaf 架构中,每个叶都通过该叶上的特定网桥或 VLAN 路由流量,这通常是边缘计算场景的情况。因此,您必须更改 Red Hat OpenStack Platform (RHOSP) Controller 和 Compute 网络配置使用 br-ex 网桥的默认映射。
RHOSP director 在创建 undercloud 期间创建 control plane 网络。但是,overcloud 需要访问每个 leaf 的 control plane。要启用此访问权限,必须在部署中定义其他参数。
完成以下步骤以创建一个包含独立网络映射的自定义网络环境文件,并为 overcloud 设置 control plane 网络的访问权限。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
在新的自定义环境文件中,如
spine-leaf-ctlplane.yaml,创建一个parameter_defaults部分,并为使用默认br-ex网桥的每个叶设置NeutronBridgeMappings参数。重要您创建的自定义环境文件的名称必须以
.yaml或.template结尾。对于扁平网络映射,列出
NeutronFlatNetworks参数中的每个叶,并为各个叶设置NeutronBridgeMappings参数:示例
parameter_defaults: NeutronFlatNetworks: leaf0,leaf1,leaf2 Controller0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller1Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller2Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute1Parameters: NeutronBridgeMappings: "leaf1:br-ex" Compute2Parameters: NeutronBridgeMappings: "leaf2:br-ex"提示如需更多信息,请参阅 Chapter 17。networking (neutron)参数 ( Overcloud 参数 指南)
对于 VLAN 网络映射,将
vlan添加到NeutronNetworkType,并使用NeutronNetworkVLANRanges,为叶网络映射 VLAN:示例
parameter_defaults: NeutronNetworkType: 'geneve,vlan' NeutronNetworkVLANRanges: 'leaf0:1:1000,leaf1:1:1000,leaf2:1:1000' Controller0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller1Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller2Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute1Parameters: NeutronBridgeMappings: "leaf1:br-ex" Compute2Parameters: NeutronBridgeMappings: "leaf2:br-ex"注意您可以在 spine-leaf 拓扑中使用扁平网络和 VLAN。
使用 <
role>ControlPlaneSubnet参数为每个 spine-leaf 网络添加 control plane 子网映射:示例
parameter_defaults: NeutronFlatNetworks: leaf0,leaf1,leaf2 Controller0Parameters: NeutronBridgeMappings: "leaf0:br-ex" ControllerControlPlaneSubnet: leaf0 Controller1Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller1ControlPlaneSubnet: leaf0 Controller2Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller2ControlPlaneSubnet: leaf0 Compute0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute0ControlPlaneSubnet: leaf0 CephStorage0Parameters: CephStorage0ControlPlaneSubnet: leaf0 Compute1Parameters: NeutronBridgeMappings: "leaf1:br-ex" Compute1ControlPlaneSubnet: leaf1 CephStorage1Parameters: CephStorage1ControlPlaneSubnet: leaf1 Compute2Parameters: NeutronBridgeMappings: "leaf2:br-ex" Compute2ControlPlaneSubnet: leaf2 CephStorage2Parameters: CephStorage2ControlPlaneSubnet: leaf2
后续步骤
- 记录您创建的自定义网络环境文件的路径和文件名。部署 overcloud 时,您将需要此信息。
- 继续下一步 为虚拟 IP 地址设置子网。
其他资源
- 第 17 章。networking (neutron)参数 ( Overcloud 参数 指南)
4.5. 为虚拟 IP 地址设置子网
Red Hat OpenStack Platform (RHOSP) Controller 角色通常为每个网络托管虚拟 IP (VIP)地址。默认情况下,RHOSP overcloud 从每个网络的基本子网获取 VIP,但 control plane 除外。control plane 使用 ctlplane-subnet,这是标准 undercloud 安装期间创建的默认子网名称。
在这个 spine-leaf 场景中,默认的基础调配网络是 leaf0 而不是 ctlplane-subnet。这意味着,您必须在 VipSubnetMap 参数中添加覆盖值以更改 control plane VIP 使用的子网。
另外,如果每个网络的 VIP 没有使用一个或多个网络的基本子网,您必须在 VipSubnetMap 参数中添加额外的覆盖,以确保 RHOSP director 在与 Controller 节点的 L2 网络段关联的子网中创建 VIP。
完成以下步骤以创建 YAML 格式的自定义网络 VIP 定义文件,该文件包含 overcloud 上 VIP 的覆盖。之后,置备过程会从部署 RHOSP overcloud 时包括的网络 VIP 定义文件创建一个 heat 环境文件。在运行 overcloud deploy 命令时,您还将使用您的网络 VIP 定义文件。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
在新的自定义网络 VIP 定义模板中,如
spine-leaf-vip-data.yaml,创建一个parameter_defaults部分,并根据您的要求添加VipSubnetMap参数。如果将
leaf0用于 provisioning-control plane 网络,请将ctlplaneVIP 重新映射到leaf0:parameter_defaults: VipSubnetMap: ctlplane: leaf0如果您将不同的叶用于多个 VIP,请设置 VIP 重新映射以满足这些要求。例如,使用以下代码片段配置
VipSubnetMap参数,将leaf1用于所有 VIP:parameter_defaults: VipSubnetMap: ctlplane: leaf1 redis: internal_api_leaf1 InternalApi: internal_api_leaf1 Storage: storage_leaf1 StorageMgmt: storage_mgmt_leaf1
后续步骤
- 请注意您创建的自定义网络 VIP 定义模板的路径和文件名。当您为 RHOSP overcloud 置备网络 VIP 时,稍后您将需要此信息。
- 继续执行下一步 置备 overcloud 的网络和 VIP。
其他资源
- 第 17 章。networking (neutron)参数 ( Overcloud 参数 指南)
4.6. 为 overcloud 置备网络和 VIP
Red Hat OpenStack Platform (RHOSP)置备过程从网络定义文件创建一个 heat 环境文件,该文件包含您的网络规格。如果使用 VIP,RHOSP 置备过程的工作方式相同: RHOSP 从包含 VIP 规格的 VIP 定义文件中创建一个 heat 环境文件。置备网络和 VIP 后,您将使用两个 heat 环境文件来部署 overcloud。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。 - 您有一个网络配置模板。
- 如果使用 VIP,则有一个 VIP 定义模板。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
使用之前创建的网络配置模板,置备 overcloud 网络,使用
--output选项命名overcloud network provision命令输出的文件:提示有关更多信息,请参阅 Director 安装和使用指南中的配置和使用 overcloud 网络定义。
示例
$ openstack overcloud network provision \ --output spine-leaf-networks-provisioned.yaml \ /home/stack/templates/spine_leaf_networks_data.yaml
重要您指定的输出文件的名称必须以
.yaml或.template结尾。使用之前创建的 VIP 定义文件来置备 overcloud VIP,使用
--output选项命名overcloud network provision命令输出的文件:$ openstack overcloud network vip provision \ --stack spine_leaf_overcloud \ --output spine-leaf-vips_provisioned.yaml \ /home/stack/templates/spine_leaf_vip_data.yaml
重要您指定的输出文件的名称必须以
.yaml或.template结尾。- 请注意生成的输出文件的路径和文件名。部署 overcloud 时,您将需要此信息。
验证
您可以使用以下命令确认命令创建了 overcloud 网络和子网:
$ openstack network list $ openstack subnet list $ openstack network show <network> $ openstack subnet show <subnet> $ openstack port list $ openstack port show <port>
将 <network>、<subnet> 和 <port> 替换为您要检查的网络、子网和端口的名称或 UUID。
后续步骤
- 如果使用预置备节点,请跳至 运行 overcloud 部署命令。
- 否则,继续执行 在 overcloud 上注册裸机节点的 下一步。
其他资源
- Director 安装和使用指南中的配置和使用 overcloud 网络定义
- Director 安装和使用指南中的 为 overcloud 配置和使用 网络 VIP
- 命令行界面参考中的 overcloud 网络置备
- 命令行界面参考中的 overcloud 网络 vip 置备
4.7. 在 overcloud 中注册裸机节点
注册您的物理机是置备裸机节点的三个步骤。Red Hat OpenStack Platform (RHOSP) director 需要一个自定义节点定义模板,用于指定物理机器的硬件和电源管理详情。您可以使用 JSON 或 YAML 格式创建此模板。将物理机注册为裸机节点后,您将内省它们,然后最后置备它们。
如果使用预置备节点,您可以跳过 overcloud 上的注册和内省裸机节点。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
在新节点定义模板中,如
barematal-nodes.yaml,创建一个物理机器列表来指定其硬件和电源管理详情。示例
nodes: - name: "node01" ports: - address: "aa:aa:aa:aa:aa:aa" physical_network: ctlplane local_link_connection: switch_id: 52:54:00:00:00:00 port_id: p0 cpu: 4 memory: 6144 disk: 40 arch: "x86_64" pm_type: "ipmi" pm_user: "admin" pm_password: "p@55w0rd!" pm_addr: "192.168.24.205" - name: "node02" ports: - address: "bb:bb:bb:bb:bb:bb" physical_network: ctlplane local_link_connection: switch_id: 52:54:00:00:00:00 port_id: p0 cpu: 4 memory: 6144 disk: 40 arch: "x86_64" pm_type: "ipmi" pm_user: "admin" pm_password: "p@55w0rd!" pm_addr: "192.168.24.206"提示有关模板参数值和 JSON 示例的更多信息,请参阅 Director 安装和使用指南中的 为 overcloud 注册节点。
验证模板格式和语法。
示例
$ openstack overcloud node import --validate-only ~/templates/\ baremetal-nodes.yaml
- 更正任何错误并保存节点定义模板。
将您的节点定义模板导入到 RHOSP director,将每个节点从模板注册到 director:
示例
$ openstack overcloud node import ~/baremetal-nodes.yaml
验证
节点注册和配置完成后,确认 director 已成功注册节点:
$ openstack baremetal node list
baremetal node list命令应包含导入的节点,状态应可以被管理。
后续步骤
- 继续下一步,检查 overcloud 上的裸机节点。
其他资源
- Director 安装和使用指南中的 为 overcloud 注册节点。
- 命令行界面参考中的 overcloud 节点导入
4.8. 在 overcloud 上内省裸机节点
将物理机器注册为裸机节点后,您可以使用 Red Hat OpenStack Platform (RHOSP) director 内省自动添加其硬件详情并为各个以太网 MAC 地址创建端口。在裸机节点上执行内省后,最终步骤是置备它们。
如果使用预置备节点,您可以跳过 overcloud 上的注册和内省裸机节点。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。 - 您已使用 RHOSP 为 overcloud 注册了裸机节点。
流程
-
以
stack用户身份登录 undercloud 主机。 提供 undercloud 凭证文件:
$ source ~/stackrc
运行 pre-introspection 验证组来检查内省要求:
$ validation run --group pre-introspection
- 查看验证报告的结果。
(可选)查看特定验证的详细输出:
$ validation history get --full <UUID>
将 <UUID> 替换为您要查看报告的特定验证 UUID。
重要FAILED验证不会阻止您部署或运行 RHOSP。但是,FAILED验证可能会显示生产环境中潜在的问题。检查所有节点的硬件属性:
$ openstack overcloud node introspect --all-manageable --provide
在一个单独的终端窗口中监控内省进度日志:
$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log
验证
- 内省完成后,所有节点都会变为 available 状态。
后续步骤
- 继续下一步,为 overcloud 置备裸机节点。
其他资源
- Director 安装和使用指南中的使用 director 内省来收集裸机节点硬件信息
- 命令行界面参考中的 overcloud 节点内省
4.9. 为 overcloud 置备裸机节点
要为 Red Hat OpenStack Platform (RHOSP)置备裸机节点,您可以定义要在 YAML 格式的节点定义文件中部署的裸机节点的数量和属性,并将 overcloud 角色分配给这些节点。您还定义节点的网络布局。
置备过程会从节点定义文件创建一个 heat 环境文件。此 heat 环境文件包含您在节点定义文件中配置的节点规格,包括节点数、预先节点放置、自定义镜像和自定义 NIC。当您部署 overcloud 时,请将此文件包括在部署命令中。置备过程还会为节点定义文件中每个节点或角色定义的所有网络置备端口资源。
如果使用预置备节点,您可以跳过 overcloud 上的置备裸机节点。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。 - 裸机节点已注册、内省,并可用于置备和部署。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
创建裸机节点定义文件,如
spine-leaf-baremetal-nodes.yaml,并为您要置备的每个角色定义节点数。示例
- name: Controller count: 3 defaults: networks: - network: ctlplane vif: true - network: external subnet: external_subnet - network: internal_api subnet: internal_api_subnet01 - network: storage subnet: storage_subnet01 - network: storage_mgmt subnet: storage_mgmt_subnet01 - network: tenant subnet: tenant_subnet01 network_config: template: /home/stack/templates/spine-leaf-nics/single-nic-vlans.j2 default_route_network: - external - name: Compute0 count: 1 defaults: networks: - network: ctlplane vif: true - network: internal_api subnet: internal_api_subnet02 - network: tenant subnet: tenant_subnet02 - network: storage subnet: storage_subnet02 network_config: template: /home/stack/templates/spine-leaf-nics/single-nic-vlans.j2 - name: Compute1 ...提示有关您可以设置裸机节点定义文件的属性的更多信息,请参阅 Director 安装和使用指南中的 为 overcloud 置备裸机节点。
使用
overcloud node provision命令调配 overcloud 裸机节点。示例
$ openstack overcloud node provision \ --stack spine_leaf_overcloud \ --network-config \ --output spine-leaf-baremetal-nodes-provisioned.yaml \ /home/stack/templates/spine-leaf-baremetal-nodes.yaml
重要您指定的输出文件的名称必须以
.yaml或.template结尾。在单独的终端中监控置备进度。当置备成功后,节点状态会从
available变为active:$ watch openstack baremetal node list
使用
metalsmith工具获取节点的统一视图,包括分配和端口:$ metalsmith list
- 请注意生成的输出文件的路径和文件名。部署 overcloud 时,您将需要此信息。
验证
确认节点与主机名关联:
$ openstack baremetal allocation list
后续步骤
- 继续下一步,部署启用了 spine-leaf 的 overcloud。
其他资源
- Director 安装和使用指南中的 为 overcloud 置备裸机节点
4.10. 部署启用了 spine-leaf 的 overcloud
部署 Red Hat OpenStack Platform (RHOSP) overcloud 的最后一步是运行 overcloud 部署命令。此命令使用输入您构建的所有用于代表 overcloud 蓝图的各种 overcloud 模板和环境文件。使用这些模板和环境文件,RHOSP director 会安装和配置您的 overcloud。
先决条件
-
访问
stack用户的 undercloud 主机和凭据。 -
您已执行本节前面步骤中列出的所有步骤,并且已编译所有各种 heat 模板和环境文件,以用作
overcloud 部署命令的输入。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
收集 overcloud 环境所需的自定义环境文件和自定义模板,以及 director 安装提供的未编辑 heat 模板文件,以及您创建的自定义文件。这应该包括以下文件:
您的自定义网络定义文件包含 overcloud 上 spine-leaf 网络的规格,如
spine-leaf-networks-data.yaml。如需更多信息,请参阅 定义叶网络。
您的自定义角色数据文件为每个叶定义角色,如
spine-leaf-roles.yaml。如需更多信息,请参阅 定义叶角色和附加网络
您的自定义环境文件包含每个角色的角色和自定义 NIC 模板映射,例如
spine-leaf-nic-roles-map.yaml。如需更多信息,请参阅为叶角色创建自定义 NIC 配置。
您的自定义网络环境文件包含单独的网络映射,并为 overcloud 设置 control plane 网络的访问权限,例如
spine-leaf-ctlplane.yaml如需更多信息,请参阅 映射单独的网络和设置 control plane 参数。
您的自定义网络 VIP 定义文件包含 overcloud 上 VIP 的覆盖,如
spine-leaf-vip-data.yaml。如需更多信息,请参阅为虚拟 IP 地址设置子网。
置备 overcloud 网络的输出文件,如
spine-leaf-networks-provisioned.yaml。有关更多信息,请参阅为 overcloud 置备网络和 VIP。
置备 overcloud VIP 的输出文件,如
spine-leaf-vips-provisioned.yaml。有关更多信息,请参阅为 overcloud 置备网络和 VIP。
如果您不使用预置备节点,则置备裸机节点的输出文件,例如
spine-leaf-baremetal-nodes-provisioned.yaml。有关更多信息,请参阅为 overcloud 置备裸机节点。
- 任何其它自定义环境文件。
通过仔细排序自定义环境文件和在命令输入的自定义模板,进入
overcloud deploy命令。常规规则是首先指定任何未编辑的 heat 模板文件,后跟您的自定义环境文件和包含自定义配置的自定义模板,如覆盖默认属性。
特别是,请按照以下顺序列出
overcloud deploy命令的输入:包含包含映射到每个角色的自定义 NIC 模板的自定义环境文件,例如在
network-environment.yaml后spine-leaf-nic-roles-map.yaml。network-environment.yaml文件为您的映射文件覆盖提供可组合网络参数的默认网络配置。请注意,director 从network-environment.j2.yamlJinja2 模板呈现此文件。- 如果您创建了任何其他 spine leaf 网络环境文件,请在 roles-NIC 模板映射文件后包括这些环境文件。
添加任何其他环境文件。例如,带有容器镜像位置或 Ceph 集群配置的环境文件。
示例
以下命令片断演示了顺序:
$ openstack overcloud deploy --templates \ -n /home/stack/templates/spine-leaf-networks-data.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \ -e /home/stack/templates/spine-leaf-nic-roles-map.yaml \ -e /home/stack/templates/spine-leaf-ctlplane.yaml \ -e /home/stack/templates/spine-leaf-vip-data.yaml \ -e /home/stack/templates/spine-leaf-baremetal-provisioned.yaml \ -e /home/stack/templates/spine-leaf-networks-provisioned.yaml \ -e /home/stack/templates/spine-leaf-vips-provisioned.yaml \ -e /home/stack/containers-prepare-parameter.yaml \ -e /home/stack/inject-trust-anchor-hiera.yaml \ -r /home/stack/templates/spine-leaf-roles-data.yaml
提示有关更多信息,请参阅 Director 安装和使用指南中的 创建 overcloud。
运行
overcloud deploy命令。overcloud 创建完成后,director 提供了用于访问 overcloud 的详细信息。
验证
- 在 Director 安装和使用指南中的 执行验证 overcloud 部署 中的步骤。
其他资源
- Director 安装和使用指南中的 创建 overcloud
- 命令行界面参考中的 overcloud 部署
4.11. 在 spine-leaf 部署中添加新的树(leaf)
当增加网络容量或添加新物理站点时,您可能需要向 Red Hat OpenStack Platform (RHOSP) spine-leaf 网络添加新的叶。
先决条件
- 您的 RHOSP 部署使用 spine-leaf 网络拓扑。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭据文件:$ source ~/stackrc
打开网络定义模板,例如
/home/stack/templates/Demoe-leaf-networks-data.yaml。在适当的基础网络中,为要添加的新叶添加一个叶子网作为可组合网络项。示例
在本例中,添加了新 leaf(
leaf3)的子网条目:- name: InternalApi name_lower: internal_api vip: true vlan: 10 ip_subnet: '172.18.0.0/24' allocation_pools: [{'start': '172.18.0.4', 'end': '172.18.0.250'}] gateway_ip: '172.18.0.1' subnets: internal_api_leaf1: vlan: 11 ip_subnet: '172.18.1.0/24' allocation_pools: [{'start': '172.18.1.4', 'end': '172.18.1.250'}] gateway_ip: '172.18.1.1' internal_api_leaf2: vlan: 12 ip_subnet: '172.18.2.0/24' allocation_pools: [{'start': '172.18.2.4', 'end': '172.18.2.250'}] gateway_ip: '172.18.2.1' internal_api_leaf3: vlan: 13 ip_subnet: '172.18.3.0/24' allocation_pools: [{'start': '172.18.3.4', 'end': '172.18.3.250'}] gateway_ip: '172.18.3.1'为您要添加的新 leaf 创建角色数据文件。
复制用于您添加的新 leaf Compute 和 leaf Ceph Storage 文件。
示例
在本例中,
Compute1.yaml和CephStorage1.yaml会分别为新的 leaf、Compute3.yaml和CephStorage3.yaml复制:$ cp ~/roles/Compute1.yaml ~/roles/Compute3.yaml $ cp ~/roles/CephStorage1.yaml ~/roles/CephStorage3.yaml
编辑新叶文件中的
name和HostnameFormatDefault参数,使其与对应的 leaf 参数一致。示例
例如,Leaf 1 Compute 文件中的参数具有以下值:
- name: ComputeLeaf1 HostnameFormatDefault: '%stackname%-compute-leaf1-%index%'
示例
Leaf 1 Ceph Storage 参数具有以下值:
- name: CephStorageLeaf1 HostnameFormatDefault: '%stackname%-cephstorage-leaf1-%index%'
编辑新 leaf 文件中的 network 参数,以便它们与对应的 Leaf 网络参数一致。
示例
例如,Leaf 1 Compute 文件中的参数具有以下值:
- name: ComputeLeaf1 networks: InternalApi: subnet: internal_api_leaf1 Tenant: subnet: tenant_leaf1 Storage: subnet: storage_leaf1示例
Leaf 1 Ceph Storage 参数具有以下值:
- name: CephStorageLeaf1 networks: Storage: subnet: storage_leaf1 StorageMgmt: subnet: storage_mgmt_leaf1当您的角色配置完成后,运行以下命令来生成完整的角色数据文件。包括您的网络中的所有树和您要添加的新树叶。
示例
在本例中,leaf3 被添加到 leaf0, leaf1 和 leaf2:
$ openstack overcloud roles generate --roles-path ~/roles -o roles_data_spine_leaf.yaml Controller Controller1 Controller2 Compute Compute1 Compute2 Compute3 CephStorage CephStorage1 CephStorage2 CephStorage3
这会创建一个完整的
roles_data_spine_leaf.yaml文件,其中包含每个各自叶网络的所有自定义角色。
为您要添加的 leaf 创建自定义 NIC 配置。
复制您要添加的新叶型计算和 leaf Ceph Storage NIC 配置文件。
示例
在本例中,
computeleaf1.yaml和ceph-storageleaf1.yaml会分别为新 leaf、computeleaf3.yaml和ceph-storageleaf3.yaml复制:$ cp ~/templates/spine-leaf-nics/computeleaf1.yaml ~/templates/spine-leaf-nics/computeleaf3.yaml $ cp ~/templates/spine-leaf-nics/ceph-storageleaf1.yaml ~/templates/spine-leaf-nics/ceph-storageleaf3.yaml
打开自定义环境文件,其中包含每个角色的角色和自定义 NIC 模板映射,例如 spine-leaf-nic-roles-map.yaml。为您要添加的新叶插入每个角色的条目。
parameter_defaults: %%ROLE%%NetworkConfigTemplate: <path_to_ansible_jinja2_nic_config_file>
示例
在本例中,添加了
ComputeLeaf3NetworkConfigTemplate和CephStorage3NetworkConfigTemplate条目:parameter_defaults: Controller0NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' Controller1NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' Controller2NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' ComputeLeaf0NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' ComputeLeaf1NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' ComputeLeaf2NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' ComputeLeaf3NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' CephStorage0NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' CephStorage1NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' CephStorage2NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2' CephStorage3NetworkConfigTemplate: '/home/stack/templates/spine-leaf-nics/single-nic-vlans.j2'
打开包含独立网络映射的自定义网络环境文件,并为 overcloud 设置 control plane 网络的访问权限,如
spine-leaf-ctlplane.yaml并更新 control plane 参数。在
parameter_defaults部分下,为新叶网络添加 control plane 子网映射。此外,包括新叶网络的外部网络映射。对于 flat 网络映射,列出
NeutronFlatNetworks参数中的新 leaf(leaf3),并为新 leafs 设置NeutronBridgeMappings参数:parameter_defaults: NeutronFlatNetworks: leaf0,leaf1,leaf2,leaf3 Controller0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute1Parameters: NeutronBridgeMappings: "leaf1:br-ex" Compute2Parameters: NeutronBridgeMappings: "leaf2:br-ex" Compute3Parameters: NeutronBridgeMappings: "leaf3:br-ex"对于 VLAN 网络映射,还设置
NeutronNetworkVLANRanges来映射新leaf(leaf3)网络的 VLAN:NeutronNetworkType: 'geneve,vlan' NeutronNetworkVLANRanges: 'leaf0:1:1000,leaf1:1:1000,leaf2:1:1000,leaf3:1:1000'
示例
本例中使用了扁平网络映射,并添加了新的叶(
leaf3)条目:parameter_defaults: NeutronFlatNetworks: leaf0,leaf1,leaf2,leaf3 Controller0Parameters: NeutronBridgeMappings: "leaf0:br-ex" ControllerControlPlaneSubnet: leaf0 Controller1Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller1ControlPlaneSubnet: leaf0 Controller2Parameters: NeutronBridgeMappings: "leaf0:br-ex" Controller2ControlPlaneSubnet: leaf0 Compute0Parameters: NeutronBridgeMappings: "leaf0:br-ex" Compute0ControlPlaneSubnet: leaf0 Compute1Parameters: NeutronBridgeMappings: "leaf1:br-ex" Compute1ControlPlaneSubnet: leaf1 Compute2Parameters: NeutronBridgeMappings: "leaf2:br-ex" Compute2ControlPlaneSubnet: leaf2 Compute3Parameters: NeutronBridgeMappings: "leaf3:br-ex" Compute3ControlPlaneSubnet: leaf3
- 按照 部署启用了 spine-leaf 的 overcloud 中的步骤重新部署启用了 spine-leaf 的 overcloud。