第21章 ハイパーコンバージドインフラストラクチャーを持つオーバークラウドのアップグレード

このシナリオでは、ハイパーコンバージドインフラストラクチャー (HCI) を持つオーバークラウドのアップグレードプロセスの例を説明します。この環境には、以下のノード種別が含まれます。

  • コントローラーノード 3 台
  • 複数の HCI コンピュートノード (Compute サービスと Ceph OSD サービスが組み合わされてノードに含まれる)

21.1. オーバークラウドアップグレード準備タスクの実行

アップグレードを行うには、openstack overcloud upgrade prepare コマンドを実行する必要があります。このコマンドにより、以下のタスクが実行されます。

  • オーバークラウドのプランを OpenStack Platform 16.1 に更新する。
  • アップグレードに向けてノードを準備する。
注記

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

手順

  1. source コマンドで stackrc ファイルを読み込みます。

    $ source ~/stackrc
  2. upgrade prepare コマンドを実行します。

    $ openstack overcloud upgrade prepare \
        --stack STACK NAME \
        --templates \
        -e ENVIRONMENT FILE
        …​
        -e /home/stack/templates/upgrades-environment.yaml \
        -e /home/stack/templates/rhsm.yaml \
        -e /home/stack/containers-prepare-parameter.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \
        …​

    以下のオプションの中で、お使いの環境に適切なオプションを追加します。

    • アップグレード固有のパラメーターが含まれる環境ファイル (upgrades-environment.yaml) (-e)
    • 登録およびサブスクリプションに関するパラメーターが含まれる環境ファイル (rhsm.yaml) (-e)
    • 新しいコンテナーイメージの場所を定義した環境ファイル (containers-prepare-parameter.yaml) (-e)。多くの場合、アンダークラウドが使用する環境ファイルと同じファイルです。
    • OVS との互換性を維持するための環境ファイル (neutron-ovs.yaml)
    • デプロイメントに関連するカスタム設定環境ファイル (-e)
    • 該当する場合は、--roles-file でカスタムロール (roles_data) ファイルを指定します。
    • 該当する場合は、--networks-file でコンポーザブルネットワーク (network_data) ファイルを指定します。
    • カスタムのスタック名を使用する場合は、--stack オプションでその名前を渡します。
  3. アップグレードの準備が完了するまで待ちます。
  4. コンテナーイメージをダウンロードします。

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

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

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

すべてのコントローラーノードを OpenStackPlatform 16.1 にアップグレードします。このプロセスでは、ブートストラップコントローラーノードから始めて各コントローラーノードをアップグレードします。

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

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

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

注記

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

手順

  1. source コマンドで stackrc ファイルを読み込みます。

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

    $ sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name

    アンダークラウドからこのコマンドを実行するには、以下の SSH コマンドを実行します。ここで、CONTROLLER_IP は環境内の任意のコントローラーノードの IP アドレスに置き換えます。

    $ ssh heat-admin@CONTROLLER_IP "sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name"

    以下の例では、ブートストラップノードの値として overcloud-controller-0 を使用します。これを実際のブートストラップノードの値に置き換えてください。

  3. ブートストラップコントローラーノードをアップグレードします。

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

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

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

      • 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 のアップグレードが実施されます。

      重要

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

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

    1. 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 サービスを準備するための予備的な処置です。

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

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

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

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

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

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

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

    1. 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 サービスを準備するための予備的な処置です。

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

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

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

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

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

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

21.3. ハイパーコンバージドインフラストラクチャー (HCI) を持つコンピュートノードのアップグレード

HCI コンピュートノードを OpenStack Platform 16.1 にアップグレードします。

注記

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

手順

  1. source コマンドで stackrc ファイルを読み込みます。

    $ source ~/stackrc
  2. インスタンスを移行します。移行計画についての詳細は、『インスタンス&イメージガイド』の「コンピュートノード間の仮想マシンインスタンスの移行」を参照してください。
  3. Ceph MON サービスが含まれるノードにログインします。
  4. OSD の除外およびリバランスを無効にします。

    $ sudo docker ps | grep ceph-mon
    $ sudo docker exec -it CONTAINER ceph osd set noout
    $ sudo docker exec -it CONTAINER ceph osd set norebalance

    CONTAINER を Ceph MON を実行しているコンテナーの名前に置き換えます。

  5. Ceph MON サービスが含まれるノードからログアウトし、アンダークラウドに戻ります。
  6. ceph_systemd タグを指定して外部アップグレードコマンドを実行します。

    $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-computehci-0

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

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

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

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

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

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

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

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

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

  9. 複数のコンピュートノードを並行してアップグレードするには、--limit オプションをアップグレードするノードのコンマ区切りリストに設定します。まず、ceph_systemd タグを指定して外部アップグレードコマンドを実行します。

    $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-computehci-0

    次に、system_upgrade タスクを実行します。

    $ openstack overcloud upgrade run --stack STACK NAME --tags system_upgrade --limit overcloud-computehci-0,overcloud-computehci-1,overcloud-computehci-2

    続いて、標準の OpenStack サービスのアップグレードを実施します。

    $ openstack overcloud upgrade run --stack STACK NAME  --limit overcloud-compute-0,overcloud-computehci-1,overcloud-computehci-2
  10. すべての HCI ノードをアップグレードしたら、Ceph MON サービスが含まれるノードにログインします。
  11. OSD の除外およびリバランスを有効にします。

    $ sudo podman ps | grep ceph-mon
    $ sudo podman exec -it CONTAINER ceph osd unset noout
    $ sudo podman exec -it CONTAINER ceph osd unset norebalance

    CONTAINER を Ceph MON を実行しているコンテナーの名前に置き換えます。

  12. Ceph MON サービスが含まれるノードからログアウトし、アンダークラウドに戻ります。

21.4. オーバークラウドスタックの同期

アップグレードにおいては、スタックのリソース構造およびパラメーターが OpenStack Platform 16.1 の新規デプロイメントと整合するように、オーバークラウドスタックを更新する必要があります。

注記

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

手順

  1. source コマンドで stackrc ファイルを読み込みます。

    $ source ~/stackrc
  2. containers-prepare-parameter.yaml ファイルを編集し、以下のパラメーターおよびその値を削除します。

    • ceph3_namespace
    • ceph3_tag
    • ceph3_image
    • name_prefix_stein
    • name_suffix_stein
    • namespace_stein
    • tag_stein
  3. アップグレードの最終処理のコマンドを実行します。

    $ openstack overcloud upgrade converge \
        --stack STACK NAME \
        --templates \
        -e ENVIRONMENT FILE
        …​
        -e /home/stack/templates/upgrades-environment.yaml \
        -e /home/stack/templates/rhsm.yaml \
        -e /home/stack/containers-prepare-parameter.yaml \
        -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \
        …​

    以下のオプションの中で、お使いの環境に適切なオプションを追加します。

    • アップグレード固有のパラメーターが含まれる環境ファイル (upgrades-environment.yaml) (-e)
    • 登録およびサブスクリプションに関するパラメーターが含まれる環境ファイル (rhsm.yaml) (-e)
    • 新しいコンテナーイメージの場所を定義した環境ファイル (containers-prepare-parameter.yaml) (-e)。多くの場合、アンダークラウドが使用する環境ファイルと同じファイルです。
    • OVS との互換性を維持するための環境ファイル (neutron-ovs.yaml)
    • デプロイメントに関連するカスタム設定環境ファイル (-e)
    • 該当する場合は、--roles-file でカスタムロール (roles_data) ファイルを指定します。
    • 該当する場合は、--networks-file でコンポーザブルネットワーク (network_data) ファイルを指定します。
    • カスタムのスタック名を使用する場合は、--stack オプションでその名前を渡します。
  4. スタックの同期が完了するまで待ちます。
重要

これ以降のデプロイメント操作には、upgrades-environment.yaml ファイルは必要ありません。