17.6. 在替换使用可预测的 IP 地址和 HostNameMap 的节点时保留主机名

如果将 overcloud 配置为使用可预测的 IP 地址,并且 HostNameMap 将基于 heat 的主机名映射到预置备节点的主机名,则必须配置 overcloud,以将新的替换节点索引映射到 IP 地址和主机名。

流程

  1. stack 用户的身份登录 undercloud。
  2. Source stackrc 文件:

    $ source ~/stackrc
  3. 检索您要替换资源的 physical_resource_idremoved_rsrc_list

    (undercloud)$ openstack stack resource show <stack> <role>
    • <stack> 替换为资源所属的堆栈的名称,如 overcloud
    • & lt;role> 替换为您要替换节点的角色的名称,如 Compute

      输出示例:

      +------------------------+-----------------------------------------------------------+
      | Field                  | Value                                                     |
      +------------------------+-----------------------------------------------------------+
      | attributes             | {u'attributes': None, u'refs': None, u'refs_map': None,   |
      |                        | u'removed_rsrc_list': [u'2', u'3']}          | 1
      | creation_time          | 2017-09-05T09:10:42Z                                      |
      | description            |                                                           |
      | links                  | [{u'href': u'http://192.168.24.1:8004/v1/bd9e6da805594de9 |
      |                        | 8d4a1d3a3ee874dd/stacks/overcloud/1c7810c4-8a1e-          |
      |                        | 4d61-a5d8-9f964915d503/resources/Compute', u'rel':        |
      |                        | u'self'}, {u'href': u'http://192.168.24.1:8004/v1/bd9e6da |
      |                        | 805594de98d4a1d3a3ee874dd/stacks/overcloud/1c7810c4-8a1e- |
      |                        | 4d61-a5d8-9f964915d503', u'rel': u'stack'}, {u'href': u'h |
      |                        | ttp://192.168.24.1:8004/v1/bd9e6da805594de98d4a1d3a3ee874 |
      |                        | dd/stacks/overcloud-Compute-zkjccox63svg/7632fb0b-        |
      |                        | 80b1-42b3-9ea7-6114c89adc29', u'rel': u'nested'}]         |
      | logical_resource_id    | Compute                                                   |
      | physical_resource_id   | 7632fb0b-80b1-42b3-9ea7-6114c89adc29                      |
      | required_by            | [u'AllNodesDeploySteps',                                  |
      |                        | u'ComputeAllNodesValidationDeployment',                   |
      |                        | u'AllNodesExtraConfig', u'ComputeIpListMap',              |
      |                        | u'ComputeHostsDeployment', u'UpdateWorkflow',             |
      |                        | u'ComputeSshKnownHostsDeployment', u'hostsConfig',        |
      |                        | u'SshKnownHostsConfig', u'ComputeAllNodesDeployment']     |
      | resource_name          | Compute                                                   |
      | resource_status        | CREATE_COMPLETE                                           |
      | resource_status_reason | state changed                                             |
      | resource_type          | OS::Heat::ResourceGroup                                   |
      | updated_time           | 2017-09-05T09:10:42Z                                      |
      +------------------------+-----------------------------------------------------------+
      1
      removed_rsrc_list 列出了已经为资源删除的节点索引。
  4. 检索 resource_name,以确定 heat 应用到此资源节点的最大索引:

    (undercloud)$ openstack stack resource list <physical_resource_id>
    • 使用在第 3 步中获取的 ID 替换 <physical_resource_id>
  5. 使用 resource_nameremoved_rsrc_list 确定 heat 将应用到新节点的下一个索引:

    • 如果 removed_rsrc_list 为空,则下一个索引将是(current_maximum_index)+ 1。
    • 如果 removed_rsrc_list 包含值(current_maximum_index)+ 1,则下一个索引将是下一个可用索引。
  6. 检索替换裸机节点的 ID:

    (undercloud)$ openstack baremetal node list
  7. 使用新索引更新替换节点的功能:

    openstack baremetal node set --property capabilities='node:<role>-<index>,boot_option:local' <node>
    • <role> 替换为您要替换节点的角色的名称,如 compute
    • 将 & lt;index& gt; 替换为在第 5 步中计算的索引。
    • <node> 替换为裸机节点的 ID。

    计算调度程序使用节点功能与部署时的节点匹配。

  8. 通过在 HostnameMap 配置中添加索引来为新节点分配主机名,例如:

    parameter_defaults:
      ControllerSchedulerHints:
        'capabilities:node': 'controller-%index%'
      ComputeSchedulerHints:
        'capabilities:node': 'compute-%index%'
      HostnameMap:
        overcloud-controller-0: overcloud-controller-prod-123-0
        overcloud-controller-1: overcloud-controller-prod-456-0 1
        overcloud-controller-2: overcloud-controller-prod-789-0
        overcloud-controller-3: overcloud-controller-prod-456-0 2
        overcloud-compute-0: overcloud-compute-prod-abc-0
        overcloud-compute-3: overcloud-compute-prod-abc-3 3
        overcloud-compute-8: overcloud-compute-prod-abc-3 4
        ....
    1
    您要删除并替换为新节点的节点。
    2
    新节点。
    3
    您要删除并替换为新节点的节点。
    4
    新节点。
    注意

    不要删除从 HostnameMap 中删除的节点映射。

  9. 将替换节点的 IP 地址添加到网络 IP 地址映射文件 ips-from-pool-all.yaml 中的每个网络 IP 地址列表的末尾。在以下示例中,新索引 overcloud-controller-3 的 IP 地址添加到每个 ControllerIPs 网络的 IP 地址列表中,并分配与 overcloud-controller-1 相同的 IP 地址,因为它替换了 overcloud-controller-1。新索引 overcloud-compute-8 的 IP 地址也添加到每个 ComputeIPs 网络的 IP 地址列表中,并分配与它替换的索引相同的 IP 地址:

    parameter_defaults:
      ControllerIPs:
        ...
        internal_api:
          - 192.168.1.10  1
          - 192.168.1.11  2
          - 192.168.1.12  3
          - 192.168.1.11  4
        ...
        storage:
          - 192.168.2.10
          - 192.168.2.11
          - 192.168.2.12
          - 192.168.2.11
        ...
    
      ComputeIPs:
        ...
        internal_api:
          - 172.17.0.10 5
          - 172.17.0.11 6
          - 172.17.0.11 7
        ...
        storage:
          - 172.17.0.10
          - 172.17.0.11
          - 172.17.0.11
        ...
    1
    分配给索引 0 的 IP 地址,主机名为 overcloud-controller-prod-123-0
    2
    分配给索引 1 的 IP 地址,主机名 overcloud-controller-prod-456-0。此节点由索引 3 替代。不要删除此条目。
    3
    分配给索引 2 的 IP 地址,主机名为 overcloud-controller-prod-789-0
    4
    分配给索引 3 的 IP 地址,主机名为 overcloud-controller-prod-456-0。这是替换索引 1 的新节点。
    5
    分配给索引 0 的 IP 地址,主机名为 overcloud-compute-0
    6
    分配给索引 1 的 IP 地址,主机名为 overcloud-compute-3。此节点由索引 2 替代。不要删除此条目。
    7
    分配给索引 2 的 IP 地址,主机名为 overcloud-compute-8。这是替换索引 1 的新节点。