Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第 9 章 基本网络隔离

本章介绍了如何使用标准网络隔离配置 overcloud。这包括:

  • 用于启用网络隔离的渲染环境文件(/usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml)。
  • 一个复制的环境文件来配置网络默认值(/usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml)。
  • 用于定义网络设置的 network_data 文件,如 IP 范围、子网和虚拟 IP。本例演示了如何创建默认副本并编辑它以适应您自己的网络。
  • 为每个节点定义 NIC 布局的模板。overcloud 核心模板集合包含一组用于不同用例的默认值。
  • 启用 NIC 的环境文件。本例使用位于 环境 目录中的默认 文件。
  • 自定义您的网络参数的任何其他环境文件。
注意

运行 openstack overcloud netenv validate 命令,以验证您的 network-environment.yaml 文件的语法。此命令还会验证用于计算、控制器、存储和可组合角色网络文件的独立 nic-config 文件。使用 -f--file 选项指定您要验证的文件:

$ openstack overcloud netenv validate -f ~/templates/network-environment.yaml

本章中的以下内容演示了如何定义各个方面:

9.1. 网络隔离

overcloud 默认为 provisioning 网络分配服务。但是,director 可以将 overcloud 网络流量划分为隔离的网络。要使用隔离的网络,overcloud 包含可启用此功能的环境文件。核心 heat 模板中的 environments/network-isolation.j2.yaml 文件是一个 Jinja2 文件,该文件在可组合网络文件中为每个网络定义所有端口和 VIP。在呈现时,它会使用完整资源 registry 在同一位置生成一个 network-isolation.yaml 文件:

resource_registry:
  # networks as defined in network_data.yaml
  OS::TripleO::Network::Storage: ../network/storage.yaml
  OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt.yaml
  OS::TripleO::Network::InternalApi: ../network/internal_api.yaml
  OS::TripleO::Network::Tenant: ../network/tenant.yaml
  OS::TripleO::Network::External: ../network/external.yaml

  # Port assignments for the VIPs
  OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage.yaml
  OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt.yaml
  OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api.yaml
  OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external.yaml
  OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip.yaml

  # Port assignments by role, edit role definition to assign networks to roles.
  # Port assignments for the Controller
  OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api.yaml
  OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant.yaml
  OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external.yaml

  # Port assignments for the Compute
  OS::TripleO::Compute::Ports::StoragePort: ../network/ports/storage.yaml
  OS::TripleO::Compute::Ports::InternalApiPort: ../network/ports/internal_api.yaml
  OS::TripleO::Compute::Ports::TenantPort: ../network/ports/tenant.yaml

  # Port assignments for the CephStorage
  OS::TripleO::CephStorage::Ports::StoragePort: ../network/ports/storage.yaml
  OS::TripleO::CephStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml

此文件的第一部分具有 OS::TripleO::Network::* 资源的资源 registry 声明。默认情况下,这些资源使用 OS::Heat::None 资源类型,这不会创建任何网络。通过将这些资源重定向到每个网络的 YAML 文件,您可以启用创建这些网络。

接下来的几个部分为每个角色中的节点创建 IP 地址。控制器节点在每个网络上都有 IP。计算和存储节点,各自在网络子集中都有 IP。

overcloud 网络的其他功能,如 第 10 章 自定义可组合网络第 11 章 自定义网络接口模板 依赖于此网络隔离环境文件。因此,您需要使用部署命令包含所生成的文件的名称。例如:

$ openstack overcloud deploy --templates \
    ...
    -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
    ...