第20章 コントローラーが分割されたオーバークラウドのアップグレード

このシナリオでは、コントローラーノードサービスが複数のノードに分割されているオーバークラウドのアップグレードプロセスの例を説明します。この環境には、以下のノード種別が含まれます。

  • Pacemaker を使用する複数に分割された高可用性サービス
  • 複数に分割されたコントローラーサービス
  • Ceph MON ノード 3 台
  • Ceph Storage ノード 3 台
  • 複数のコンピュートノード

20.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

20.2. Pacemaker ベースのノードのアップグレード

Pacemaker サービスをホストする全ノードを OpenStack Platform 16.1 にアップグレードします。以下のロールに Pacemaker ベースのサービスが含まれます。

  • Controller
  • Database (MySQL、Galera)
  • Messaging (RabbitMQ)
  • Load Balancing (HAProxy)
  • 以下のサービスが含まれるその他すべてのロール

    • OS::TripleO::Services::Pacemaker
    • OS::TripleO::Services::PacemakerRemote

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

注記

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

手順

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

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

    $ ssh heat-admin@CONTROLLER_IP "sudo hiera -c /etc/puppet/hiera.yaml pacemaker_short_bootstrap_node_name"
  3. ブートストラップノードをアップグレードします。

    1. ノードに Ceph Storage コンテナーが含まれていれば、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. Pacemaker ベースの各ノードをアップグレードします。

    1. ノードに Ceph Storage コンテナーが含まれていれば、ceph_systemd タグを指定して外部アップグレードコマンドを実行します。

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-database-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-database-0

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

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

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

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

  5. 各 Pacemaker ベースのノードでアップグレードプロセスを繰り返し、すべての Pacemaker ベースのノードをアップグレードします。

20.3. Pacemaker コントローラーノード以外のアップグレード

Pacemaker ベースのサービスが含まれないノードをすべて OpenStack Platform 16.1 にアップグレードします。これらのノードには、通常特定の OpenStack サービスが含まれます。Pacemaker ベースのサービスが含まれないロールの例は以下のとおりです。

  • Networker
  • Ironic Conductor
  • Object Storage
  • 標準のコントローラーノードから分割またはスケーリングしたサービスを持つカスタムロール

このグループには、以下のノードを含めないでください。

  • コンピュートノード
  • Ceph Storage ノード

このプロセスでは、各ノードのアップグレードを行います。

注記

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

手順

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

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

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

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

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

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

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

  4. 各ノードでアップグレードプロセスを繰り返し、すべてのコントローラーベースのノードをアップグレードします。

20.4. Ceph MON ノードのオペレーティングシステムのアップグレード

各 Ceph MON ノードのオペレーティングシステムをアップグレードします。ノード間のクォーラムを維持するために、それぞれの Ceph MON ノードを個別にアップグレードすることを推奨します。

注記

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

手順

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

    $ source ~/stackrc
  2. Ceph MON ノードを選択し、オペレーティングシステムをアップグレードします。

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

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephmon-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-cephmon-0

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

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

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

      このコマンドにより config-download Playbook が実行され、Ceph MON ノードでコンポーザブルサービスが設定されます。以下の手順では、Ceph MON ノードは Red Hat Ceph Storage 4 にアップグレードされません。Red Hat Ceph Storage 4 へのアップグレードは、後の手順で実施されます。

  3. 次の Ceph MON ノードを選択し、オペレーティングシステムをアップグレードします。

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

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephmon-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-cephmon-1

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

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

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephmon-1

      このコマンドにより config-download Playbook が実行され、Ceph MON ノードでコンポーザブルサービスが設定されます。以下の手順では、Ceph MON ノードは Red Hat Ceph Storage 4 にアップグレードされません。Red Hat Ceph Storage 4 へのアップグレードは、後の手順で実施されます。

  4. 最後の Ceph MON ノードを選択し、オペレーティングシステムをアップグレードします。

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

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephmon-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-cephmon-2

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

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

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephmon-2

      このコマンドにより config-download Playbook が実行され、Ceph MON ノードでコンポーザブルサービスが設定されます。以下の手順では、Ceph MON ノードは Red Hat Ceph Storage 4 にアップグレードされません。Red Hat Ceph Storage 4 へのアップグレードは、後の手順で実施されます。

20.5. Ceph Storage ノードのオペレーティングシステムのアップグレード

director を使用してデプロイされた Red Hat Ceph Storage クラスターがデプロイメントで使用される場合は、各 Ceph Storage ノードのオペレーティングシステムをアップグレードする必要があります。

注記

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

手順

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

    $ source ~/stackrc
  2. Ceph MON サービスが含まれるノードにログインします。
  3. OSD の除外およびリバランスを無効にします。

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

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

  4. Ceph MON サービスが含まれるノードからログアウトし、アンダークラウドに戻ります。
  5. Ceph Storage ノードを選択し、オペレーティングシステムをアップグレードします。

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

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-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-cephstorage-0

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

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

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

      このコマンドにより config-download Playbook が実行され、Ceph Storage ノードでコンポーザブルサービスが設定されます。このステップでは、Ceph Storage ノードは Red Hat Ceph Storage 4 にアップグレードされません。Red Hat Ceph Storage 4 へのアップグレードは、後の手順で実施されます。

  6. 次の Ceph Storage ノードを選択し、オペレーティングシステムをアップグレードします。

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

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-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-cephstorage-1

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

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

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-1

      このコマンドにより config-download Playbook が実行され、Ceph Storage ノードでコンポーザブルサービスが設定されます。このステップでは、Ceph Storage ノードは Red Hat Ceph Storage 4 にアップグレードされません。Red Hat Ceph Storage 4 へのアップグレードは、後の手順で実施されます。

  7. 最後の Ceph Storage ノードを選択し、オペレーティングシステムをアップグレードします。

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

      $ openstack overcloud external-upgrade run --stack STACK NAME --tags ceph_systemd -e ceph_ansible_limit=overcloud-cephstorage-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-cephstorage-2

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

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

      $ openstack overcloud upgrade run --stack STACK NAME --limit overcloud-cephstorage-2

      このコマンドにより config-download Playbook が実行され、Ceph Storage ノードでコンポーザブルサービスが設定されます。このステップでは、Ceph Storage ノードは Red Hat Ceph Storage 4 にアップグレードされません。Red Hat Ceph Storage 4 へのアップグレードは、後の手順で実施されます。

  8. すべての HCI ノードをアップグレードしたら、Ceph MON サービスをホストするノードにログインします。
  9. 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 を実行しているコンテナーの名前に置き換えます。

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

20.6. コンピュートノードのアップグレード

すべてのコンピュートノードを OpenStackPlatform 16.1 にアップグレードします。

注記

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

手順

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

    $ source ~/stackrc
  2. インスタンスを移行します。移行計画についての詳細は、『インスタンス&イメージガイド』の「コンピュートノード間の仮想マシンインスタンスの移行」を参照してください。
  3. system_upgrade タグを指定してアップグレードコマンドを実行します。

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

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

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

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

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

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

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

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

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

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

アップグレードにおいては、スタックのリソース構造およびパラメーターが 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 ファイルは必要ありません。