13.5. コントローラーノード置き換えのトリガー

古いコントローラーノードを削除して新規コントローラーノードに置き換えるには、以下の手順を実施します。

手順

  1. 削除するノードの UUID を把握し、それを NODEID 変数に保管します。NODE_NAME は、削除するノードの名前に置き換えてください。

    $ NODEID=$(openstack server list -f value -c ID --name NODE_NAME)
  2. Heat リソース ID を特定するには、以下のコマンドを入力します。

    $ openstack stack resource show overcloud ControllerServers -f json -c attributes | jq --arg NODEID "$NODEID" -c '.attributes.value | keys[] as $k | if .[$k] == $NODEID then "Node index \($k) for \(.[$k])" else empty end'
  3. 以下の内容で環境ファイル ~/templates/remove-controller.yaml を作成し、削除するコントローラーノードのノードインデックスを含めます。

    parameters:
      ControllerRemovalPolicies:
        [{'resource_list': ['NODE_INDEX']}]
  4. ご自分の環境に該当するその他の環境ファイルと共に remove-controller.yaml 環境ファイルを指定して、オーバークラウドデプロイメントコマンドを実行します。

    (undercloud) $ openstack overcloud deploy --templates \
        -e /home/stack/templates/remove-controller.yaml \
        -e /home/stack/templates/node-info.yaml \
        [OTHER OPTIONS]
    注記

    -e ~/templates/remove-controller.yaml は、デプロイメントコマンドのこのインスタンスに対してのみ指定します。これ以降のデプロイメント操作からは、この環境ファイルを削除してください。

  5. director は古いノードを削除して、新しいノードを作成してから、オーバークラウドスタックを更新します。以下のコマンドを使用すると、オーバークラウドスタックのステータスをチェックすることができます。

    (undercloud) $ openstack stack list --nested
  6. デプロイメントコマンドの実行が完了すると、director の出力には古いノードが新規ノードに置き換えられたことが表示されます。

    (undercloud) $ openstack server list -c Name -c Networks
    +------------------------+-----------------------+
    | Name                   | Networks              |
    +------------------------+-----------------------+
    | overcloud-compute-0    | ctlplane=192.168.0.44 |
    | overcloud-controller-0 | ctlplane=192.168.0.47 |
    | overcloud-controller-2 | ctlplane=192.168.0.46 |
    | overcloud-controller-3 | ctlplane=192.168.0.48 |
    +------------------------+-----------------------+

    これで、新規ノードが稼動状態のコントロールプレーンサービスをホストするようになります。