spine Leaf Networking


Red Hat OpenStack Platform 16.2

使用 Red Hat OpenStack Platform director 配置路由的 spine-leaf 网络

OpenStack Documentation Team

摘要

本指南提供有关如何在 overcloud 上配置路由的 spine-leaf 网络的基本场景。这包括配置 undercloud、编写主配置文件和为节点创建角色。

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。

在 JIRA 中提供文档反馈

使用 Create Issue 表单对文档提供反馈。JIRA 问题将在 Red Hat OpenStack Platform Jira 项目中创建,您可以在其中跟踪您的反馈进度。

  1. 确保您已登录到 JIRA。如果您没有 JIRA 帐户,请创建一个帐户来提交反馈。
  2. 点击以下链接打开 Create Issue 页面: Create Issue
  3. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节或章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  4. Create

第 1 章 简介

本指南提供有关为您的 Red Hat OpenStack Platform 环境构建 spine-leaf 网络拓扑的信息。这包括完整的端到端场景和示例文件,以帮助在您自己的环境中复制更广泛的网络拓扑。

1.1. spine-leaf 网络

Red Hat OpenStack Platform 有一个可组合的网络架构,可用于将网络适应路由的 spine-leaf 数据中心拓扑。在路由 spine-leaf 的实际应用程序中,leaf 代表为可组合计算或存储角色,通常位于数据中心机架中,如 "Routed spine-leaf example"所示Leaf 0 机架有一个 undercloud 节点、Controller 节点和 Compute 节点。可组合网络呈现给节点,已分配给可组合角色。下图显示了以下配置:

  • StorageLeaf 网络呈现给 Ceph 存储和 Compute 节点。
  • NetworkLeaf 代表您可能需要编写的任何网络的示例。

图 1.1. 路由 spine-leaf 示例

1.2. spine-leaf 网络拓扑

spine-leaf 方案利用 OpenStack Networking (neutron)功能在单个网络片段中定义多个子网。每个网络都使用一个基础网络,它充当 Leaf 0。director 创建 Leaf 1 和 Leaf 2 子网作为主网络的片段。

这个场景使用以下网络:

Expand
表 1.1. leaf 0 Networks (base network)
Network附加的角色subnet

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] 租户网络也称为项目网络。

Expand
表 1.2. leaf 1 Networks
Network附加的角色subnet

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] 租户网络也称为项目网络。

Expand
表 1.3. leaf 2 Networks
Network附加的角色subnet

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 网络拓扑

1.3. spine-leaf 要求

要使用 L3 路由架构在网络上部署 overcloud,请完成以下步骤:

第 3 层路由
配置网络基础架构的路由,以启用不同 L2 段之间的流量。您可以静态或动态配置此路由。
DHCP-Relay
每个不是 undercloud 本地的 L2 片段必须提供 dhcp-relay。您必须将 DHCP 请求转发到 undercloud 连接的 provisioning 网络段上的 undercloud。
注意

undercloud 使用两个 DHCP 服务器。一个用于裸机节点内省,另一个用于部署 overcloud 节点。确保您读取 DHCP 转发配置,以了解配置 dhcp-relay 时的要求。

1.4. spine-leaf 限制

  • 有些角色(如 Controller 角色)使用虚拟 IP 地址和集群。此功能后面的机制需要在这些节点之间有 L2 网络连接。您必须将这些节点放在同一叶中。
  • 相同的限制适用于 Networker 节点。网络服务使用虚拟路由器冗余协议(VRRP)在网络中实现高可用性默认路径。因为 VRRP 使用虚拟路由器 IP 地址,所以您必须将 master 和备份节点连接到相同的 L2 网络段。
  • 将租户或提供商网络与 VLAN 分段搭配使用时,您必须在所有 Networker 和 Compute 节点之间共享特定的 VLAN。
注意

可以使用多组 Networker 节点配置网络服务。每个组网络节点共享其网络的路由,VRRP 在每组网络器节点中提供高可用性默认路径。在这种配置中,共享网络的所有网络器节点都必须位于同一 L2 网络段上。

第 2 章 在 undercloud 中配置路由 spine-leaf

本节论述了如何配置 undercloud 以容纳与可组合网络相关的路由热插拔的用例。

2.1. 配置 spine leaf provisioning 网络

要为 spine leaf 基础架构配置 provisioning 网络,请编辑 undercloud.conf 文件并设置以下流程中包含的相关参数。

流程

  1. stack 用户的身份登录 undercloud。
  2. 如果您还没有 undercloud.conf 文件,请复制示例模板文件:

    [stack@director ~]$ cp /usr/share/python-tripleoclient/undercloud.conf.sample ~/undercloud.conf
    Copy to Clipboard Toggle word wrap
  3. 编辑 undercloud.conf 文件。
  4. [DEFAULT] 部分中设置以下值:

    1. local_ip 设置为 leaf0 上的 undercloud IP:

      local_ip = 192.168.10.1/24
      Copy to Clipboard Toggle word wrap
    2. undercloud_public_host 设置为 undercloud 的面向外部的 IP 地址:

      undercloud_public_host = 10.1.1.1
      Copy to Clipboard Toggle word wrap
    3. undercloud_admin_host 设置为 undercloud 的管理 IP 地址。这个 IP 地址通常位于 leaf0 上:

      undercloud_admin_host = 192.168.10.2
      Copy to Clipboard Toggle word wrap
    4. local_interface 设置为本地网络的桥接接口:

      local_interface = eth1
      Copy to Clipboard Toggle word wrap
    5. enable_routed_networks 设置为 true

      enable_routed_networks = true
      Copy to Clipboard Toggle word wrap
    6. 使用 subnets 参数定义子网列表。在路由 spine 和 leaf 中为每个 L2 片段定义一个子网:

      subnets = leaf0,leaf1,leaf2
      Copy to Clipboard Toggle word wrap
    7. 使用 local_subnet 参数指定与 undercloud 本地的物理 L2 段关联的子网:

      local_subnet = leaf0
      Copy to Clipboard Toggle word wrap
    8. 设置 undercloud_nameservers 的值。

      undercloud_nameservers = 10.11.5.19,10.11.5.20
      Copy to Clipboard Toggle word wrap
      提示

      您可以通过查看 /etc/resolv.conf 来查找用于 undercloud 名称服务器的 DNS 服务器的当前 IP 地址。

  5. 为您在 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
    Copy to Clipboard Toggle word wrap
  6. 保存 undercloud.conf 文件。
  7. 运行 undercloud 安装命令:

    [stack@director ~]$ openstack undercloud install
    Copy to Clipboard Toggle word wrap

此配置在 provisioning 网络或 control plane 上创建三个子网。overcloud 使用每个网络来置备每个对应叶中的系统。

为确保正确将 DHCP 请求转发到 undercloud,您可能需要配置 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 转发配置示例。如需更多信息,请参阅手册页 dhcrelay (8)。

重要

某些中继需要 DHCP 选项 79,特别是提供 DHCPv6 地址的转发,以及不通过原始 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 范围中的第一个地址。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
Copy to Clipboard Toggle word wrap
警告

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  |
+-------+--------+
Copy to Clipboard Toggle word wrap

dhcrelay 配置示例

在以下示例中,dhcp 软件包中的 dhcrelay 命令使用以下配置:

  • 转发传入的 DHCP 请求的接口: eth1、 eth2eth3
  • 网络接口网络段上的 undercloud DHCP 服务器连接到 eth0
  • 用于内省的 DHCP 服务器正在侦听 IP 地址 :192.168.1 680.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
    Copy to Clipboard Toggle word wrap
  • 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
    Copy to Clipboard Toggle word wrap

Cisco IOS 路由交换机配置示例

这个示例使用以下 Cisco IOS 配置来执行以下任务:

  • 配置 VLAN 以用于 provisioning 网络。
  • 添加叶的 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
!
Copy to Clipboard Toggle word wrap

现在,您已配置了 provisioning 网络,您可以配置剩余的 overcloud leaf 网络。

2.3. 为叶网络创建类别和标记节点

每个叶网络中的每个角色都需要一个类别和角色分配,以便您可以将节点标记为对应的叶。完成以下步骤以创建各个类别并将其分配到角色。

流程

  1. Source stackrc 文件:

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  2. 为每个自定义角色创建类别:

    $ ROLES="control compute_leaf0 compute_leaf1 compute_leaf2 ceph-storage_leaf0 ceph-storage_leaf1 ceph-storage_leaf2"
    $ for ROLE in $ROLES; do openstack flavor create --id auto --ram <ram_size_mb> --disk <disk_size_gb> --vcpus <no_vcpus> $ROLE ; done
    $ for ROLE in $ROLES; do openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property resources:DISK_GB='0' --property resources:MEMORY_MB='0' --property resources:VCPU='0' $ROLE ; done
    Copy to Clipboard Toggle word wrap
    • <ram_size_mb> 替换为裸机节点的 RAM,以 MB 为单位。
    • <disk_size_gb> 替换为裸机节点中的磁盘大小(以 GB 为单位)。
    • <no_vcpus> 替换为裸机节点中的 CPU 数量。
  3. 检索节点列表来识别它们的 UUID:

    (undercloud)$ openstack baremetal node list
    Copy to Clipboard Toggle word wrap
  4. 使用自定义资源类将每个裸机节点标记为其叶网络和角色:

    (undercloud)$ openstack baremetal node set \
     --resource-class baremetal.LEAF-ROLE <node>
    Copy to Clipboard Toggle word wrap

    <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
    Copy to Clipboard Toggle word wrap
  5. 将每个叶网络角色类别与自定义资源类关联:

    (undercloud)$ openstack flavor set \
     --property resources:CUSTOM_BAREMETAL_LEAF_ROLE=1 \
    <custom_role>
    Copy to Clipboard Toggle word wrap

    要确定与裸机置备服务节点的资源类对应的自定义资源类的名称,请将资源类转换为大写,请将每个 punctuation 标记替换为下划线,并将前缀替换为 CUSTOM_

    注意

    类别只能请求一个裸机资源类实例。

  6. node-info.yaml 文件中,指定要用于每个自定义叶角色的类别,以及为每个自定义叶角色分配的节点数量。例如,以下配置指定要使用的类别,以及为 compute_leaf0, compute_leaf1, compute_leaf2, ceph-storage_leaf0, ceph-storage_leaf1, 和 ceph-storage_leaf2 自定义叶角色分配的节点数量:

    parameter_defaults:
      OvercloudControllerFlavor: control
      OvercloudComputeLeaf0Flavor: compute_leaf0
      OvercloudComputeLeaf1Flavor: compute_leaf1
      OvercloudComputeLeaf2Flavor: compute_leaf2
      OvercloudCephStorageLeaf0Flavor: ceph-storage_leaf0
      OvercloudCephStorageLeaf1Flavor: ceph-storage_leaf1
      OvercloudCephStorageLeaf2Flavor: ceph-storage_leaf2
      ControllerLeaf0Count: 3
      ComputeLeaf0Count: 3
      ComputeLeaf1Count: 3
      ComputeLeaf2Count: 3
      CephStorageLeaf0Count: 3
      CephStorageLeaf1Count: 3
      CephStorageLeaf2Count: 3
    Copy to Clipboard Toggle word wrap

要在 L3 路由网络中启用部署,您必须在裸机端口上配置 physical_network 字段。每个裸机端口都与 OpenStack Bare Metal (ironic)服务中的裸机节点关联。物理网络名称是您在 undercloud 配置中的 subnets 选项中包含的名称。

注意

undercloud.conf 文件中指定为 local_subnet 子网的物理网络名称始终被命名为 ctlplane

流程

  1. Source stackrc 文件:

    $ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  2. 检查裸机节点:

    $ openstack baremetal node list
    Copy to Clipboard Toggle word wrap
  3. 确保裸机节点处于 Register 或 manageable 状态。如果裸机节点不在其中一个状态中,在 baremetal 端口上设置 physical_network 属性的命令会失败。要将所有节点设置为 manageable 状态,请运行以下命令:

    $ for node in $(openstack baremetal node list -f value -c Name); do openstack baremetal node manage $node --wait; done
    Copy to Clipboard Toggle word wrap
  4. 检查哪个 baremetal 端口与哪个 baremetal 节点关联:

    $ openstack baremetal port list --node <node-uuid>
    Copy to Clipboard Toggle word wrap
  5. 为端口设置 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>
    Copy to Clipboard Toggle word wrap
  6. 在部署 overcloud 前内省节点。包含 --all-manageable--provide 选项来设置可用于部署的节点:

    $ openstack overcloud node introspect --all-manageable --provide
    Copy to Clipboard Toggle word wrap

在增加可添加新的物理站点的网络容量时,您可能需要向 Red Hat OpenStack Platform spine-leaf provisioning 网络添加新的叶和对应的子网。在 overcloud 上置备叶时,会使用对应的 undercloud leaf。

先决条件

  • 您的 RHOSP 部署使用 spine-leaf 网络拓扑。

流程

  1. 以 stack 用户身份登录 undercloud 主机。
  2. 查找 undercloud 凭证文件:

    $ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  3. /home/stack/undercloud.conf 文件中执行以下操作:

    1. 找到 subnets 参数,并为要添加的叶添加新子网。

      子网代表路由的 spine 和 leaf 中的 L2 片段:

      示例

      在本例中,为新叶(leaf3)添加新子网(leaf3):

      subnets = leaf0,leaf1,leaf2,leaf3
      Copy to Clipboard Toggle word wrap
    2. 为您添加的子网创建一个部分。

      示例

      在本例中,为新子网添加了 [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
      Copy to Clipboard Toggle word wrap
  4. 保存 undercloud.conf 文件。
  5. 重新安装 undercloud:

    $ openstack undercloud install
    Copy to Clipboard Toggle word wrap

第 3 章 备选置备网络方法

本节介绍可用来配置置备网络的其他方法,以适应与可组合网络的路由热插拔。

3.1. VLAN 置备网络

在本例中,director 通过 provisioning 网络部署新的 overcloud 节点,并在 L3 拓扑中使用 VLAN 隧道。如需更多信息,请参阅 图 3.1、"VLAN 置备网络拓扑"。如果使用 VLAN 置备网络,director DHCP 服务器可以将 DHCPOFFER 广播发送到任何叶。要建立此隧道,请在 Top-of-Rack (ToR)叶交换机之间中继 VLAN。在下图中,StorageLeaf 网络会呈现到 Ceph 存储和 Compute 节点。NetworkLeaf 代表您要编写的任何网络的示例。

图 3.1. VLAN 置备网络拓扑

3.2. VXLAN 置备网络

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

图 3.2. VXLAN 置备网络拓扑

第 4 章 配置 overcloud

配置 undercloud 后,您可以使用一系列配置文件配置剩余的 overcloud leaf 网络。在配置剩余的 overcloud leaf 网络并部署 overcloud 后,生成的部署具有多个可用的路由。

4.1. 创建网络数据文件

要定义叶网络,请创建一个网络数据文件,其中包含每个可组合网络的 YAML 格式列表及其属性。使用 subnets 参数使用基本网络定义额外的 Leaf 子网。

流程

  1. stack 用户的主目录中创建一个新的 network_data_Demoe_leaf.yaml 文件。使用默认的 network_data_subnets_routed.yaml 文件作为基础:

    $ cp /usr/share/openstack-tripleo-heat-templates/network_data_subnets_routed.yaml /home/stack/network_data_spine_leaf.yaml
    Copy to Clipboard Toggle word wrap
  2. network_data_Demoe_leaf.yaml 文件中,编辑 YAML 列表,将每个基本网络和对应的 leaf 子网定义为可组合网络项目。使用以下示例语法定义基础 leaf 和两个 leaf 子网:

    - name: <base_name>
      name_lower: <lowercase_name>
      vip: <true/false>
      vlan: '<vlan_id>'
      ip_subnet: '<network_address>/<prefix>'
      allocation_pools: [{'start': '<start_address>', 'end': '<end_address>'}]
      gateway_ip: '<router_ip_address>'
      subnets:
        <leaf_subnet_name>:
          vlan: '<vlan_id>'
          ip_subnet: '<network_address>/<prefix>'
          allocation_pools: [{'start': '<start_address>', 'end': '<end_address>'}]
          gateway_ip: '<router_ip_address>'
        <leaf_subnet_name>:
          vlan: '<vlan_id>'
          ip_subnet: '<network_address>/<prefix>'
          allocation_pools: [{'start': '<start_address>', 'end': '<end_address>'}]
          gateway_ip: '<router_ip_address>'
    Copy to Clipboard Toggle word wrap

    以下示例演示了如何定义内部 API 网络及其叶网络:

    - 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'
    Copy to Clipboard Toggle word wrap
注意

您不会在网络数据文件中定义 Control Plane 网络,因为 undercloud 已创建了这些网络。但是,您必须手动设置参数,以便 overcloud 能够相应地配置 NIC。

注意

为包含基于 Controller 的服务的网络定义 vip: true。在本例中,Internal ApiLeaf0 包含这些服务。

4.2. 创建角色数据文件

要为每个叶定义每个可组合角色,并将可组合网络附加到每个对应角色,请完成以下步骤。

流程

  1. stack 用户的主目录中创建自定义角色目录:

    $ mkdir ~/roles
    Copy to Clipboard Toggle word wrap
  2. 将默认 Controller、Compute 和 Ceph Storage 角色从 director 核心模板集合复制到 roles 目录。重命名 Compute 和 Ceph Storage 的文件,以适应 Leaf 0:

    $ cp /usr/share/openstack-tripleo-heat-templates/roles/Controller.yaml ~/roles/Controller.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
    Copy to Clipboard Toggle word wrap
  3. 将 Leaf 0 Compute 和 Ceph Storage 文件复制到您的 Leaf 1 和 Leaf 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
    Copy to Clipboard Toggle word wrap
  4. 编辑 Leaf 0, Leaf 1, 和 Leaf 2 文件中的 name, HostnameFormatDefault, and deprecated_nic_config_name 参数,以便它们与对应的 Leaf 参数一致。例如,Leaf 0 Compute 文件中的参数具有以下值:

    - name: ComputeLeaf0
      HostnameFormatDefault: '%stackname%-compute-leaf0-%index%'
      deprecated_nic_config_name: 'computeleaf0.yaml'
    Copy to Clipboard Toggle word wrap

    Leaf 0 Ceph Storage 参数具有以下值:

    - name: CephStorageLeaf0
      HostnameFormatDefault: '%stackname%-cephstorage-leaf0-%index%'
      deprecated_nic_config_name: 'ceph-strorageleaf0.yaml'
    Copy to Clipboard Toggle word wrap
  5. 编辑 Leaf 1 和 Leaf 2 文件中的 network 参数,以便它们与对应的 Leaf 网络参数一致。例如,Leaf 1 Compute 文件中的参数具有以下值:

    - name: ComputeLeaf1
      networks:
        InternalApi:
          subnet: internal_api_leaf1
        Tenant:
          subnet: tenant_leaf1
        Storage:
          subnet: storage_leaf1
    Copy to Clipboard Toggle word wrap

    Leaf 1 Ceph Storage 参数具有以下值:

    - name: CephStorageLeaf1
      networks:
        Storage:
          subnet: storage_leaf1
        StorageMgmt:
          subnet: storage_mgmt_leaf1
    Copy to Clipboard Toggle word wrap
    注意

    这只适用于 Leaf 1 和 Leaf 2。Leaf 0 的 network 参数保留基本子网值,这些值是每个子网的小写名称再加上一个 _subnet 后缀。例如,Leaf 0 的内部 API 是 internal_api_subnet

  6. 完成角色配置后,运行以下命令生成完整的角色数据文件:

    $ openstack overcloud roles generate --roles-path ~/roles -o roles_data_spine_leaf.yaml Controller Compute Compute1 Compute2 CephStorage CephStorage1 CephStorage2
    Copy to Clipboard Toggle word wrap

    这会创建一个完整的 roles_data_Demoe_leaf.yaml 文件,其中包含每个对应叶网络的所有自定义角色。

每个角色都有自己的 NIC 配置。在配置 spine-leaf 配置前,您必须创建一组基本 NIC 模板来适合您的当前 NIC 配置。

4.3. 创建自定义 NIC 配置

每个角色都需要一个唯一的 NIC 配置。完成以下步骤以创建基本 NIC 模板集的副本,并将新模板映射到对应的 NIC 配置资源。

流程

  1. 进入核心 heat 模板目录:

    $ cd /usr/share/openstack-tripleo-heat-templates
    Copy to Clipboard Toggle word wrap
  2. 使用 tools/process-templates.py 脚本、自定义 network_data 文件和自定义 roles_data 文件呈现 Jinja2 模板:

    $ tools/process-templates.py \
        -n /home/stack/network_data_spine_leaf.yaml \
        -r /home/stack/roles_data_spine_leaf.yaml \
        -o /home/stack/openstack-tripleo-heat-templates-spine-leaf
    Copy to Clipboard Toggle word wrap
  3. 进入主目录:

    $ cd /home/stack
    Copy to Clipboard Toggle word wrap
  4. 复制其中一个默认 NIC 模板中的内容,以用作您的 spine-leaf 模板的基础。例如,复制 single-nic-vlans NIC 模板:

    $ cp -r openstack-tripleo-heat-templates-spine-leaf/network/config/single-nic-vlans/* /home/stack/templates/spine-leaf-nics/.
    Copy to Clipboard Toggle word wrap
  5. 编辑 /home/stack/templates/Demoe-leaf-nics/ 中的每个 NIC 配置,并将配置脚本的位置改为绝对位置。滚动到网络配置部分,类似于以下片段:

    resources:
      OsNetConfigImpl:
        type: OS::Heat::SoftwareConfig
        properties:
          group: script
          config:
            str_replace:
              template:
                get_file: ../../scripts/run-os-net-config.sh
              params:
                $network_config:
                  network_config:
    Copy to Clipboard Toggle word wrap

    将脚本的位置改为绝对路径:

    resources:
      OsNetConfigImpl:
        type: OS::Heat::SoftwareConfig
        properties:
          group: script
          config:
            str_replace:
              template:
                get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh
              params:
                $network_config:
                  network_config:
    Copy to Clipboard Toggle word wrap

    在每个 Leaf 的每个文件中进行这个更改并保存更改。

    注意
  6. 创建名为 spine-leaf-nics.yaml 的文件,并编辑该文件。
  7. 在文件中创建 resource_registry 部分,并添加一组映射到相应 NIC 模板的 ::Net::SoftwareConfig 资源:

    resource_registry:
      OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/controller.yaml
      OS::TripleO::ComputeLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf0.yaml
      OS::TripleO::ComputeLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf1.yaml
      OS::TripleO::ComputeLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf2.yaml
      OS::TripleO::CephStorageLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf0.yaml
      OS::TripleO::CephStorageLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf1.yaml
      OS::TripleO::CephStorageLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf2.yaml
    Copy to Clipboard Toggle word wrap

    这些资源映射会在部署过程中覆盖默认资源映射。

  8. 保存 spine-leaf-nics.yaml 文件。
  9. 删除呈现的模板目录:

    $ rm -rf openstack-tripleo-heat-templates-spine-leaf
    Copy to Clipboard Toggle word wrap

    因此,您现在有一组 NIC 模板和一个将所需的 ::Net::SoftwareConfig 资源映射到它们的环境文件。

  10. 最终运行 openstack overcloud deploy 命令时,请确保按以下顺序包含环境文件:

    1. /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml,它允许网络隔离。请注意,director 从 network-isolation.j2.yaml Jinja2 模板呈现此文件。
    2. /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml,它是默认的网络环境文件,包括默认 NIC 资源映射。请注意,director 从 network-environment.j2.yaml Jinja2 模板呈现此文件。
    3. /home/stack/templates/Demoe-leaf-nics.yaml,其中包含您的自定义 NIC 资源映射并覆盖默认 NIC 资源映射。

      以下命令片段演示了排序:

      $ openstack overcloud deploy --templates
          ...
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
          -e /home/stack/templates/spine-leaf-nics.yaml \
          ...
      Copy to Clipboard Toggle word wrap
  11. 完成以下部分中的步骤,为您的网络环境文件添加详细信息,并定义 spine leaf 架构的某些方面。完成此配置后,将此文件包含在 openstack overcloud deploy 命令中。

4.4. 设置 control plane 参数

您通常使用 network_data 文件为隔离 spine-leaf 网络定义网络详情。一个例外是 undercloud 创建的 control plane 网络。但是,overcloud 需要访问每个叶的 control plane。要启用此访问权限,您必须在部署中定义附加参数。

在本例中,在 Leaf 0 上为对应的 Control Plane 网络定义 IP、子网和默认路由。

流程

  1. 创建名为 spine-leaf-ctlplane.yaml 的文件,再编辑该文件。
  2. 在文件中创建一个 parameter_defaults 部分,并为每个 spine-leaf 网络添加 control plane 子网映射:

    parameter_defaults:
      ...
      ControllerControlPlaneSubnet: leaf0
      Compute0ControlPlaneSubnet: leaf0
      Compute1ControlPlaneSubnet: leaf1
      Compute2ControlPlaneSubnet: leaf2
      CephStorage0ControlPlaneSubnet: leaf0
      CephStorage1ControlPlaneSubnet: leaf1
      CephStorage2ControlPlaneSubnet: leaf2
    Copy to Clipboard Toggle word wrap
  3. 保存 spine-leaf-ctlplane.yaml 文件。

4.5. 为虚拟 IP 地址设置子网

Controller 角色通常为每个网络托管虚拟 IP (VIP)地址。默认情况下,overcloud 从每个网络的基本子网获取 VIP,但 control plane 除外。control plane 使用 ctlplane-subnet,这是标准 undercloud 安装过程中创建的默认子网名称。

在这个 spine leaf 场景中,默认的基础调配网络是 leaf0 而不是 ctlplane-subnet。这意味着,您必须在 VipSubnetMap 参数中添加覆盖值,以更改 control plane VIP 使用的子网。

另外,如果每个网络的 VIP 没有使用一个或多个网络的基本子网,您必须将额外的覆盖添加到 VipSubnetMap 参数,以确保 director 在连接到 Controller 节点的 L2 网络段的子网中创建了 VIP。

流程:

  1. 创建名为 spine-leaf-vips.yaml 的文件,并编辑该文件。
  2. 在文件中创建一个 parameter_defaults 部分,并根据您的要求添加 VipSubnetMap 参数:

    • 如果将 leaf0 用于置备 / control plane 网络,请将 ctlplane VIP 重新映射到 leaf0

      parameter_defaults:
        VipSubnetMap:
          ctlplane: leaf0
      Copy to Clipboard Toggle word wrap
    • 如果您将不同的 Leaf 用于多个 VIP,请设置 VIP 重新映射以满足这些要求。例如,使用以下代码片段将 VipSubnetMap 参数配置为对所有 VIP 使用 leaf1

      parameter_defaults:
        VipSubnetMap:
          ctlplane: leaf1
          redis: internal_api_leaf1
          InternalApi: internal_api_leaf1
          Storage: storage_leaf1
          StorageMgmt: storage_mgmt_leaf1
      Copy to Clipboard Toggle word wrap
  3. 保存 spine-leaf-vips.yaml 文件。

4.6. 映射单独的网络

默认情况下,OpenStack Platform 使用 Open Virtual Network (OVN),这需要所有 Controller 和 Compute 节点连接到单个 L2 网络,以实现外部网络访问。这意味着 Controller 和 Compute 网络配置都使用 br-ex 网桥,director 默认映射到 overcloud 中的 datacentre 网络。此映射通常用于扁平网络映射或 VLAN 网络映射。在 spine leaf 架构中,您可以更改这些映射,以便每个 Leaf 都会通过该 Leaf 上的特定网桥或 VLAN 路由流量,这通常是边缘计算场景的情况。

流程

  1. 创建名为 spine-leaf-separate.yaml 的文件,并编辑该文件。
  2. spine-leaf-separate.yaml 文件中创建一个 parameter_defaults 部分,并为每个 spine-leaf 网络包括外部网络映射:

    • 对于扁平网络映射,列出 NeutronFlatNetworks 参数中的每个 Leaf,并为每个 Leaf 设置 NeutronBridgeMappings 参数:

      parameter_defaults:
        NeutronFlatNetworks: leaf0,leaf1,leaf2
        Controller0Parameters:
          NeutronBridgeMappings: "leaf0:br-ex"
        Compute0Parameters:
          NeutronBridgeMappings: "leaf0:br-ex"
        Compute1Parameters:
          NeutronBridgeMappings: "leaf1:br-ex"
        Compute2Parameters:
          NeutronBridgeMappings: "leaf2:br-ex"
      Copy to Clipboard Toggle word wrap
    • 对于 VLAN 网络映射,还要将 NeutronNetworkVLANRanges 设置为映射所有三个 Leaf 网络的 VLAN:

        NeutronNetworkType: 'geneve,vlan'
        NeutronNetworkVLANRanges: 'leaf0:1:1000,leaf1:1:1000,leaf2:1:1000'
      Copy to Clipboard Toggle word wrap
  3. 保存 spine-leaf-separate.yaml 文件。

4.7. 部署启用了 spine-leaf 的 overcloud

完成 spine-leaf overcloud 配置后,请完成以下步骤来查看每个文件,然后运行部署命令:

流程

  1. 查看 /home/stack/template/network_data_Demoe_leaf.yaml 文件,并确保其中包含每个叶级的每个网络和子网。

    注意

    目前,网络子网和 allocation_pools 值没有自动验证。确保您一致定义这些值,并确保现有网络没有冲突。

  2. 查看 /home/stack/templates/roles_data_Demoe_leaf.yaml 值,并确保为每个叶定义了一个角色。
  3. 查看 ~/templates/Demoe-leaf-nics/ 目录中的 NIC 模板,并确保您正确为每个叶上为每个角色定义接口。
  4. 查看自定义 spine-leaf-nics.yaml 环境文件,并确保它包含一个 resource_registry 部分来引用每个角色的自定义 NIC 模板。
  5. 查看 /home/stack/templates/nodes_data.yaml 文件,并确保所有角色都有分配的类别和节点数。另外,也请检查您是否已正确标记每个叶的所有节点。
  6. 运行 openstack overcloud deploy 命令以应用 spine leaf 配置。例如:

    $ openstack overcloud deploy --templates \
        -n /home/stack/templates/network_data_spine_leaf.yaml \
        -r /home/stack/templates/roles_data_spine_leaf.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
        -e /home/stack/templates/spine-leaf-nics.yaml \
        -e /home/stack/templates/spine-leaf-ctlplane.yaml \
        -e /home/stack/templates/spine-leaf-vips.yaml \
        -e /home/stack/templates/spine-leaf-separate.yaml \
        -e /home/stack/templates/nodes_data.yaml \
        -e [OTHER ENVIRONMENT FILES]
    Copy to Clipboard Toggle word wrap
    • network-isolation.yaml 是同一位置中的 Jinja2 文件的呈现名称(network-isolation.j2.yaml)。在部署命令中包括此文件,以确保 director 将每个网络隔离到正确的叶。这样可确保在 overcloud 创建过程中动态创建网络。
    • network-isolation.yaml 后包括 network-environment.yaml 文件。network-environment.yaml 文件为可组合网络参数提供默认的网络配置。
    • network-environment.yaml 后面包括 spine-leaf-nics.yaml 文件。spine-leaf-nics.yaml 文件会覆盖 network-environment.yaml 文件中的默认 NIC 模板映射。
    • 如果您创建了任何其他 spine leaf 网络环境文件,请在 spine-leaf-nics.yaml 文件后包括这些环境文件。
    • 添加任何其他环境文件。例如,含有容器镜像位置或 Ceph 集群配置的环境文件。
  7. 等待启用了 spine-leaf 的 overcloud 部署。

4.8. 在 spine-leaf 部署中添加新叶

当增加网络容量或添加新物理站点时,您可能需要向 Red Hat OpenStack Platform (RHOSP) spine-leaf 网络添加新叶。

前提条件

  • 您的 RHOSP 部署使用 spine-leaf 网络拓扑。

流程

  1. 以 stack 用户身份登录 undercloud 主机。
  2. 查找 undercloud 凭证文件:

    $ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  3. 在适当的基本网络下,在 /usr/share/openstack-tripleo-heat-templates/network_data_Demoe_leaf.yaml 文件中添加一个 leaf 子网作为您要添加的新叶的可组合网络项。

    Example

    在本例中,添加了新的叶(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'
    Copy to Clipboard Toggle word wrap
  4. 为要添加的新叶创建一个角色数据文件。

    1. 复制您要添加的新叶的叶计算和叶 Ceph 存储文件。

      Example

      在本例中,Compute1.yamlCephStorage1.yaml 分别从新 leaf, Compute3.yamlCephStorage3.yaml 复制。

      $ cp ~/roles/Compute1.yaml ~/roles/Compute3.yaml
      $ cp ~/roles/CephStorage1.yaml ~/roles/CephStorage3.yaml
      Copy to Clipboard Toggle word wrap
    2. 编辑新叶文件中的 name,HostnameFormatDefault, 和 deprecated_nic_config_name 参数,以便它们与对应的 Leaf 参数一致。

      Example

      例如,Leaf 1 Compute 文件中的参数具有以下值:

      - name: ComputeLeaf1
        HostnameFormatDefault: '%stackname%-compute-leaf1-%index%'
        deprecated_nic_config_name: 'computeleaf1.yaml'
      Copy to Clipboard Toggle word wrap

      Example

      Leaf 1 Ceph Storage 参数具有以下值:

      - name: CephStorageLeaf1
        HostnameFormatDefault: '%stackname%-cephstorage-leaf1-%index%'
        deprecated_nic_config_name: 'ceph-strorageleaf1.yaml'
      Copy to Clipboard Toggle word wrap
    3. 编辑新叶文件中的 network 参数,使其与对应的 Leaf 网络参数一致。

      Example

      例如,Leaf 1 Compute 文件中的参数具有以下值:

      - name: ComputeLeaf1
        networks:
          InternalApi:
            subnet: internal_api_leaf1
          Tenant:
            subnet: tenant_leaf1
          Storage:
            subnet: storage_leaf1
      Copy to Clipboard Toggle word wrap

      示例

      Leaf 1 Ceph Storage 参数具有以下值:

      - name: CephStorageLeaf1
        networks:
          Storage:
            subnet: storage_leaf1
          StorageMgmt:
            subnet: storage_mgmt_leaf1
      Copy to Clipboard Toggle word wrap
    4. 完成角色配置后,运行以下命令来生成完整的角色数据文件。在您的网络中包括所有叶以及您要添加的新叶。

      示例

      在本例中,leaf3 添加到 leaf0, leaf1, 和 leaf2 中:

      $ openstack overcloud roles generate --roles-path ~/roles -o roles_data_spine_leaf.yaml Controller Compute Compute1 Compute2 Compute3 CephStorage CephStorage1 CephStorage2 CephStorage3
      Copy to Clipboard Toggle word wrap

      这会创建一个完整的 roles_data_Demoe_leaf.yaml 文件,其中包含每个对应叶网络的所有自定义角色。

  5. 为要添加的叶创建自定义 NIC 配置。

    1. 为要添加的新叶复制叶计算和叶 Ceph Storage NIC 配置文件。

      示例

      在本例中,computeleaf1.yamlceph-storageleaf1.yaml 会为新的 leaf, computeleaf3.yamlceph-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
      Copy to Clipboard Toggle word wrap
    2. 在文件的 resource_registry 部分下,在 /usr/share/openstack-tripleo-heat-templates/network_data_Demoe_leaf.yaml 下,添加一组映射到相应 NIC 模板的 ::Net::SoftwareConfig 资源:

      Example

      在本例中,添加了新的叶 NIC 配置文件(computeleaf3.yamlceph-storageleaf3.yaml):

      resource_registry:
        OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/controller.yaml
        OS::TripleO::ComputeLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf0.yaml
        OS::TripleO::ComputeLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf1.yaml
        OS::TripleO::ComputeLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf2.yaml
        OS::TripleO::ComputeLeaf3::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/computeleaf3.yaml
        OS::TripleO::CephStorageLeaf0::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf0.yaml
        OS::TripleO::CephStorageLeaf1::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf1.yaml
        OS::TripleO::CephStorageLeaf2::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf2.yaml
        OS::TripleO::CephStorageLeaf3::Net::SoftwareConfig: /home/stack/templates/spine-leaf-nics/ceph-storageleaf3.yaml
      Copy to Clipboard Toggle word wrap

      这些资源映射会在部署过程中覆盖默认资源映射。

      因此,您现在有一组 NIC 模板和一个将所需的 ::Net::SoftwareConfig 资源映射到它们的环境文件。最终运行 openstack overcloud deploy 命令时,请确保按以下顺序包含环境文件:

    3. /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml,它允许网络隔离。

      请注意,director 从 network-isolation.j2.yaml Jinja2 模板呈现此文件。

    4. /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml,它是默认的网络环境文件,包括默认 NIC 资源映射。

      请注意,director 从 network-environment.j2.yaml Jinja2 模板呈现此文件。

    5. /home/stack/templates/Demoe-leaf-nics.yaml,其中包含您的自定义 NIC 资源映射并覆盖默认 NIC 资源映射。

      以下命令片段演示了排序:

      $ openstack overcloud deploy --templates
          ...
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
          -e /usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml \
          -e /home/stack/templates/spine-leaf-nics.yaml \
          ...
      Copy to Clipboard Toggle word wrap
  6. 更新 control plane 参数。

    ~/templates/Demoe-leaf-ctlplane.yaml 中,在 parameter_defaults 部分下,为新 leaf 网络添加 control plane 子网映射:

    Example

    在本例中,添加了新的叶(leaf3)条目:

    parameter_defaults:
      ...
      ControllerControlPlaneSubnet: leaf0
      Compute0ControlPlaneSubnet: leaf0
      Compute1ControlPlaneSubnet: leaf1
      Compute2ControlPlaneSubnet: leaf2
      Compute3ControlPlaneSubnet: leaf3
      CephStorage0ControlPlaneSubnet: leaf0
      CephStorage1ControlPlaneSubnet: leaf1
      CephStorage2ControlPlaneSubnet: leaf2
      CephStorage3ControlPlaneSubnet: leaf3
    Copy to Clipboard Toggle word wrap
  7. 映射新的叶网络。

    ~/templates/Demoe-leaf-separate.yaml 中,在 parameter_defaults 部分下,包括新叶网络的外部网络映射。

    • 对于扁平网络映射,列出 NeutronFlatNetworks 参数中的新叶(leaf3),并为新叶设置 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"
      Copy to Clipboard Toggle word wrap
    • 对于 VLAN 网络映射,还要将 NeutronNetworkVLANRanges 设置为映射新叶(leaf3)网络的 VLAN:

        NeutronNetworkType: 'geneve,vlan'
        NeutronNetworkVLANRanges: 'leaf0:1:1000,leaf1:1:1000,leaf2:1:1000,leaf3:1:1000'
      Copy to Clipboard Toggle word wrap
  8. 按照 第 4.7 节 “部署启用了 spine-leaf 的 overcloud” 中的步骤重新部署启用了 spine-leaf 的 overcloud。

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部