22.2. director でデプロイされた Ceph Storage と組み合わせたコントローラーノードのアップグレード

director を使用してデプロイされた Red Hat Ceph Storage クラスターがデプロイメントで使用される場合は、以下の手順を完了する必要があります。

すべてのコントローラーノードを OpenStack Platform 16.1 にアップグレードする場合は、ブートストラップコントローラーノードからアップグレードを始める必要があります。

ブートストラップコントローラーノードのアップグレードプロセス中、新しい Pacemaker クラスターが作成され、新しい Red Hat OpenStack 16.1 コンテナーがノードで起動します。一方、残りのコントローラーノードは Red Hat OpenStack 13 で稼働を続けます。

ブートストラップノードをアップグレードしたら、Pacemaker サービスが含まれるその他のノードをアップグレードし、ブートストラップノードで起動した新しい Pacemaker クラスターに各ノードが参加するようにしなければなりません。詳細は、オーバークラウドノードのアップグレードワークフロー を参照してください。

以下の例では、コントローラーノードの名前はデフォルトの overcloud-controller-NODEID 命名規則を使用して名前を付けています。これには、以下の 3 つのコントローラーノードが含まれます。

  • overcloud-controller-0
  • overcloud-controller-1
  • overcloud-controller-2

これらの値は、該当する実際のノード名に置き換てください。

注記

デフォルトのスタック名 (overcloud) を使用していない場合は、--stack STACK NAME オプションでスタック名を設定します。STACK NAME は実際のスタック名に置き換えます。

手順

  1. stackrc ファイルを取得します。

    $ source ~/stackrc
  2. アンダークラウドノードで以下のコマンドを実行し、ブートストラップコントローラーノードを特定します。

    $ tripleo-ansible-inventory --list --stack overcloud |jq .overcloud_Controller.hosts[0]
  3. ブートストラップ Controller ノードをアップグレードします。

    1. ceph_systemd タグを指定して外部アップグレードコマンドを実行します。

      $ openstack overcloud external-upgrade run --stack <stack_name> --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-0

      <stack_name> は、実際のスタック名に置き換えます。

      このコマンドにより、以下の操作が行われます。

      • Podman 管理を使用するために、Ceph Storage コンテナーを制御する systemd ユニットを変更する。
      • ceph_ansible_limit 変数を使用して、アクションを選択したコントローラーノードに制限する。

      このステップは、leapp によるアップグレードに向けて Ceph Storage サービスを準備するための予備的な処置です。

    2. system_upgrade タグを指定してアップグレードコマンドを実行します。

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-controller-0

      このコマンドにより、以下のアクションが行われます。

      • Leapp によるオペレーティングシステムのアップグレードを実施する。
      • Leapp によるアップグレードの一部としてリブートを実施する。

        重要

        次のコマンドにより、コントロールプレーンで機能停止が生じます。これ以降の数ステップを実施している間は、標準的なオーバークラウド操作を行うことはできません。

    3. system_upgrade_transfer_data タグを指定して外部アップグレードコマンドを実行します。

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags system_upgrade_transfer_data

      このコマンドにより、最新バージョンのデータベースが既存のノードからブートストラップノードにコピーされます。

    4. nova_hybrid_state タグを指定してアップグレードコマンドを実行し、upgrade_steps_playbook.yaml Playbook だけを実行します。

      $ openstack overcloud upgrade run --stack STACK NAME --playbook upgrade_steps_playbook.yaml --tags nova_hybrid_state --limit all

      このコマンドにより、コンピュートノード上の一時的な 16.1 コンテナーが起動します。これにより、後のステップでコンピュートノードをアップグレードする際に、ワークロードの移行が円滑に行われます。

    5. タグを指定せずにアップグレードコマンドを実行します。

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-controller-0

      このコマンドにより、Red Hat OpenStack Platform のアップグレードが実施されます。

      重要

      このコマンドの処理が完了すると、コントロールプレーンがアクティブになります。再び標準的なオーバークラウド操作を実施することができます。

    6. アップグレード後に新しい Pacemaker クラスターが起動していること、および galera、rabbit、haproxy、redis 等のコントロールプレーンサービスが実行中であることを確認します。

      $ sudo pcs status
  4. 次のコントローラーノードをアップグレードします。

    1. 古いクラスターが実行されなくなったことを確認します。

      $ sudo pcs status

      クラスターが実行されていない場合、以下のようなエラーが表示されます。

      Error: cluster is not currently running on this node
    2. ceph_systemd タグを指定して外部アップグレードコマンドを実行します。

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-1

      このコマンドにより、以下の操作が行われます。

      • Podman 管理を使用するために、Ceph Storage コンテナーを制御する systemd ユニットを変更する。
      • ceph_ansible_limit 変数を使用して、アクションを選択したコントローラーノードに制限する。

      このステップは、leapp によるアップグレードに向けて Ceph Storage サービスを準備するための予備的な処置です。

    3. 次のコントローラーノードで、system_upgrade タグを指定してアップグレードコマンドを実行します。

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-controller-1

      このコマンドにより、以下のアクションが行われます。

      • Leapp によるオペレーティングシステムのアップグレードを実施する。
      • Leapp によるアップグレードの一部としてリブートを実施する。
    4. タグを指定せずにアップグレードコマンドを実行します。

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-controller-0,overcloud-controller-1

      このコマンドにより、Red Hat OpenStack Platform のアップグレードが実施されます。このノードに加えて、前のステップでアップグレードしたブートストラップノードを --limit オプションに含めます。

  5. 最後のコントローラーノードをアップグレードします。

    1. 古いクラスターが実行されなくなったことを確認します。

      $ sudo pcs status

      クラスターが実行されていない場合、以下のようなエラーが表示されます。

      Error: cluster is not currently running on this node
    2. ceph_systemd タグを指定して外部アップグレードコマンドを実行します。

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-controller-2

      このコマンドにより、以下の操作が行われます。

      • Podman 管理を使用するために、Ceph Storage コンテナーを制御する systemd ユニットを変更する。
      • ceph_ansible_limit 変数を使用して、アクションを選択したコントローラーノードに制限する。

      このステップは、leapp によるアップグレードに向けて Ceph Storage サービスを準備するための予備的な処置です。

    3. system_upgrade タグを指定してアップグレードコマンドを実行します。

      $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-controller-2

      このコマンドにより、以下のアクションが行われます。

      • Leapp によるオペレーティングシステムのアップグレードを実施する。
      • Leapp によるアップグレードの一部としてリブートを実施する。
    4. タグを指定せずにアップグレードコマンドを実行します。

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2

      このコマンドにより、Red Hat OpenStack Platform のアップグレードが実施されます。--limit オプションにすべてのコントローラーノードを含めます。