Red Hat OpenStack Platform のマイナー更新の実行
最新のバグ修正とセキュリティー強化を Red Hat OpenStack Platform に適用する
OpenStack Documentation Team
rhos-docs@redhat.com
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
Jira でのドキュメントフィードバックの提供
Create Issue フォームを使用して、ドキュメントに関するフィードバックを提供します。Jira 問題は Red Hat OpenStack Platform Jira プロジェクトに作成され、フィードバックの進捗を追跡できます。
- Jira にログインしていることを確認してください。Jira アカウントをお持ちでない場合は、フィードバックを送信するアカウントを作成します。
- 以下のリンクをクリックして、 Create Issue ページを開きます。
- Summary フィールドおよび Description フィールドを入力します。Description フィールドに、ドキュメント URL、章、またはセクション番号、および課題の詳細な説明を含めます。フォーム内の他のフィールドは変更しないでください。
- Create をクリックします。
第1章 マイナー更新の準備
お使いの Red Hat OpenStack Platform (RHOSP) 17.1 環境を、最新のパッケージおよびコンテナーで更新された状態に維持してください。
次のバージョンのアップグレードパスを使用します。
更新前の RHOSP バージョン | 新規 RHOSP バージョン |
---|---|
Red Hat OpenStack Platform 17.0.z | Red Hat OpenStack Platform 17.1 (最新) |
Red Hat OpenStack Platform 17.1.z | Red Hat OpenStack Platform 17.1 (最新) |
マイナー更新のワークフロー
RHOSP 環境のマイナー更新には、アンダークラウドおよびオーバークラウドホスト上の RPM パッケージとコンテナー、および必要に応じてサービス設定の更新が含まれます。データプレーンとコントロールプレーンは、マイナー更新中に完全に利用可能になります。RHOSP 環境を更新するには、次の各手順を完了する必要があります。
更新手順 | 説明 |
---|---|
アンダークラウドの更新 | Director パッケージが更新され、コンテナーが置き換えられ、アンダークラウドが再起動されます。 |
オプションの |
すべての |
ha-image-update 外部 | Pacemaker 制御サービスのコンテナーイメージ名を更新します。サービスの中断はありません。この手順は、システムをバージョン 17.0.z から最新の 17.1 リリースに更新するお客様にのみ該当します。 |
Pacemaker サービスを含むコントローラーノードとコンポーザブルノードのオーバークラウド更新 | オーバークラウドの更新中、Pacemaker サービスは各ホストで停止します。Pacemaker サービスが停止している間、ホスト上の RPM、コンテナー設定データ、およびコンテナーが更新されます。Pacemaker サービスが再起動すると、ホストが再度追加されます。 |
コンピュートノードのオーバークラウド更新 | 複数のノードが並行して更新されます。ノードを並列実行する場合のデフォルト値は 25 です。 |
Ceph ノードのオーバークラウド更新 | Ceph ノードは一度に 1 ノードずつ更新されます。 |
Ceph クラスターの更新 |
Ceph サービスは、 |
インフラストラクチャーがマルチスタックの場合は、各オーバークラウドスタックを一度に 1 つずつ完全に更新します。分散コンピュートノード (DCN) インフラストラクチャーがある場合は、中央のロケーションでオーバークラウドを完全に更新してから、各エッジサイトでオーバークラウドを一度に 1 つずつ更新します。
さらに、管理者はマイナー更新中に次の操作を実行できます。
- 仮想マシンの移行
- 仮想マシンネットワークの作成
- 追加のクラウド操作の実行
マイナー更新中は、次の操作はサポートされません。
- コントローラーノードの置き換え
- ロールのスケールインまたはスケールアウト
RHOSP 環境を更新する前の考慮事項
更新プロセス中のガイドとして、次の情報を考慮してください。
- Red Hat は、アンダークラウドおよびオーバークラウドの制御プレーンをバックアップすることを推奨しています。ノードのバックアップについて詳しくは、アンダークラウドおよびコントロールプレーンノードのバックアップと復元 を参照してください。
- 更新を妨げる可能性のある既知の問題を把握してください。
- 更新する前に、可能な更新パスとアップグレードパスを把握してください。詳細は、「ロングライフリリースのアップグレードパス」 を参照してください。
-
現在のメンテナンスリリースを確認するには、
$ cat /etc/rhosp-release
を実行してください。環境を更新した後にこのコマンドを実行して、更新を検証することもできます。
更新を妨げる可能性のある既知の問題
現在、既知の問題はありません。
手順
マイナー更新用に RHSOP 環境を準備するには、以下の手順を実行します。
1.1. ロングライフリリースのアップグレードパス
更新を開始する前に、可能な更新およびアップグレードパスを把握する必要があります。
RHOSP および RHEL の現行バージョンは、/etc/rhosp-release
および /etc/redhat-release
ファイルで確認できます。
表1.1 バージョンの更新パス
現行バージョン | 更新後のバージョン |
---|---|
RHEL 9.0 / RHOSP 17.0.x | 最新の RHEL 9.0 /最新の RHOSP 17.0 |
RHEL 9.2 / RHOSP 17.1.x | 最新の RHEL 9.2 / 最新の RHOSP 17.1 |
表1.2 バージョンのアップグレードパス
現行バージョン | 更新後のバージョン |
---|---|
RHEL 7.7 上の RHOSP 10 | 最新の RHEL 7.9 における最新の RHOSP 13 |
RHEL 7.9 上の RHOSP 13 | 最新の RHEL 8.2 における最新の RHOSP 16.1 |
RHEL 7.9 上の RHOSP 13 | 最新の RHEL 8.4 における最新の RHOSP 16.2 |
RHEL 8.4 の RHOSP 16 | 最新の RHEL 9.0 における最新の RHOSP 17.1 |
詳細は、16.2 から 17.1 へのアップグレードフレームワーク を参照してください。
1.2. 環境の Red Hat Enterprise Linux リリースへのロック
Red Hat OpenStack Platform (RHOSP) 17.1 は Red Hat Enterprise Linux 9.2 (RHEL) でサポートされています。更新を実行する前に、アンダークラウドおよびオーバークラウドのリポジトリーを RHEL 9.2 リリースにロックして、オペレーティングシステムが新しいマイナーリリースにアップグレードされないようにします。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
-
RhsmVars
パラメーターが含まれるオーバークラウドのサブスクリプション管理用環境ファイルを編集します。通常、このファイルのデフォルト名はrhsm.yml
です。 サブスクリプション管理の設定で、
rhsm_release
パラメーターが含まれているかどうかを確認します。rhsm_release
パラメーターが存在しない場合は、追加して 9.2 に設定します。parameter_defaults: RhsmVars: … rhsm_username: "myusername" rhsm_password: "p@55w0rd!" rhsm_org_id: "1234567" rhsm_pool_ids: "1a85f9223e3d5e43013e3d6e8ff506fd" rhsm_method: "portal" rhsm_release: "9.2"
- オーバークラウドのサブスクリプション管理用環境ファイルを保存します。
すべてのノードでオペレーティングシステムのバージョンを RHEL 9.2 にロックするタスクを含む Playbook を作成します。
$ cat > ~/set_release.yaml <<'EOF' - hosts: all gather_facts: false tasks: - name: set release to 9.2 command: subscription-manager release --set=9.2 become: true EOF
set_release.yaml
Playbook を実行します。$ ansible-playbook -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml -f 25 ~/set_release.yaml --limit <undercloud>, <Controller>, <Compute>
-
<stack>
をスタックの名前に置き換えます。 -
--limit
オプションを使用して、コンテンツをすべての RHOSP ノードに適用します。<undercloud>、<Controller>、<Compute> は、それらのノードを含む環境内の Ansible グループに置き換えます。これらのノードには別のサブスクリプションがある可能性があるため、Ceph Storage ノードに対してこの Playbook を実行しないでください。
-
手動でノードを特定のバージョンにロックするには、ノードにログインして subscription-manager release
コマンドを実行します。
$ sudo subscription-manager release --set=9.2
1.3. Red Hat Openstack Platform リポジトリーの更新
Red Hat OpenStack Platform (RHOSP) 17.1 を使用するようにリポジトリーを更新します。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
-
RhsmVars
パラメーターが含まれるオーバークラウドのサブスクリプション管理用環境ファイルを編集します。通常、このファイルのデフォルト名はrhsm.yml
です。 サブスクリプション管理の設定で
rhsm_repos
パラメーターを確認します。rhsm_repos
パラメーターで RHOSP 17.1 リポジトリーを使用している場合は、リポジトリーを正しいバージョンに変更します。parameter_defaults: RhsmVars: rhsm_repos: - rhel-9-for-x86_64-baseos-eus-rpms - rhel-9-for-x86_64-appstream-eus-rpms - rhel-9-for-x86_64-highavailability-eus-rpms - openstack-17.1-for-rhel-9-x86_64-rpms - fast-datapath-for-rhel-9-x86_64-rpms
- オーバークラウドのサブスクリプション管理用環境ファイルを保存します。
すべてのノードで、リポジトリーを RHOSP 17.1 に設定するタスクを含む Playbook を作成します。
$ cat > ~/update_rhosp_repos.yaml <<'EOF' - hosts: all gather_facts: false tasks: - name: change osp repos command: subscription-manager repos --enable=openstack-17.1-for-rhel-9-x86_64-rpms become: true EOF
update_rhosp_repos.yaml
Playbook を実行します。$ ansible-playbook -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml -f 25 ~/update_rhosp_repos.yaml --limit <undercloud>,<Controller>,<Compute>
-
<stack>
をスタックの名前に置き換えます。 -
--limit
オプションを使用して、コンテンツをすべての RHOSP ノードに適用します。<undercloud>、<Controller>、<Compute> は、それらのノードを含む環境内の Ansible グループに置き換えます。通常、Ceph Storage ノードは異なるサブスクリプションを使用するため、この Playbook を Ceph Storage ノードに対して実行しないでください。
-
すべての Ceph Storage ノードで、リポジトリーを RHOSP 17.1 に設定するタスクが含まれる Playbook を作成します。
$ cat > ~/update_ceph_repos.yaml <<'EOF' - hosts: all gather_facts: false tasks: - name: change ceph repos command: subscription-manager repos --enable=openstack-17.1-deployment-tools-for-rhel-9-x86_64-rpms become: true EOF
update_ceph_repos.yaml
Playbook を実行します。$ ansible-playbook -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml -f 25 ~/update_ceph_repos.yaml --limit CephStorage
--limit
オプションを使用して、コンテンツを Ceph Storage ノードに適用します。
1.4. コンテナーイメージ準備ファイルの更新
コンテナー準備ファイルは、ContainerImagePrepare
パラメーターが含まれるファイルです。このファイルを使用して、アンダークラウドおよびオーバークラウドのコンテナーイメージを取得する際のルールを定義します。
環境を更新する前に、ファイルを確認して正しいイメージバージョンを取得するようにしてください。
手順
-
コンテナー準備ファイルを編集します。通常、このファイルのデフォルト名は
containers-prepare-parameter.yaml
です。 各ルールセットの
tag
パラメーターが17.1
に設定されていることを確認します。parameter_defaults: ContainerImagePrepare: - push_destination: true set: ... tag: '17.1' tag_from_label: '{version}-{release}'
注記更新に特定のタグ (
17.1
や17.1.1
など) を使用しない場合は、tag
キーと値のペアを削除し、tag_from_label
のみを指定します。これにより、更新プロセスの一部として使用するタグの値を決定する際に、インストールされた Red Hat OpenStack Platform バージョンが使用されます。- このファイルを保存します。
1.5. オーバークラウドでのフェンシングの無効化
オーバークラウドを更新する前に、フェンシングが無効になっていることを確認します。
コントローラーノードの更新プロセス中にフェンシングが環境にデプロイされると、オーバークラウドは特定ノードが無効であることを検出し、フェンシング操作を試みる場合があります。これにより、意図しない結果が生じる可能性があります。
オーバークラウドでフェンシングを有効にした場合、更新中はフェンシングを一時的に無効にする必要があります。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
コントローラーノードにログインし、Pacemaker コマンドを実行してフェンシングを無効にします。
$ ssh tripleo-admin@<controller_ip> "sudo pcs property set stonith-enabled=false"
-
<controller_ip>
を、コントローラーノードの IP アドレスに置き換えます。コントローラーノードの IP アドレスは、metalsmith list
コマンドで確認できます。
-
-
fencing.yaml
環境ファイルで、EnableFencing
パラメーターをfalse
に設定し、更新プロセス中にフェンシングが無効のままとなるようにします。
第2章 アンダークラウドの更新
director を使用して、アンダークラウドノード上の主要なパッケージを更新します。アンダークラウドとそのオーバークラウドイメージを最新の Red Hat Open Stack Platform (RHOSP) 17.1 バージョンに更新するには、以下の手順を実行します。
前提条件
- アンダークラウドを最新の RHSOP 17.1 バージョンに更新する前に、すべての更新準備手順を完了している。詳細は、1章マイナー更新の準備 を参照してください。
2.1. アンダークラウドの更新前の RHOSP の検証
Red Hat OpenStack Platform (RHOSP) 環境を更新する前に、tripleo-validations
Playbook を使用してアンダークラウドを検証してください。
検証の詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 の 検証フレームワークの使用 を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
検証用にパッケージをインストールします。
$ sudo dnf -y update openstack-tripleo-validations python3-validations-libs validations-common
検証を実行します。
$ validation run -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml --group pre-update
- <stack> をスタックの名前に置き換えます。
検証
- 検証レポートの結果を表示するには、director を使用した Red Hat OpenStack Platform のインストールと管理 の 検証履歴の表示 を参照してください。
No host matched
(唯一返されるエラー) と報告する FAILED
の検証を無視します。このエラーは、検証ホストグループに一致するホストがないことを意味しますが、これは予期されることです。検証が FAILED
であっても、更新された RHOSP 環境を使用できないことはありません。ただし、検証が FAILED
の場合は、環境に問題があることを示している可能性があります。
2.2. コンテナー化されたアンダークラウドのマイナー更新を実施する
director では、アンダークラウドノード上の主要なパッケージを更新するためのコマンドが提供されています。Director を使用して、RHOSP 環境の現在のバージョン内でマイナー更新を実行します。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
dnfupdate
コマンドを使用して director メインパッケージを更新します。$ sudo dnf update -y python3-tripleoclient ansible-*
アンダークラウド環境を更新します。
$ openstack undercloud upgrade
- アンダークラウドの更新プロセスが完了するまで待ちます。
アンダークラウドをリブートして、オペレーティングシステムのカーネルとその他のシステムパッケージを更新します。
$ sudo reboot
- ノードがブートするまで待ちます。
2.3. オーバークラウドイメージの更新
Director がノードをイントロスペクトして最新バージョンの RHOSP ソフトウェアでプロビジョニングできるようにするには、現在のオーバークラウドイメージを新しいバージョンに置き換える必要があります。
前提条件
- アンダークラウドノードが最新バージョンに更新されている。詳細は、「コンテナー化されたアンダークラウドのマイナー更新を実施する」 を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
stack
ユーザーのホーム下のimages
ディレクトリー (/home/stack/images
) から既存のイメージを削除します。$ rm -rf ~/images/*
アーカイブをデプロイメントします。
cd ~/images for i in /usr/share/rhosp-director-images/ironic-python-agent-latest-17.1.tar /usr/share/rhosp-director-images/overcloud-hardened-uefi-full-latest-17.1.tar; do tar -xvf $i; done cd ~
director に最新のイメージをインポートします。
$ openstack overcloud image upload --update-existing --image-path /home/stack/images/
ノードが新しいイメージを使用するように設定します。
$ openstack overcloud node configure $(openstack baremetal node list -c UUID -f value)
新規イメージが存在することを確認します。
$ ls -l /var/lib/ironic/httpboot /var/lib/ironic/images
- オーバークラウドノードをデプロイする際には、オーバークラウドイメージのバージョンが該当する heat テンプレートバージョンに対応している状態にします。たとえば、RHOSP 17.1 heat テンプレートでは RHOSP 17.1 イメージのみを使用します。
-
Red Hat カスタマーポータルまたは Red Hat Satellite Server を使用する接続環境をデプロイした場合、オーバークラウドのイメージとパッケージリポジトリーのバージョンが同期していない可能性があります。オーバークラウドのイメージとパッケージリポジトリーのバージョンが一致していることを確認するには、
virt-customize
ツールを使用できます。詳細は、Red Hat ナレッジベースで Modifying the Red Hat Linux OpenStack Platform Overcloud Image with virt-customize のソリューションを参照してください。 -
新しい
overcloud-full
イメージは、古いovercloud-full
イメージを置き換えます。古いイメージに変更を加えた場合、特に今後新規ノードをデプロイする場合は、新しいイメージで変更を繰り返す必要があります。
第3章 オーバークラウドの更新
アンダークラウドを更新したら、オーバークラウドとコンテナーイメージの準備コマンドを実行し、ノードを更新することで、オーバークラウドを更新できます。コントロールプレーン API は、マイナー更新中もすべて利用できます。
前提条件
- アンダークラウドノードが最新バージョンに更新されている。詳細は、2章アンダークラウドの更新 を参照してください。
-
stack
ユーザーのホームディレクトリーでコアテンプレートのローカルセットを使用する場合は、必ずテンプレートを更新し、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの heat テンプレートについて で推奨されているワークフローを使用してください。オーバークラウドをアップグレードする前に、ローカルコピーを更新する必要があります。 GlanceApiInternal
サービスをコントローラーロールに追加します。OS::TripleO::Services::GlanceApiInternal
これは、Image サービス (glance) API の内部インスタンスのサービスで、位置データを管理者や、Block Storage サービス (cinder) や Compute サービス (nova) などの位置データを必要とする他のサービスに提供します。
手順
オーバークラウドを更新するには、次の手順を実行する必要があります。
- 「オーバークラウドの更新準備タスクの実施」
- 「コンテナーイメージ準備タスクの実行」
- 「オプション: すべてのオーバークラウドサーバーでの ovn-controller コンテナーの更新」
- 「Pacemaker 制御サービスのコンテナーイメージ名の更新」
- 「すべてのコントローラーノードの更新」
- 「すべてのコンピュートノードの更新」
- 「全 HCI コンピュートノードの更新」
- 「すべての DistributedComputeHCI ノードの更新」
- 「すべての Ceph Storage ノードの更新」
- 「Red Hat Ceph Storage クラスターの更新」
- 「データベースのオンライン更新の実施」
- 「オーバークラウドでのフェンシングの再有効化」
3.1. オーバークラウドの更新準備タスクの実施
更新プロセスに向けてオーバークラウドを準備するには、openstack overcloud update prepare
コマンドを実行する必要があります。このコマンドは、オーバークラウドプランを Red Hat Open Stack Platform (RHOSP) 17.1 に更新して、更新用にノードを準備します。
前提条件
-
Ceph のサブスクリプションを使用し、Ceph ストレージノード用に
overcloud-minimal
イメージを使用するように director を設定している場合、roles_data.yaml
ロール定義ファイルでrhsm_enforce
パラメーターがFalse
に設定されていることを確認する。 -
カスタム NIC テンプレートをレンダリングした場合は、オーバークラウドのバージョンとの非互換性を回避するために、
openstack-tripleo-heat-templates
コレクションの更新バージョンでテンプレートを再生成する。カスタム NIC テンプレートの詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 ガイドの カスタムネットワークインターフェイステンプレート を参照してください。
OVN デプロイメントを使用する分散コンピュートノード (エッジ) アーキテクチャーの場合は、すべてのオーバークラウドサーバーでの ovn-controller コンテナーの更新 セクションに進む前に、Compute、DistributedCompute、または DistributedComputeHCI ノードを含むスタックごとにこの手順を完了する必要があります。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
更新準備コマンドを実行します。
$ openstack overcloud update prepare \ --templates \ --stack <stack_name> \ -r <roles_data_file> \ -n <network_data_file> \ -e <environment_file> \ -e <environment_file> \ ...
以下のオプションの中で、お使いの環境に適切なオプションを追加します。
-
オーバークラウドスタックの名前がデフォルトの名前
overcloud
とは異なる場合は、更新の準備コマンドに--stack
オプションを追加し、<stack_name>
を実際のスタック名に置き換えます。 -
独自のカスタムロールを使用する場合は、
-r
オプションを使用してカスタムロール (<roles_data_file>
) ファイルを含めます。 -
カスタムネットワークを使用する場合は、
-n
オプションを使用して、設定可能なネットワークを (<network_data_file>
) ファイルに含めます。 -
高可用性クラスターをデプロイする場合は、更新の準備コマンドに
--ntp-server
オプションを追加するか、環境ファイルにNtpServer
パラメーターおよび値を追加します。 -
-e
オプションを使用して、カスタム設定環境ファイルを含めます。
-
オーバークラウドスタックの名前がデフォルトの名前
- 更新の準備プロセスが完了するまで待ちます。
3.2. SSH キーのサイズの検証
Red Hat Enterprise Linux (RHEL) 9.1 以降では、最小 2048 ビットの SSH キーサイズが必要です。Red Hat OpenStack Platform (RHOSP) director 上の現在の SSH キーが 2048 ビット未満の場合、オーバークラウドにアクセスできなくなる可能性があります。SSH キーが必要なビットサイズを満たしていることを確認する必要があります。
手順
SSH キーのサイズを検証します。
ssh-keygen -l -f ~/.ssh/id_rsa.pub
出力例:
1024 SHA256:Xqz0Xz0/aJua6B3qRD7VsLr6n/V3zhmnGSkcFR6FlJw stack@director.example.local (RSA)
SSH キーが 2048 ビット未満の場合は、続行する前に
ssh_key_rotation.yaml
Ansible Playbook を使用して SSH キーを置き換えます。ANSIBLE_SSH_COMMON_ARGS="-o RequiredRSASize=1024" ansible-playbook \ -i ~/config-download/<stack>/tripleo-ansible-inventory.yaml \ /usr/share/ansible/tripleo-playbooks/ssh_key_rotation.yaml \ --extra-vars "keep_old_key_authorized_keys=<true|false> \ backup_folder_path=</path/to/backup_folder>"
-
<stack>
をオーバークラウドスタックの名前に置き換えます。 -
バックアップのニーズに基づいて
<true|false>
を置き換えます。この変数を含めない場合、デフォルト値はtrue
になります。 -
</path/to/backup_folder>
をバックアップパスに置き換えます。この変数を含めない場合、デフォルト値は/home/{{ ansible_user_id }}/backup_keys/{{ ansible_date_time.epoch }}
になります。
-
3.3. コンテナーイメージ準備タスクの実行
オーバークラウドを更新する前に、環境に必要なすべてのコンテナーイメージ設定を準備して、最新の RHOSP 17.1 コンテナーイメージをアンダークラウドにプルする必要があります。
コンテナーイメージの準備を完了するには、 container_image_prepare
タグの付いたタスクに対して openstack overcloud external-updaterun
コマンドを実行する必要があります。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
container_image_prepare
タグの付いたタスクに対してopenstack overcloud external-update run
コマンドを実行します。$ openstack overcloud external-update run --stack <stack_name> --tags container_image_prepare
-
オーバークラウドスタックの名前がデフォルトのスタック名
overcloud
と異なる場合は、スタック名を--stack
オプションで設定し、<stack_name>
をスタックの名前に置き換えます。
-
オーバークラウドスタックの名前がデフォルトのスタック名
3.4. オプション: すべてのオーバークラウドサーバーでの ovn-controller コンテナーの更新
Modular Layer 2 Open Virtual Network メカニズムドライバー (ML2/OVN) を使用してオーバークラウドをデプロイした場合は、ovn-controller
コンテナーを最新の RHOSP 17.1 バージョンに更新します。更新は、ovn-controller
コンテナーを実行するすべてのオーバークラウドサーバーで行われます。
-
次の手順では、コントローラーのロールが割り当てられているサーバーの ovn-northd サービスを更新する前に、コンピュートのロールが割り当てられているサーバーの
ovn-controller
コンテナーを更新します。 分散型コンピュートノード (エッジ) アーキテクチャーの場合は、すべてのコントローラーノードの更新 セクションに進む前に、Compute、DistributedCompute、または DistributedComputeHCI ノードを含むスタックごとにこの手順を完了する必要があります。
この手順を実行する前に誤って
ovn-northd
サービスを更新した場合、仮想マシンに接続したり、新しい仮想マシンや仮想ネットワークを作成したりできない可能性があります。次の手順で接続を復元します。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
ovn タグを持つタスクに対して
openstack overcloud external-update run
コマンドを実行します。$ openstack overcloud external-update run --stack <stack_name> --tags ovn
-
オーバークラウドスタックの名前がデフォルトのスタック名
overcloud
と異なる場合は、スタック名を--stack
オプションで設定し、<stack_name>
をスタックの名前に置き換えます。
-
オーバークラウドスタックの名前がデフォルトのスタック名
-
ovn-controller
コンテナーの更新が完了するまで待ちます。
3.5. Pacemaker 制御サービスのコンテナーイメージ名の更新
システムを Red Hat Openstack Platform (RHOSP) 17 から RHOSP 17.1 に更新する場合は、Pacemaker で制御されるサービスのコンテナーイメージ名を更新する必要があります。Pacemaker 制御サービスの新しいイメージ命名スキーマに移行するには、この更新を実行する必要があります。
システムを RHOSP 17.1 のバージョンから最新バージョンの RHOSP 17.1 に更新する場合、Pacemaker が制御するサービスのコンテナーイメージ名を更新する必要はありません。
手順
- アンダークラウドホストに stack ユーザーとしてログインします。
stackrc アンダークラウド認証情報ファイルを入手します。
$ source ~/stackrc
ha_image_update
タグを指定してopenstack overcloud external-update run
コマンドを実行します。$ openstack overcloud external-update run --stack <stack_name> --tags ha_image_update
- アンダークラウドスタックの名前がデフォルトのスタック名 undercloud と異なる場合は、--stack オプションを使用してスタック名を設定し、<stack_name> をスタックの名前に置き換えます。
3.6. すべてのコントローラーノードの更新
すべてのコントローラーノードを最新の RHOSP 17.1 バージョンに更新します。--limit Controllerer
オプションを指定して openstack overcloud update run
コマンドを実行し、操作をコントローラーノードのみに制限します。コントロールプレーン API は、マイナー更新中もすべて利用できます。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
更新コマンドを実行します。
$ openstack overcloud update run --stack <stack_name> --limit Controller
-
オーバークラウドスタックの名前がデフォルトのスタック名
overcloud
と異なる場合は、スタック名を--stack
オプションで設定し、<stack_name>
をスタックの名前に置き換えます。
-
オーバークラウドスタックの名前がデフォルトのスタック名
- コントローラーノードの更新が完了するまで待ちます。
3.7. すべてのコンピュートノードの更新
すべてのコンピュートノードを最新の RHOSP 17.1 バージョンに更新します。コンピュートノードを更新するには、openstack overcloud update run
コマンドに --limit Compute
オプションを指定して、操作をコンピュートノードのみに制限して実行する必要があります。
- 並列処理に関する考慮事項
多数のコンピュートノードを更新する場合には、パフォーマンス向上のため、バックグラウンドで複数の更新タスクを実行し、ノードが 20 個含まれる別個のグループを更新するように各タスクを設定できます。たとえば、デプロイメントに 80 のコンピュートノードがある場合、次のコマンドを実行して、コンピュートノードを並行して更新できます。
$ openstack overcloud update run -y --limit 'Compute[0:19]' > update-compute-0-19.log 2>&1 & $ openstack overcloud update run -y --limit 'Compute[20:39]' > update-compute-20-39.log 2>&1 & $ openstack overcloud update run -y --limit 'Compute[40:59]' > update-compute-40-59.log 2>&1 & $ openstack overcloud update run -y --limit 'Compute[60:79]' > update-compute-60-79.log 2>&1 &
ノード領域分割方法はランダムで、更新されるノードを制御することはできません。ノードの選択は、
tripleo-ansible-inventory
コマンドの実行時に生成するインベントリーファイルに基づきます。特定のコンピュートノードを更新するには、バッチで更新するノードをコンマ区切りリストで指定します。
$ openstack overcloud update run --limit <Compute0>,<Compute1>,<Compute2>,<Compute3>
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
更新コマンドを実行します。
$ openstack overcloud update run --stack <stack_name> --limit Compute
-
オーバークラウドスタックの名前がデフォルトのスタック名
overcloud
と異なる場合は、スタック名を--stack
オプションで設定し、<stack_name>
をスタックの名前に置き換えます。
-
オーバークラウドスタックの名前がデフォルトのスタック名
- コンピュートノードの更新が完了するまで待ちます。
3.8. 全 HCI コンピュートノードの更新
ハイパーコンバージドインフラストラクチャー (HCI) コンピュートノードを最新の RHOSP 17.1 バージョンに更新します。
前提条件
ceph-mon
サービスを実行している Ceph Monitor または Controller ノードで、Red Hat Ceph Storage クラスターのステータスが正常であり、pg ステータスがactive+clean
であることを確認する。$ sudo cephadm -- shell ceph status
Ceph クラスターが正常な場合、
HEALTH_OK
のステータスが返されます。Ceph クラスターのステータスが異常な場合、
HEALTH_WARN
またはHEALTH_ERR
のステータスが返されます。トラブルシューティングのガイダンスは、Red Hat Ceph Storage 5 トラブルシューティングガイド または Red Hat Ceph Storage 6 トラブルシューティングガイド を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
更新コマンドを実行します。
$ openstack overcloud update run --stack <stack_name> --limit ComputeHCI
-
オーバークラウドスタックの名前がデフォルトのスタック名
overcloud
と異なる場合は、スタック名を--stack
オプションで設定し、<stack_name>
をスタックの名前に置き換えます。
-
オーバークラウドスタックの名前がデフォルトのスタック名
- ノードの更新が完了するまで待ちます。
3.9. すべての DistributedComputeHCI ノードの更新
分散コンピュートノードのアーキテクチャーに固有のロールを更新します。分散コンピュートノードをアップグレードするときは、まず DistributedComputeHCI
ノードを更新し、その後 DistributedComputeHCIScaleOut
ノードを更新します。
前提条件
ceph-mon
サービスを実行している Ceph Monitor または Controller ノードで、Red Hat Ceph Storage クラスターのステータスが正常であり、pg ステータスがactive+clean
であることを確認する。$ sudo cephadm -- shell ceph status
Ceph クラスターが正常な場合、
HEALTH_OK
のステータスが返されます。Ceph クラスターのステータスが異常な場合、
HEALTH_WARN
またはHEALTH_ERR
のステータスが返されます。トラブルシューティングのガイダンスは、Red Hat Ceph Storage 5 トラブルシューティングガイド または Red Hat Ceph Storage 6 トラブルシューティングガイド を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
更新コマンドを実行します。
$ openstack overcloud update run --stack <stack_name> --limit DistributedComputeHCI
-
オーバークラウドスタックの名前がデフォルトのスタック名
overcloud
と異なる場合は、スタック名を--stack
オプションで設定し、<stack_name>
をスタックの名前に置き換えます。
-
オーバークラウドスタックの名前がデフォルトのスタック名
-
DistributedComputeHCI
ノードの更新が完了するまで待ちます。 -
同じプロセスを使用して、
DistributedComputeHCIScaleOut
ノードを更新します。
3.10. すべての Ceph Storage ノードの更新
Red Hat Ceph Storage ノードを最新の RHOSP 17.1 バージョンに更新します。
RHOSP 17.1 は RHEL 9.2 でサポートされています。ただし、Ceph Storage ロールにマップされているホストは、最新のメジャー RHEL リリースに更新されます。詳細は、Red Hat Ceph Storage: サポートされる設定 を参照してください。
前提条件
ceph-mon
サービスを実行している Ceph Monitor または Controller ノードで、Red Hat Ceph Storage クラスターのステータスが正常であり、pg ステータスがactive+clean
であることを確認する。$ sudo cephadm -- shell ceph status
Ceph クラスターが正常な場合、
HEALTH_OK
のステータスが返されます。Ceph クラスターのステータスが異常な場合、
HEALTH_WARN
またはHEALTH_ERR
のステータスが返されます。トラブルシューティングのガイダンスは、Red Hat Ceph Storage 5 トラブルシューティングガイド または Red Hat Ceph Storage 6 トラブルシューティングガイド を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
更新コマンドを実行します。
$ openstack overcloud update run --stack <stack_name> --limit CephStorage
-
オーバークラウドスタックの名前がデフォルトのスタック名
overcloud
と異なる場合は、スタック名を--stack
オプションで設定し、<stack_name>
をスタックの名前に置き換えます。
-
オーバークラウドスタックの名前がデフォルトのスタック名
- ノードの更新が完了するまで待ちます。
3.11. Red Hat Ceph Storage クラスターの更新
cephadm
コマンドを使用して、director でデプロイされた Red Hat Ceph Storage クラスターを RHOSP 17.1 と互換性のある最新バージョンに更新します。
次のいずれかのシナリオが使用中の環境に当てはまる場合は、Red Hat Ceph Storage クラスターを更新します。
- RHOSP 16.2 から RHOSP 17.1 にアップグレードした場合は、Red Hat Ceph Storage 5 を実行し、Red Hat Ceph Storage 5 の新しいバージョンに更新することになります。
- RHOSP 17.1 を新たにデプロイした場合は、Red Hat Ceph Storage 6 を実行し、Red Hat Ceph Storage 6 の新しいバージョンに更新することになります。
前提条件
- 「コンテナーイメージ準備タスクの実行」 でコンテナーイメージの準備を完了します。
手順
- コントローラーノードにログインします。
クラスターの正常性を確認します。
$ sudo cephadm shell -- ceph health
注記Ceph Storage クラスターが正常な場合、コマンドは
HEALTH_OK
の結果を返します。コマンドが別の結果を返す場合は、更新を続行する前にクラスターのステータスを確認し、Red Hat サポートに連絡してください。詳細は、Red Hat Ceph Storageアップグレードガイド の cephadm を使用した Red Hat Ceph Storage クラスターのアップグレード または Red Hat Ceph Storage 6 アップグレードガイド の cephadm を使用した Red Hat Ceph Storage クラスターのアップグレード を参照してください。オプション: Ceph Storage クラスターの更新に含める必要があるイメージを確認します。
$ openstack tripleo container image list -f value | awk -F '//' '/ceph/ {print $2}'
クラスターを最新の Red Hat Ceph Storage バージョンに更新します。
$ sudo cephadm shell -- ceph orch upgrade start --image <image_name>: <version>
-
<image_name>
を Ceph Storage クラスターイメージの名前に置き換えます。 -
<version>
を、Ceph Storage クラスターを更新するターゲットバージョンに置き換えます。
-
Ceph Storage コンテナーの更新が完了するまで待ちます。更新ステータスを監視するには、次のコマンドを実行します。
sudo cephadm shell -- ceph orch upgrade status
3.12. データベースのオンライン更新の実施
一部のオーバークラウドコンポーネントでは、データベーステーブルのオンライン更新 (または移行) が必要です。オンラインでのデータベース更新を実行するには、online_upgrade
タグが付いたタスクに対して openstack overcloud external-updaterun
コマンドを実行します。
データベースのオンライン更新は、次のコンポーネントに適用されます。
- OpenStack Block Storage (cinder)
- OpenStack Compute (nova)
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
online_upgrade
のタグを使用するタスクに対してopenstack overcloud external-update run
コマンドを実行します。$ openstack overcloud external-update run --stack <stack_name> --tags online_upgrade
3.13. オーバークラウドでのフェンシングの再有効化
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
コントローラーノードにログインし、Pacemaker コマンドを実行してフェンシングを再度有効にします。
$ ssh tripleo-admin@<controller_ip> "sudo pcs property set stonith-enabled=true"
-
<controller_ip>
を、コントローラーノードの IP アドレスに置き換えます。コントローラーノードの IP アドレスは、openstack server list
コマンドで確認できます。
-
-
fencing.yaml
環境ファイルで、EnableFencing
パラメーターをtrue
に設定します。
第4章 オーバークラウドの再起動
最新の 17.1 バージョンへの Red Hat Open Stack Platform (RHOSP) のマイナー更新実行後、オーバークラウドを再起動します。リブートにより、関連付けられたカーネル、システムレベル、およびコンテナーコンポーネントの更新と共にノードがリフレッシュされます。これらの更新により、パフォーマンスとセキュリティー上のメリットが得られます。ダウンタイムを計画して、再起動手順を実施します。
以下のガイドを使用して、さまざまなノードのタイプを再起動する方法を説明します。
- 1 つのロールで全ノードを再起動する場合は、各ノードを個別に再起動します。ロールの全ノードを同時に再起動すると、その操作中サービスにダウンタイムが生じる場合があります。
次の順序でノードの再起動の手順を完了します。
4.1. コントローラーノードおよびコンポーザブルノードの再起動
設定可能なロールに基づいてコントローラーノードとスタンドアロンノードを再起動し、コンピュートノードと Ceph ストレージノードを除外します。
手順
- リブートするノードにログインします。
オプション: ノードが Pacemaker リソースを使用している場合は、クラスターを停止します。
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs cluster stop
ノードをリブートします。
[tripleo-admin@overcloud-controller-0 ~]$ sudo reboot
- ノードがブートするまで待ちます。
検証
サービスが有効になっていることを確認します。
ノードが Pacemaker サービスを使用している場合は、ノードがクラスターに再度加わったか確認します。
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
ノードが Systemd サービスを使用している場合は、すべてのサービスが有効化されていることを確認します。
[tripleo-admin@overcloud-controller-0 ~]$ sudo systemctl status
ノードがコンテナー化されたサービスを使用している場合は、ノード上の全コンテナーがアクティブであることを確認します。
[tripleo-admin@overcloud-controller-0 ~]$ sudo podman ps
4.2. Ceph Storage (OSD) クラスターの再起動
Ceph Storage (OSD) ノードのクラスターを再起動するには、以下の手順を実施します。
前提条件
ceph-mon
サービスを実行している Ceph Monitor または Controller ノードで、Red Hat Ceph Storage クラスターのステータスが正常であり、pg ステータスがactive+clean
であることを確認する。$ sudo cephadm -- shell ceph status
Ceph クラスターが正常な場合、
HEALTH_OK
のステータスが返されます。Ceph クラスターのステータスが異常な場合、
HEALTH_WARN
またはHEALTH_ERR
のステータスが返されます。トラブルシューティングのガイダンスは、Red Hat Ceph Storage 5 トラブルシューティングガイド または Red Hat Ceph Storage 6 トラブルシューティングガイド を参照してください。
手順
ceph-mon
サービスを実行している Ceph Monitor または Controller ノードにログインし、Ceph Storage クラスターのリバランスを一時的に無効にします。$ sudo cephadm shell -- ceph osd set noout $ sudo cephadm shell -- ceph osd set norebalance
注記マルチスタックまたは分散コンピュートノード (DCN) アーキテクチャーを使用している場合は、
noout
フラグとnorebalance
フラグの設定時に Ceph クラスター名を指定する必要があります。例:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring
。- 再起動する最初の Ceph Storage ノードを選択し、そのノードにログインします。
ノードをリブートします。
$ sudo reboot
- ノードがブートするまで待ちます。
ノードにログインし、Ceph クラスターのステータスを確認します。
$ sudo cephadm -- shell ceph status
pgmap
により、すべてのpgs
が正常な状態 (active+clean
) として報告されることを確認します。- ノードからログアウトして、次のノードを再起動し、ステータスを確認します。全 Ceph Storage ノードが再起動されるまで、このプロセスを繰り返します。
完了したら、
ceph-mon
サービスを実行している Ceph Monitor または Controller ノードにログインし、クラスターのリバランスを有効にします。$ sudo cephadm shell -- ceph osd unset noout $ sudo cephadm shell -- ceph osd unset norebalance
注記マルチスタックまたは分散コンピュートノード (DCN) アーキテクチャーを使用している場合は、
noout
フラグとnorebalance
フラグの設定解除時に Ceph クラスター名を指定する必要があります。例:sudo cephadm shell -c /etc/ceph/<cluster>.conf -k /etc/ceph/<cluster>.client.keyring
。最終のステータスチェックを実行して、クラスターが
HEALTH_OK
を報告していることを確認します。$ sudo cephadm shell ceph status
4.3. コンピュートノードの再起動
Red Hat Open Stack Platform 環境でのインスタンスのダウンタイムを最小限に抑えるために、インスタンスの移行ワークフローでは、再起動するコンピュートノードからインスタンスを移行する時に必要な手順を概説します。
インスタンスの移行ワークフロー
- コンピュートノードを再起動する前に、インスタンスを別のノードに移行するか決定します。
- 再起動するコンピュートノードを選択して無効にし、新規インスタンスをプロビジョニングしないようにします。
- インスタンスを別のコンピュートノードに移行します。
- 空のコンピュートノードを再起動します。
- 空のコンピュートノードを有効にします。
前提条件
コンピュートノードを再起動する前に、ノードの再起動中にインスタンスを別のコンピュートノードに移行するか決定する。
コンピュートノード間で仮想マシンインスタンスを移行する際に発生する可能性のある移行の制約リストを確認する。詳細は、インスタンス作成のための Compute サービスの設定 の 移行の制約 を参照してください。
注記Multi-RHEL 環境があり、RHEL 9.2 を実行しているコンピュートノードから RHEL 8.4 を実行しているコンピュートノードに仮想マシンを移行する場合は、コールドマイグレーションのみがサポートされます。コールドマイグレーションの詳細は、インスタンス作成のための Compute サービスの設定 の インスタンスのコールドマイグレーション を参照してください。
インスタンスを移行できない場合は、以下のコアテンプレートパラメーターを設定して、コンピュートノード再起動後のインスタンスの状態を制御する。
NovaResumeGuestsStateOnHostBoot
-
リブート後のコンピュートノードで、インスタンスを同じ状態に戻すか定義します。
False
に設定すると、インスタンスは停止した状態を維持し、手動で起動する必要があります。デフォルト値はFalse
です。 NovaResumeGuestsShutdownTimeout
再起動する前に、インスタンスのシャットダウンを待つ秒数。この値を
0
に設定することは推奨されません。デフォルト値は300
です。オーバークラウドパラメーターおよびその使用方法の詳細は、オーバークラウドのパラメーター を参照してください。
手順
-
アンダークラウドに
stack
ユーザーとしてログインします。 全コンピュートノードとその UUID をリスト表示します。
$ source ~/stackrc (undercloud) $ metalsmith list | grep compute
リブートするコンピュートノードの UUID を特定します。
オーバークラウドからコンピュートノードを選択し、そのノードを無効にします。
$ source ~/overcloudrc (overcloud)$ openstack compute service list (overcloud)$ openstack compute service set <hostname> nova-compute --disable
-
<hostname>
は、コンピュートノードのホスト名に置き換えます。
-
コンピュートノード上の全インスタンスをリスト表示します。
(overcloud)$ openstack server list --host <hostname> --all-projects
オプション: インスタンスを別のコンピュートノードに移行するには、次の手順を実行します。
インスタンスを別のコンピュートノードに移行する場合は、以下のコマンドのいずれかを使用します。
インスタンスを別のホストに移行するには、次のコマンドを実行します。
(overcloud) $ openstack server migrate <instance_id> --live <target_host> --wait
-
<instance_id>
は、インスタンス ID に置き換えます。 -
<target_host>
は、インスタンスの移行先のホストに置き換えます。
-
nova-scheduler
がターゲットホストを自動的に選択できるようにします。(overcloud) $ nova live-migration <instance_id>
すべてのインスタンスを一度にライブマイグレーションします。
$ nova host-evacuate-live <hostname>
注記nova
コマンドで非推奨の警告が表示される可能性がありますが、無視しても問題ありません。
- 移行が完了するまで待ちます。
移行が正常に完了したことを確認します。
(overcloud) $ openstack server list --host <hostname> --all-projects
- コンピュートノードのインスタンスがなくなるまで、移行を続けます。
コンピュートノードにログインして、ノードをリブートします。
[tripleo-admin@overcloud-compute-0 ~]$ sudo reboot
- ノードがブートするまで待ちます。
コンピュートノードを再度有効にします。
$ source ~/overcloudrc (overcloud) $ openstack compute service set <hostname> nova-compute --enable
コンピュートノードが有効であることを確認します。
(overcloud) $ openstack compute service list
4.4. オーバークラウドの更新後の RHOSP の検証
Red Hat OpenStack Platform (RHOSP) 環境を更新した後、tripleo-validations
Playbook を使用してオーバークラウドを検証します。
検証の詳細は、director を使用した Red Hat OpenStack Platform のインストールと管理 の 検証フレームワークの使用 を参照してください。
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。$ source ~/stackrc
検証を実行します。
$ validation run -i ~/overcloud-deploy/<stack>/tripleo-ansible-inventory.yaml --group post-update
- <stack> をスタックの名前に置き換えます。
検証
- 検証レポートの結果を表示するには、director を使用した Red Hat OpenStack Platform のインストールと管理 の 検証履歴の表示 を参照してください。
No host matched
(唯一返されるエラー) と報告する FAILED
の検証を無視します。このエラーは、検証ホストグループに一致するホストがないことを意味しますが、これは予期されることです。検証が FAILED
であっても、更新された RHOSP 環境を使用できないことはありません。ただし、検証が FAILED
の場合は、環境に問題があることを示している可能性があります。