Red Hat Training

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

8.3. 分配可预测 IP

为了进一步控制生成的环境,director 也可以为每个网络分配具有特定 IP 的 Overcloud 节点。在核心 Heat 模板集合中,使用 environment /ips-from-pool-all.yaml 环境文件。将这个文件复制到 stack 用户的 templates 目录中。

$ cp /usr/share/openstack-tripleo-heat-templates/environments/ips-from-pool-all.yaml ~/templates/.

ips-from-pool-all.yaml 文件中有两个主要部分。

第一个是覆盖默认值的一组 resource_registry 引用。它们告知 director 对节点类型上给定端口使用特定 IP。修改每个资源,以使用其对应模板的绝对路径。例如:

  OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/external_from_pool.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/internal_api_from_pool.yaml
  OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_from_pool.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/storage_mgmt_from_pool.yaml
  OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/tenant_from_pool.yaml

默认配置在所有节点类型上设置所有网络,以使用预分配的 IP。要允许特定网络或节点类型使用默认 IP 分配,只需从环境文件中删除与该节点类型或网络相关的 resource_registry 条目。

第二部分是 parameter_defaults,其中分配了实际的 IP 地址。每个节点类型都有一个关联的参数:

  • Controller 节点的 ControllerIP。
  • Compute 节点的 NovaComputeIPs
  • Ceph Storage 节点的 CephStorageIPs
  • BlockStorageIPs 用于块存储节点。
  • Object Storage 节点的 Swift StorageIP。
  • [ROLE]IPs 用于自定义角色。将 [ROLE] 替换为角色名称。

每个参数都是网络名称到地址列表的映射。每个网络类型必须至少具有任意数量的地址,因为该网络上有节点。director 按顺序分配地址。每种类型的第一个节点在每个对应列表上接收第一个地址,第二个节点在各个对应的列表中接收第二个地址,以此类推。

例如,如果 Overcloud 将包含三个 Ceph Storage 节点,CephStorageIPs 参数可能类似如下:

CephStorageIPs:
  storage:
  - 172.16.1.100
  - 172.16.1.101
  - 172.16.1.102
  storage_mgmt:
  - 172.16.3.100
  - 172.16.3.101
  - 172.16.3.102

第一个 Ceph Storage 节点接收两个地址:172.16.1.100 和 172.16.3.100。第二个会收到 172.16.1.101 和 172.16.3.101,第三个接收 172.16.1.102 和 172.16.3.102。相同的模式适用于其他节点类型。

确保所选 IP 地址不在网络环境文件中定义的每个网络的分配池之外(请参阅 第 7.2 节 “创建网络环境文件”)。例如,确保 internal_api 分配不在 InternalApiAllocationPools 范围之外。这可避免与自动选择的任何 IP 冲突。同样,请确保 IP 分配与 VIP 配置没有冲突,对于标准的可预测的 VIP 放置(请参阅 第 8.4 节 “分配可预测虚拟 IP”)或外部负载均衡(请参阅 第 14.1 节 “配置外部负载平衡”)。

重要

如果删除了 overcloud 节点,请不要删除 IP 列表中的条目。IP 列表基于底层 Heat 索引,即使删除节点也不会改变。要在列表中指定给定条目已不再使用,请将 IP 值替换为值,如 DELETEDUNUSED。不应从 IP 列表中删除条目,只更改或添加条目。

要在部署期间应用此配置,请使用 openstack overcloud deploy 命令包含 ips-from-pool-all.yaml 环境文件。

重要

如果使用网络隔离(请参阅 第 7 章 隔离网络),在 network-isolation.yaml 文件后包含 ips-from-pool-all.yaml 文件。

例如:

$ openstack overcloud deploy --templates \
  -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
  -e ~/templates/ips-from-pool-all.yaml \
  [OTHER OPTIONS]