OpenStackを担当しているソリューションアーキテクトの輿水です。
前回Red Hat OpenStack Platform 16.1のリリースについて記載しましたが、ロングライフリリースRHOSP 13からRHOSP 16へのアップグレードについて説明いたします。この説明は「RHOSP 13からRHOSP 16.1」のみが対象であり、他のバージョンの移行について検討されている場合は弊社までご連絡ください。また、OpenStack Data Processing サービス (sahara)はRHOSP 16からはサポートされなくなったため、RHOSP 13でSaharaを使用している場合はアップグレードを実施せず、弊社までお問い合わせください。
ロングライフリリースのアップグレードパスは2種類あります。
in-place アップグレード
既存環境でサービスのアップグレードを実施します。Red Hat Customer Portalで日本語ドキュメントが公開されておりますので、詳細なコマンドなどの手順はそちらを参照してください。in-placeアップグレードで考慮する点は以下です。
- 既存環境のアップグレードなので追加のハードウェアは不要
- 既存ワークロードがRHOSP 13と16.1で動作することを検証しておく必要がある
- 移行前に既存のRHOSP 13を最新にしておく必要がある(アップグレード前にRHOSP 13のマイナーアップデートが必要になる場合がある)
- アップグレード中、OpenStackサービスのダウンタイムが発生する
- 大規模環境ではアップグレードが完了するまでの時間が長時間になる
- 手順の中でロールバックが難しい点がある
Parallel Cloud Migration
新しいRHOSP 16.1環境を作成し、ワークロードを既存環境から新しい環境に移行する方法です。Parallel Cloud Migrationの基本的な考え方としては、既存環境と同スケールの環境を作るのではなく、既存環境よりは規模の小さい「control planeと数台のCompute Node」で構成される新環境を作成し、徐々にワークロードを新規環境に移行します。それに伴い移行元環境で使用しなくなったリソース(Compute Node)を新環境に移設し、そこに更にワークロードを移行します。この方法は、移行計画をお客様と十分に検討する事が必須のため、弊社までご相談ください。
- 追加のハードウェアが必要
- 移行前に既存のRHOSP 13を最新にする必要はない
- ロールバックや再試行、検証が容易
- 移行作業は、既存環境の構成をコピーするなどの工夫が必要で、自動化できるものもあるが、移行作業にはかなりの労力が必要になる
- ワークロードの移行はコールドマイグレーション前提のため、ワークロードのダウンタイムが発生する
in-place アップグレード手順
この記事では大まかなステップのみを記載しています。詳細な手順やコマンド、設定内容については公開ドキュメントを参照してください。
環境構成例
Controllerが3台ありPacemakerで冗長化されている標準的な構成です。Ceph StorageやHCI構成は含んでいません。
Leapp
RHOSP 13から16.1へのアップグレードではRHEL 7から 8.2へのアップグレードを伴うため、ユーティリティーLeappを使用します。Leappを使用するためのOpenStack側の必要条件と制限は以下になります。
- RHEL 7と RHEL 8(8.2)のサブスクリプションが必要
- カーネルベースのNIC名が使用されているかどうかを確認
- SSHのrootログイン権限パラメーターPermitRootLoginの設定
- Open vSwitchバージョンの置き換え:openvswitch2.11を削除しopenvswitch2.13をインストールする
アップグレード前の事前準備
- 既存のundercloudとovercloudのcontrol planeをバックアップする
- RHOSP 13のマイナーバージョンを最新にする
- アップグレード前に既存のRHOSP13を検証する
validation用のスクリプトが準備されているので、それを検証を行ってください。
undercloudのアップグレード
- Red Hat OpenStack Platform directorパッケージの削除
RHEL 7に関連付けられたRed Hat OpenStack Platform 13パッケージを削除します。
- undercloudのOSのアップグレード
undercloudにLeappユーティリティをインストールします。Open vSwitchのバージョンを置き換えた後に、LeappコマンドでOSをアップグレードします。この過程でundercloudノードの再起動が必要になりますがovercloudのサービスには影響しません。
- directorのアップグレード
undercloudにdirectorのインストールと設定を行うためのコマンドラインツールをインストールします。 Ceph Storageを使用する場合はCeph-ansible パッケージが必要です。Ceph Storageを使用しない場合はCeph-ansible パッケージをインストールしないでください。undercloudで利用するコンテナーイメージの準備、directorのパラメータ設定を行った上で、openstack undercloud upgradeを実行します。このスクリプトにより、undercloudのサービスもすべて自動的に起動されます。
overcloudのアップグレード
overcloudのアップグレードのプロセスにおいてovercloudサービスにダウンタイムが発生します。
アップグレード中、影響を受ける項目
- OpenStack platformサービス
アップグレード中、影響を受けない項目
- インスタンス
- Ceph Storage OSD(インスタンス向けのバックエンド)
- Linuxネットワーク
- Open vSwitchネットワーク
- undercloud
アップグレードのテストのためのCompute Nodeの選択
overcloudのアップグレードプロセスでは「同じロールのノードをすべてアップグレードする」または「個別ノードを別々にアップグレードする」のいずれかを行うことができます。全Compute Nodeをアップグレードする前に、個々のCompute Nodeのいくつかでアップグレードのテストをすることで、ワークロードのダウンタイムを最小限に抑えることが可能と考えています。テストには2〜3台の、クリティカルなインスンスが実行されていないCompute Nodeを選択します。
overcloudのアップグレードのための準備
undercloud上でovercloudのアップデートのための準備をします
- overcloudのためのLeapp設定
- undecloudからovercloudに必要なデータをコピーする設定
- RHOSP 16.1用の環境ファイルを作成
overcloudのController Nodeアップグレード実施(この間、サービス影響あり)
以下の操作はdirectorにログインして実施します。
3台のController Nodeの中でどれがboot strap controllerなのかを確認し、最初にboot strap controllerノードをアップグレードします。この例ではovercloud-controller-0がboot strap controllerです。openstack overcloud upgrade runコマンドにsystem_upgradeタグを付けてovercloud-controller-0を指定して実行します。これによりLeappによるOSのアップグレードが行われ、再起動が行われます。アップグレードを実施している間、control planeの機能が停止するため、overcloudの操作を行うことはできません(=ダウンタイム)。
openstack overcloud upgrade run --tags system_upgrade --limit overcloud-controller-0
次に外部アップグレードコマンドopenstack overcloud external-upgrade runをsystem_upgrade_transfer_dataタグを付けて実行します。これにより、最新バージョンのデータベースが既存のノードからboot strap controllerにコピーされます。
openstack overcloud external-upgrade run --tags system_upgrade_transfer_data
次にopenstack overcloud upgrade runをsystem_upgradeタグ無しで実行します。このコマンドによりRHOSPのアップグレードが実施されます。
openstack overcloud upgrade run --limit overcloud-controller-0
boot strap controllerノードのアップグレードが完了すると、control planeの機能が回復し、overcloudの操作が可能になります。
2台目のcontroller Nodeをアップグレードします。この例ではovercloud-controller-1です。openstack overcloud upgrade runコマンドをsystem_upgradeタグを付けてovercloud-controller-1を指定して実行します。これによりLeappによるOSのアップグレードが行われ、再起動が行われます。
openstack overcloud upgrade run --tags system_upgrade --limit overcloud-controller-1
次ににopenstack overcloud upgrade runをsystem_upgradeタグ無しで実行します。このコマンド実行時には前のステップでアップグレードしたovercloud-controller-0をオプションに含めてください。このコマンドによりRHOSPのアップグレードが実施されます。
openstack overcloud upgrade run --limit overcloud-controller-0,overcloud-controller-1
3台目のcontrollerノードをアップグレードします。この例ではovercloud-controller-2です。openstack overcloud upgrade runコマンドをsystem_upgradeタグを付けてovercloud-controller-2を指定して実行します。これによりLeappによるOSのアップグレードが行われ、再起動が行われます。
openstack overcloud upgrade run --tags system_upgrade --limit overcloud-controller-1
次ににopenstack overcloud upgrade runをsystem_upgradeタグ無しで実行します。このコマンド実行時には前のステップでアップグレードしたovercloud-controller-0およびovercloud-controller-1をオプションに含めてください。このコマンドによりRHOSPのアップグレードが実施されます。
openstack overcloud upgrade run --limit overcloud-controller-0,overcloud-controller-1,overcloud-controller-2
overcloudのComute Nodeアップグレード実施
アップグレード対象となるCompute Nodeでワークロードが稼働している場合は、他のノードにマイグレーションしておきます。
openstack overcloud upgrade runコマンドをsystem_upgradeタグを付けて、overcloud-compute-0を指定して実行します。これによりLeappによるOSのアップグレードが行われ、再起動が行われます。
openstack overcloud upgrade run --tags system_upgrade --limit overcloud-compute-0
次にopenstack overcloud upgrade runをsystem_upgradeタグ無しで実行します。このコマンドによりRHOSPのアップグレードが実施されます。この操作を対象のCompute Nodeに対して順次実施してください。
openstack overcloud upgrade run --limit overcloud-compute-0
複数のCompute Nodeをまとめてアップグレードする場合は、ノードをコンマ区切りリストで指定してタスクを実行することも可能です。
openstack overcloud upgrade run --tags system_upgrade --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
openstack overcloud upgrade run --limit overcloud-compute-0,overcloud-compute-1,overcloud-compute-2
アップグレード後の最終処理
- overcloud imageのアップグレード
undercloudに保存されているovercloudイメージ(overcloud-full)を最新のものに置き換え、overcloud環境にインポートします。
- Open Virtual Network (OVN) への移行
overcloud上の OpenStack Networking (neutron) サービスを ML2/OVS ドライバーから ML2/OVN ドライバーに移行します。
以上、とても駆け足でしたが、RHOSP 13からRHOSP 16.1へのアップグレード手順の紹介でした。実際にアップグレードを行う際には、Cephの利用の有無や、センシティブなインスタンスの有無など事前の確認が必要で、検証環境等でのテストが必要になりますので、まずは弊社までご連絡ください。