3.4. オーバークラウドのアップグレード
以下の手順を実行する前に、「重要事前アップグレードノート」 にある情報を読み取ってください。
本項では、オーバークラウドのアップグレードに必要な手順について説明します。各セクションの順番に従い、お使いの環境に関連するセクションのみを適用してください。
このプロセスでは、元の openstack overcloud deploy コマンドを複数回実行して、アップグレードの段階的な方法を提供する必要があります。コマンドを実行するたびに、既存の環境ファイルと共に異なるアップグレード環境ファイルを追加します。これらの新たなアップグレード環境ファイルは以下のとおりです。
-
major-upgrade-pacemaker-init.yaml- アップグレードの初期化を提供します。これには、オーバークラウドの各ノードの Red Hat OpenStack Platform リポジトリーの更新や、特定ノードに特殊なアップグレードスクリプトが提供されます。 -
major-upgrade-pacemaker.yaml- コントローラーノードのアップグレードを提供します。 -
major-upgrade-pacemaker-converge.yaml: オーバークラウドのアップグレードの最終処理。これにより、アップグレードの結果が director の最新の Heat テンプレートコレクションの内容と一致するようになります。
これらのデプロイメントコマンドの間に、さまざまなノード種別で upgrade-non-controller.sh スクリプトを実行します。このスクリプトは、非コントローラーノード上のパッケージを更新します。
ワークフロー
オーバークラウドのアップグレードプロセスでは、以下のワークフローを使用します。
-
major-upgrade-pacemaker-init.yaml環境ファイルを指定してデプロイメントコマンドを実行します。 -
各 Object Storage ノードで
upgrade-non-controller.shを実行します。 -
major-upgrade-pacemaker.yaml環境ファイルを指定してデプロイメントコマンドを実行します。 -
各コンピュートノードで
upgrade-non-controller.shを実行します。 -
各 Ceph Storage ノードで
upgrade-non-controller.shを実行します。 -
major-upgrade-pacemaker-converge.yaml環境ファイルを指定してデプロイメントコマンドを実行します。
3.4.1. 管理ネットワークの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform 7 のカスタム NIC テンプレートを使用する場合には、NIC テンプレートの parameters セクションに ManagementSubnetIp パラメーターを追加します。以下に例を示します。
parameters:
ManagementIpSubnet: # Only populated when including environments/network-management.yaml
default: ''
description: IP address/subnet on the management network
type: string
3.4.2. アップグレードスクリプトのインストール リンクのコピーリンクがクリップボードにコピーされました!
この手順では、コントローラー以外の各ノードにスクリプトをインストールします。このスクリプトにより、メジャーバージョンパッケージのアップグレードおよび設定が実行されます。それぞれのスクリプトはノードのタイプによって異なります。たとえば、コンピュートノードは、Ceph Storage ノードに異なるアップグレードスクリプトを受け取ります。
この初期化ステップでは、すべてのオーバークラウドノードで有効なリポジトリーも更新します。つまり、古いリポジトリーを無効にし、新しいリポジトリーを手動で有効にする必要はありません。
アンダークラウドから openstack overcloud deploy を実行し、major-upgrade-pacemaker-init.yaml 環境ファイルを含めます。ネットワーク分離やストレージなど、環境に関連する全カスタム環境ファイルも追加するようにしてください。
以下は、追加したファイルが含まれる openstack overcloud deploy コマンドの例です。以下に例を示します。
$ openstack overcloud deploy --templates \
--control-scale 3 \
--compute-scale 3 \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
-e /home/stack/templates/network_env.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker-init.yaml
新しい環境ファイルの設定でオーバークラウドが更新されるまで待ちます。
3.4.3. オブジェクトストレージノードのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
director は upgrade-non-controller.sh コマンドを使用して、major-upgrade-pacemaker-init.yaml 環境ファイルからコントローラー以外の各ノードに渡されるアップグレードスクリプトを実行します。この手順では、以下のコマンドで各オブジェクトストレージノードをアップグレードします。
$ for NODE in `nova list | grep swift | awk -F "|" '{ print $2 }'` ; do upgrade-non-controller.sh --upgrade $NODE ; done
各オブジェクトストレージノードのアップグレードが完了するまで待ちます。
3.4.4. コントローラーノードのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
コントローラーノードのアップグレードには、高可用性ツールを実行しているコントローラーノードへの完全なアップグレードを提供する別の環境ファイル(major-upgrade-pacemaker.yaml)を含めます。
アンダークラウドから openstack overcloud deploy を実行し、major-upgrade-pacemaker.yaml 環境ファイルを含めます。ネットワーク分離やストレージなど、環境に関連する全カスタム環境ファイルも追加するようにしてください。
以下は、追加したファイルが含まれる openstack overcloud deploy コマンドの例です。以下に例を示します。
$ openstack overcloud deploy --templates \
--control-scale 3 \
--compute-scale 3 \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
-e network_env.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker.yaml
新しい環境ファイルの設定でオーバークラウドが更新されるまで待ちます。
この手順により、コントローラーのアップグレード中に Neutron サーバーと L3 エージェントが無効になります。つまり、この手順では Floating IP アドレスは利用できません。
このステップでオーバークラウドスタックが失敗した場合は、コントローラーノードのいずれかにログインして sudo pcs cluster start を実行し、director で openstack overcloud deploy を再実行します。
3.4.5. コンピュートノードのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
director は upgrade-non-controller.sh コマンドを使用して、major-upgrade-pacemaker-init.yaml 環境ファイルからコントローラー以外の各ノードに渡されるアップグレードスクリプトを実行します。
コンピュートノードとその UUID のリストを取得します。
$ nova list | grep "compute"
ダウンタイムをゼロにするために、各ノードで個別に以下のタスクを実行します。アップグレードするコンピュートノードを選択します。
- ワークロードを移行する。Red Hat OpenStack Platform Director インストールおよび使用ガイド の オーバークラウドのコンピュートノードからの VM の移行 を参照してください。
選択したノードの Compute サービスが無効になっていることを確認します。
$ source ~/overcloudrc $ nova service-list $ nova service-disable [hostname] nova-compute次のコマンドで、それぞれのコンピュートノードをアップグレードします。
$ source ~/stackrc $ upgrade-non-controller.sh --upgrade NODE_UUIDNODE_UUID は、選択したコンピュートノードの UUID に置き換えます。
コンピュートノードのアップグレードが完了するまで待ちます。アップグレードが完了したら、次のコマンドを使用してコンピュートノードが有効であることを確認します。
$ source ~/overcloudrc $ nova service-list $ nova service-enable [hostname] nova-compute
各コンピュートノードでこれらのステップを繰り返します。
3.4.6. Ceph Storage ノードのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
director は upgrade-non-controller.sh コマンドを使用して、major-upgrade-pacemaker-init.yaml 環境ファイルからコントローラー以外の各ノードに渡されるアップグレードスクリプトを実行します。この手順では、以下のコマンドで各 Ceph Storage ノードをアップグレードします。
それぞれの Ceph Storage ノードをアップグレードします。
$ for NODE in `nova list | grep ceph | awk -F "|" '{ print $2 }'` ; do upgrade-non-controller.sh --upgrade $NODE ; done
3.4.7. アップグレードのファイナライズ リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドスタックが現在の Heat テンプレートコレクションと同期されるように、director はアップグレードの最終処理で実行する必要があります。これには、openstack overcloud deploy コマンドを使用して追加する環境ファイル(major-upgrade-pacemaker-converge.yaml)が関係します。
アンダークラウドから openstack overcloud deploy を実行し、major-upgrade-pacemaker-converge.yaml 環境ファイルを含めます。ネットワーク分離やストレージなど、環境に関連する全カスタム環境ファイルも追加するようにしてください。
以下は、追加したファイルが含まれる openstack overcloud deploy コマンドの例です。以下に例を示します。
$ openstack overcloud deploy --templates \
--control-scale 3 \
--compute-scale 3 \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.yaml \
-e network_env.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/major-upgrade-pacemaker-converge.yaml
新しい環境ファイルの設定でオーバークラウドが更新されるまで待ちます。
これでオーバークラウドのアップグレード手順が完了しました。
3.4.8. アップグレード後ノート リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドを Red Hat OpenStack Platform 8 にアップグレードした後、以下の点に注意してください。
コンピュートノードが
neutron-openvswitch-agentの問題をレポートする可能性があります。これが発生した場合には、各コンピュートノードにログインして、このサービスを再起動します。以下に例を示します。$ sudo systemctl restart neutron-openvswitch-agent-
更新プロセスを実行しても、オーバークラウド内のノードは自動的には再起動しません。必要に応じて、update コマンドの完了後に手動で再起動を実行します。クラスターベースのノード(Ceph Storage ノードやコントローラーノードなど)を個別に再起動し、ノードがクラスターに再度参加するのを待ちます。Ceph Storage ノードの場合は、
ceph の正常性を確認し、クラスターのステータスがHEALTH OKであることを確認します。コントローラーノードの場合には、pcs リソースを確認し、各ノードですべてのリソースが実行されていることを確認します。 状況によっては、コントローラーノードのリブート後に IPv6 環境で
corosyncサービスの起動に失敗する可能性があります。これは、コントローラーノードが静的な IPv6 アドレスを設定する前に Corosync が起動してしまうことが原因です。このような場合は、コントローラーノードで Corosync を手動で再起動してください。$ sudo systemctl restart corosyncコントローラーノードにフェンシングを設定している場合には、更新プロセスによってその設定が無効になる場合があります。更新プロセスが完了したら、コントローラーノードの 1 つで以下のコマンドを実行してフェンシングを再度有効にします。
$ sudo pcs property set stonith-enabled=true次回オーバークラウドスタックを更新またはスケーリングする場合(つまり
openstack overcloud deployコマンドを実行する)、オーバークラウドでパッケージの更新をトリガーする識別子をリセットする必要があります。空のUpdateIdentifierパラメーターを環境ファイルに追加し、openstack overcloud deployコマンドを実行する際に追加します。このような環境ファイルの例を以下に示します。parameter_defaults: UpdateIdentifier: