17.6. 予測可能な IP アドレスと HostNameMap を使用するノードを置き換えるときにホスト名を保持する

予測可能な IP アドレスを使用するようにオーバークラウドを設定し、ヒートベースのホスト名を事前プロビジョニングされたノードのホスト名にマップするように HostNameMap を設定した場合は、新しい置換ノードインデックスを IP アドレスとホスト名にマップするようにオーバークラウドを設定する必要があります。

手順

  1. アンダークラウドに stack ユーザーとしてログインします。
  2. stackrc ファイルを取得します。

    $ source ~/stackrc
  3. 置き換えるリソースの physical_resource_idremoved_rsrc_list を取得します。

    (undercloud)$ openstack stack resource show <stack> <role>
    • <stack> を、リソースが属するスタックの名前 (overcloud など) に置き換えます。
    • <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>
    • <physical_resource_id> を手順 2 で取得した 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 など) に置き換えます。
    • <index> を手順 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 を置き換えるため、overcloud-controller-1 と同じ IP アドレスが割り当てられます。新しいインデックスの IP アドレス overcloud-compute-8 も、各 ComputeIPs ネットワークの IP アドレスリストの最後に追加され、置き換えられるインデックス overcloud-compute-3 と同じ 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 を置き換える新しいノードです。