13.3. 分配可预测的 IP

为了进一步控制生成的环境,director 可以使用每个网络上的特定 IP 地址分配 overcloud 节点。

流程

  1. 创建环境文件以定义预测的 IP 地址:

    $ touch ~/templates/predictive_ips.yaml
  2. ~/templates/predictive_ips.yaml 文件中创建一个 parameter_defaults 部分,并使用以下语法为每个网络上的每个节点定义预先 IP 寻址:

    parameter_defaults:
      <role_name>IPs:
        <network>:
        - <IP_address>
        <network>:
        - <IP_address>

    每个节点角色都有唯一的参数。将 <role_name>IPs 替换为相关参数:

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

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

      例如,如果要在 overcloud 中部署三个带有预测 IP 地址的 Ceph Storage 节点,请使用以下示例语法:

      parameter_defaults:
        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。相同的模式适用于其他节点类型。

      要在 control plane 上配置可预测的 IP 地址,请将 /usr/share/openstack-tripleo-heat-templates/environments/ips-from-pool-ctlplane.yaml 文件复制到 stack 用户的 templates 目录中:

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

      使用以下参数配置新的 ips-from-pool-ctlplane.yaml 文件。您可以将 control plane IP 地址声明与其他网络的 IP 地址声明合并,且只使用一个文件为所有角色中的所有网络声明 IP 地址。您还可以将可预测的 IP 地址用于 spine/leaf。每个节点必须具有正确的子网的 IP 地址。

      parameter_defaults:
        ControllerIPs:
          ctlplane:
          - 192.168.24.10
          - 192.168.24.11
          - 192.168.24.12
          internal_api:
          - 172.16.1.20
          - 172.16.1.21
          - 172.16.1.22
          external:
          - 10.0.0.40
          - 10.0.0.57
          - 10.0.0.104
        ComputeLeaf1IPs:
          ctlplane:
          - 192.168.25.100
          - 192.168.25.101
          internal_api:
          - 172.16.2.100
          - 172.16.2.101
        ComputeLeaf2IPs:
          ctlplane:
          - 192.168.26.100
          - 192.168.26.101
          internal_api:
          - 172.16.3.100
          - 172.16.3.101

      确保您选择的 IP 地址不在网络环境文件中定义的每个网络的分配池之外。例如,确保 internal_api 分配不在 InternalApiAllocationPools 范围之外,以避免与自动选择的任何 IP 冲突。另外,请确保 IP 分配与 VIP 配置不冲突,适用于标准可预测的 VIP 放置(请参阅 第 13.4 节 “分配可预测的虚拟 IP”)或外部负载均衡(请参阅 第 21.4 节 “配置外部负载均衡”)。

      重要

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

  3. 要在部署期间应用此配置,请使用 openstack overcloud deploy 命令包括 predictive_ips.yaml 环境文件。

    重要

    如果使用网络隔离,请在 network-isolation.yaml 文件后包括 predictive_ips.yaml 文件:

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