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

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

手順

  1. 削除するコントローラーノードの UUID を決定し、それを <NODEID> 変数に格納します。<node_name> を、削除するノードの名前に置き換えてください。

    (undercloud)[stack@director ~]$ NODEID=$(openstack server list -f value -c ID --name <node_name>)
  2. Heat リソース ID を特定するには、以下のコマンドを入力します。

    (undercloud)[stack@director ~]$ 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 \
        [OTHER OPTIONS]
    注記
    • -e ~/templates/remove-controller.yaml は、デプロイメントコマンドのこのインスタンスに対してのみ指定します。これ以降のデプロイメント操作からは、この環境ファイルを削除してください。
    • ブートストラップコントローラーノードを置き換え、ノード名を維持する場合は ~/templates/bootstrap-controller.yaml を追加します。詳細は、ブートストラップコントローラーノードの交換 を参照してください。
  5. director は古いノードを削除して、新しいノードを作成してから、オーバークラウドスタックを更新します。以下のコマンドを使用すると、オーバークラウドスタックのステータスをチェックすることができます。

    (undercloud)$ openstack stack list --nested
  6. デプロイコマンドが完了したら、古いノードが新しいノードに置き換えられていることを確認します。

    (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 |
    +------------------------+-----------------------+

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