10.3. 可组合网络


如果要在不同网络上托管特定的网络流量,可以创建自定义可组合网络。director 提供启用了网络隔离的默认网络拓扑。您可以在 /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml 中找到此配置。

overcloud 默认使用以下预定义网络段集合:

  • 内部 API
  • 存储
  • 存储管理
  • 租户
  • 外部

您可以使用可组合网络为各种服务添加网络。例如,如果您有一个专用于 NFS 流量的网络,您可以将其提供给多个角色。

director 支持在部署和更新阶段创建自定义网络。您可以将这些额外网络用于裸机节点、系统管理或为不同的角色创建单独的网络。您还可以使用它们为网络间路由流量的分割部署创建多组网络。

10.3.1. 添加可组合网络

使用可组合网络为各种服务添加网络。例如,如果您有一个专用于存储备份流量的网络,您可以将网络提供给多个角色。

您可以在 /usr/share/openstack-tripleo-heat-templates/network-data-samples 目录中找到示例文件。

流程

  1. 列出可用的示例配置文件:

    $ ll /usr/share/openstack-tripleo-heat-templates/network-data-samples/
    -rw-r--r--. 1 root root 1554 May 11 23:04 default-network-isolation-ipv6.yaml
    -rw-r--r--. 1 root root 1181 May 11 23:04 default-network-isolation.yaml
    -rw-r--r--. 1 root root 1126 May 11 23:04 ganesha-ipv6.yaml
    -rw-r--r--. 1 root root 1100 May 11 23:04 ganesha.yaml
    -rw-r--r--. 1 root root 3556 May 11 23:04 legacy-routed-networks-ipv6.yaml
    -rw-r--r--. 1 root root 2929 May 11 23:04 legacy-routed-networks.yaml
    -rw-r--r--. 1 root root  383 May 11 23:04 management-ipv6.yaml
    -rw-r--r--. 1 root root  290 May 11 23:04 management.yaml
    -rw-r--r--. 1 root root  136 May 11 23:04 no-networks.yaml
    -rw-r--r--. 1 root root 2725 May 11 23:04 routed-networks-ipv6.yaml
    -rw-r--r--. 1 root root 2033 May 11 23:04 routed-networks.yaml
    -rw-r--r--. 1 root root  943 May 11 23:04 vip-data-default-network-isolation.yaml
    -rw-r--r--. 1 root root  848 May 11 23:04 vip-data-fixed-ip.yaml
    -rw-r--r--. 1 root root 1050 May 11 23:04 vip-data-routed-networks.yaml
    Copy to Clipboard Toggle word wrap
  2. 复制最适合您的需要的网络配置文件示例:

    $ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/default-network-isolation.yaml /home/stack/templates/network_data.yaml
    Copy to Clipboard Toggle word wrap
  3. 编辑 network_data.yaml 配置文件并为新网络添加一个部分:

    - name: StorageBackup
      vip: false
      name_lower: storage_backup
      subnets:
        storage_backup_subnet:
          ip_subnet: 172.16.6.0/24
          allocation_pools:
            - start: 172.16.6.4
            - end: 172.16.6.250
          gateway_ip: 172.16.6.1
    Copy to Clipboard Toggle word wrap

    您可以使用 network_data.yaml 文件中的以下参数:

    name
    设置网络的名称。
    vip
    启用在网络上创建虚拟 IP 地址。
    name_lower
    设置名称的小写版本,director 映射到分配给 roles_data.yaml 文件中的角色的对应网络。
    subnets
    一个或多个子网防御。
    subnet_name
    设置子网的名称。
    ip_subnet
    以 CIDR 格式设置 IPv4 子网。
    allocation_pools
    设置 IPv4 子网的 IP 范围。
    gateway_ip
    设置网络的网关。
    vlan
    设置网络的 VLAN ID。
    ipv6
    将值设为 true 或 false。
    ipv6_subnet
    设置 IPv6 子网。
    gateway_ipv6
    设置 IPv6 网络的网关。
    ipv6_allocation_pools
    设置 IPv6 子网的 IP 范围。
    routes_ipv6
    设置 IPv6 网络的路由。
  4. 将您需要的网络 VIP 定义模板示例从 /usr/share/openstack-tripleo-heat-templates/network-data-samples 复制到您的环境文件目录中。以下示例将 vip-data-default-network-isolation.yaml 复制到名为 vip_data.yaml 的本地环境文件:

    $ cp /usr/share/openstack-tripleo-heat-templates/network-data-samples/vip-data-default-network-isolation.yaml  /home/stack/templates/vip_data.yaml
    Copy to Clipboard Toggle word wrap
  5. 编辑 vip_data.yaml 配置文件。虚拟 IP 数据是虚拟 IP 地址定义的列表,各自包含分配 IP 地址的网络的名称。

    - network: storage_mgmt
      dns_name: overcloud
    - network: internal_api
      dns_name: overcloud
    - network: storage
      dns_name: overcloud
    - network: external
      dns_name: overcloud
      ip_address: <vip_address>
    - network: ctlplane
      dns_name: overcloud
    Copy to Clipboard Toggle word wrap
    • <vip_address > 替换为所需的虚拟 IP 地址。

    您可以使用 vip_data.yaml 文件中的以下参数:

    network
    设置 neutron 网络名称。这是唯一需要的参数。
    ip_address
    设置 VIP 的 IP 地址。
    子网
    设置 neutron 子网名称。在创建虚拟 IP neutron 端口时,使用 指定子网。当您的部署使用路由网络时,需要此参数。
    dns_name
    设置 FQDN (完全限定域名)。
    name
    设置虚拟 IP 名称。
  6. 复制示例网络配置模板。Jinja2 模板用于定义 NIC 配置模板。如果其中一个示例与您的要求匹配,请浏览 /usr/share/ansible/roles/tripleo_network_config/templates/ 目录中提供的示例。如果示例与您的要求不匹配,请复制示例配置文件,并根据您的需要进行修改:

    $ cp /usr/share/ansible/roles/tripleo_network_config/templates/single_nic_vlans/single_nic_vlans.j2 /home/stack/templates/
    Copy to Clipboard Toggle word wrap
  7. 编辑 single_nic_vlans.j2 配置文件:

    ---
    {% 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 %}
    Copy to Clipboard Toggle word wrap
  8. overcloud-baremetal-deploy.yaml 配置文件中设置 network_config 模板:

    - name: CephStorage
      count: 3
      defaults:
        networks:
        - network: storage
        - network: storage_mgmt
        - network: storage_backup
        network_config:
          template: /home/stack/templates/single_nic_vlans.j2
    Copy to Clipboard Toggle word wrap
  9. 调配 overcloud 网络。此操作会生成一个输出文件,该文件将在部署 overcloud 时使用环境文件:

    (undercloud)$ openstack overcloud network provision --output <deployment_file> /home/stack/templates/<networks_definition_file>.yaml
    Copy to Clipboard Toggle word wrap
    • <networks_definition_file > 替换为网络定义文件的名称,如 network_data.yaml
    • <deployment_file > 替换为要在部署命令中生成的 heat 环境文件的名称,如 /home/stack/templates/overcloud-networks-deployed.yaml
  10. 置备网络 VIP 并生成 vip-deployed-environment.yaml 文件。在部署 overcloud 时,您可以使用此文件:

    (overcloud)$ openstack overcloud network vip provision  --stack <stack> --output <deployment_file> /home/stack/templates/vip_data.yaml
    Copy to Clipboard Toggle word wrap
    • 将 & lt;stack > 替换为置备网络 VIP 的堆栈的名称。如果未指定,则默认为 overcloud。
    • <deployment_file > 替换为要在部署命令中生成的 heat 环境文件的名称,如 /home/stack/templates/overcloud-vip-deployed.yaml

10.3.2. 在角色中包含可组合网络

您可以将可组合网络分配给环境中定义的 overcloud 角色。例如,您可以包括带有 Ceph Storage 节点的自定义 StorageBackup 网络。

流程

  1. 如果您还没有自定义 roles_data.yaml 文件,请将默认值复制到您的主目录中:

    $ cp /usr/share/openstack-tripleo-heat-templates/roles_data.yaml /home/stack/templates/roles_data.yaml
    Copy to Clipboard Toggle word wrap
  2. 编辑自定义 roles_data.yaml 文件。
  3. 将网络名称包括在您要向其添加 网络的 角色的 network 列表中。例如,要将 StorageBackup 网络添加到 Ceph Storage 角色中,请使用以下示例片断:

    - name: CephStorage
      description: |
        Ceph OSD Storage node role
      networks:
        Storage
          subnet: storage_subnet
        StorageMgmt
          subnet: storage_mgmt_subnet
        StorageBackup
          subnet: storage_backup_subnet
    Copy to Clipboard Toggle word wrap
  4. 将自定义网络添加到其各自角色后,保存文件。

运行 openstack overcloud deploy 命令时,请使用 -r 选项包含自定义 roles_data.yaml 文件。如果没有使用 -r 选项,部署命令将默认的角色集合与相应的分配网络一起使用。

10.3.3. 为可组合网络分配 OpenStack 服务

每个 OpenStack 服务都分配到资源注册表中的默认网络类型。这些服务绑定到网络分配的网络中的 IP 地址。虽然 OpenStack 服务划分到这些网络,但实际物理网络的数量可能会有所不同,如网络环境文件中定义的不同。您可以通过在环境文件中定义新的网络映射(如 /home/stack/templates/service-reassignments.yaml ),将 OpenStack 服务重新分配给不同的网络类型。ServiceNetMap 参数决定了您要用于每个服务的网络类型。

例如,您可以通过修改突出显示的部分将存储管理网络服务重新分配给存储备份网络:

parameter_defaults:
  ServiceNetMap:
    SwiftStorageNetwork: storage_backup
    CephClusterNetwork: storage_backup
Copy to Clipboard Toggle word wrap

更改这些参数到 storage_backup,会将这些服务放置在 Storage Backup 网络中,而不是 Storage Management 网络。这意味着,您必须只为 Storage Backup 网络而不是 Storage Management 网络定义一组 parameter_defaults

director 将自定义 ServiceNetMap 参数定义合并到从 ServiceNetMapDefaults 获取的预定义默认值列表中,并覆盖默认值。director 返回完整列表,包括自定义到 ServiceNetMap,后者用于为各种服务配置网络分配。

对于使用 Pacemaker 的节点,服务映射适用于 network_data.yaml 文件中使用 vip: true 的网络。overcloud 负载均衡器将来自 VIP 的流量重定向到特定的服务端点。

注意

您可以在 /usr/share/openstack-tripleo-heat-templates/network/service_net_map.j2.yaml 文件的 ServiceNetMapDefaults 参数中找到默认服务的完整列表。

10.3.4. 启用自定义可组合网络

使用其中一个默认 NIC 模板启用自定义可组合网络。在本例中,使用带有 VLAN 模板的 Single NIC (custom_single_nic_vlans)。

流程

  1. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  2. 置备 overcloud 网络:

    $ openstack overcloud network provision \
      --output overcloud-networks-deployed.yaml \
      custom_network_data.yaml
    Copy to Clipboard Toggle word wrap
  3. 置备网络 VIP:

    $ openstack overcloud network vip provision \
        --stack overcloud \
        --output overcloud-networks-vips-deployed.yaml \
         custom_vip_data.yaml
    Copy to Clipboard Toggle word wrap
  4. 置备 overcloud 节点:

    $ openstack overcloud node provision \
        --stack overcloud \
        --output overcloud-baremetal-deployed.yaml \
        overcloud-baremetal-deploy.yaml
    Copy to Clipboard Toggle word wrap
  5. 构建 openstack overcloud deploy 命令,按所需顺序指定配置文件和模板,例如:

    $ openstack overcloud deploy --templates \
      --networks-file network_data_v2.yaml \
      -e overcloud-networks-deployed.yaml \
      -e overcloud-networks-vips-deployed.yaml \
      -e overcloud-baremetal-deployed.yaml
      -e custom-net-single-nic-with-vlans.yaml
    Copy to Clipboard Toggle word wrap

本例命令在 overcloud 中的节点之间部署可组合网络,包括额外的自定义网络。

10.3.5. 重命名默认网络

您可以使用 network_data.yaml 文件修改默认网络的用户可见名称:

  • InternalApi
  • 外部
  • 存储
  • StorageMgmt
  • 租户

要更改这些名称,请不要修改 name 字段。相反,将 name_lower 字段更改为网络的新名称,并使用新名称更新 ServiceNetMap。

流程

  1. network_data.yaml 文件中,为您要重命名的每个网络的 name_lower 参数输入新名称:

    - name: InternalApi
      name_lower: MyCustomInternalApi
    Copy to Clipboard Toggle word wrap
  2. service_net_map_replace 参数中包括 name_lower 参数的默认值:

    - name: InternalApi
      name_lower: MyCustomInternalApi
      service_net_map_replace: internal_api
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat