Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第11章 オーバークラウドノードのスケーリング
オーバークラウドからノードを削除する場合は、openstack server delete
を使用しないでください。本セクションで説明する手順をよく読み、適切にノードの削除/置き換えを行ってください。
オーバークラウドの作成後に、ノードを追加または削除する必要がある場合があります。たとえば、オーバークラウドのコンピュートノードを追加する場合などです。このような状況では、オーバークラウドの更新が必要です。
以下の表を使用して、各ノード種別のスケーリングに対するサポートを判断してください。
表11.1 各ノード種別のスケーリングサポート
ノード種別 |
スケールアップ |
スケールダウン |
備考 |
コントローラー |
非対応 |
非対応 |
「12章コントローラーノードの置き換え」に記載の手順を使用して、コントローラーノードを置き換えることができます。 |
Compute |
対応 |
対応 | |
Ceph Storage ノード |
対応 |
非対応 |
オーバークラウドを最初に作成する際に Ceph Storage ノードを 1 つ以上設定する必要があります。 |
オブジェクトストレージノード |
対応 |
対応 |
オーバークラウドをスケーリングする前には、空き領域が少なくとも 10 GB あることを確認してください。この空き領域は、イメージの変換やノードのプロビジョニングプロセスのキャッシュに使用されます。
11.1. オーバークラウドへのノード追加
director のノードプールにさらにノードを追加するには、以下の手順を実施します。
手順
登録する新規ノードの詳細を記載した新しい JSON ファイル (
newnodes.json
) を作成します。{ "nodes":[ { "mac":[ "dd:dd:dd:dd:dd:dd" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.168.24.207" }, { "mac":[ "ee:ee:ee:ee:ee:ee" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"ipmi", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.168.24.208" } ] }
以下のコマンドを実行して、新規ノードを登録します。
$ source ~/stackrc (undercloud) $ openstack overcloud node import newnodes.json
新規ノードを追加したら、各新規ノードごとに以下のコマンドを実行してイントロスペクションプロセスを起動します。
(undercloud) $ openstack baremetal node manage [NODE UUID] (undercloud) $ openstack overcloud node introspect [NODE UUID] --provide
このプロセスにより、ノードのハードウェアプロパティーの検出とベンチマークが実行されます。
ノードのイメージプロパティーを設定します。
(undercloud) $ openstack overcloud node configure [NODE UUID]
11.2. ロールのノード数の追加
特定ロールのオーバークラウドノード (たとえばコンピュートノード) をスケーリングするには、以下の手順を実施します。
手順
それぞれの新規ノードを希望するロールにタグ付けします。たとえば、ノードをコンピュートロールにタグ付けするには、以下のコマンドを実行します。
(undercloud) $ openstack baremetal node set --property capabilities='profile:compute,boot_option:local' [NODE UUID]
オーバークラウドをスケーリングするには、ノード数が含まれる環境ファイルを編集してオーバークラウドを再デプロイする必要があります。たとえば、オーバークラウドをコンピュートノード 5 台にスケーリングするには、
ComputeCount
パラメーターを編集します。parameter_defaults: ... ComputeCount: 5 ...
更新したファイルを使用して、デプロイメントのコマンドを再度実行します。このファイルは、以下の例では、
node-info.yaml
という名前です。(undercloud) $ openstack overcloud deploy --templates -e /home/stack/templates/node-info.yaml [OTHER_OPTIONS]
コンピュート以外のノードに対する同様のスケジューリングパラメーターなど、最初に作成したオーバークラウドからの環境ファイルおよびオプションをすべて追加するようにしてください。
- デプロイメント操作が完了するまで待ちます。
11.3. コンピュートノードの削除
オーバークラウドからコンピュートノードを削除する必要がある状況が出てくる可能性があります。たとえば、問題のあるコンピュートノードを置き換える必要がある場合などです。
オーバークラウドからコンピュートノードを削除する前に、インスタンスをそのノードから別のコンピュートノードに移行してください。詳しくは、「コンピュートノードからのインスタンスの移行」を参照してください。
手順
source コマンドでオーバークラウド設定を読み込みます。
$ source ~/stack/overcloudrc
オーバークラウド上で削除するノードの Compute サービスを無効にし、ノードで新規インスタンスがスケジューリングされないようにします。
(overcloud) $ openstack compute service list (overcloud) $ openstack compute service set [hostname] nova-compute --disable
source コマンドでアンダークラウド設定を読み込みます。
(overcloud) $ source ~/stack/stackrc
オーバークラウドノードを削除するには、ローカルのテンプレートファイルを使用して director のオーバークラウドスタックを更新する必要があります。まず、オーバークラウドスタックの UUID を特定します。
(undercloud) $ openstack stack list
削除するノードの UUID を特定します。
(undercloud) $ openstack server list
以下のコマンドを実行してスタックからノードを削除し、それに応じてプランを更新します。
(undercloud) $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]
重要オーバークラウドの作成時に追加の環境ファイルを渡した場合には、オーバークラウドに、不要な変更が手動で加えられないように、ここで
-e
または--environment-file
オプションを使用して環境ファイルを再度指定します。-
操作を続行する前に、
openstack overcloud node delete
コマンドが完全に終了したことを確認します。openstack stack list
コマンドを使用して、overcloud
スタックがUPDATE_COMPLETE
のステータスに切り替わっているかどうかをチェックしてください。 ノードから Compute サービスを削除します。
(undercloud) $ source ~/stack/overcloudrc (overcloud) $ openstack compute service list (overcloud) $ openstack compute service delete [service-id]
ノードから Open vSwitch エージェントを削除します。
(overcloud) $ openstack network agent list (overcloud) $ openstack network agent delete [openvswitch-agent-id]
オーバークラウドから自由にノードを削除して、別の目的でそのノードを再プロビジョニングすることができます。
11.4. Ceph Storage ノードの置き換え
director を使用して、director で作成したクラスター内の Ceph Storage ノードを置き換えることができます。手順については、『Deploying an Overcloud with Containerized Red Hat Ceph』を参照してください。
11.5. オブジェクトストレージノードの置き換え
本項の手順で、クラスターの整合性を保ちながらオブジェクトストレージノードを置き換える方法を説明します。以下の例では、3 台のノードで構成されるオブジェクトストレージクラスターで、ノード overcloud-objectstorage-1
を置き換えます。この手順の目的は、ノードを 1 台追加し、その後 overcloud-objectstorage-1
を削除することです (結果的に、置き換えることになります)。
手順
ObjectStorageCount
パラメーターを使用してオブジェクトストレージ数を増やします。このパラメーターは、通常ノード数を指定する環境ファイルのnode-info.yaml
に含まれています。parameter_defaults: ObjectStorageCount: 4
ObjectStorageCount
パラメーターで、環境内のオブジェクトストレージノードの数を定義します。今回の例では、ノードを 3 つから 4 つにスケーリングします。更新した
ObjectStorageCount
パラメーターを使用して、デプロイメントコマンドを実行します。$ source ~/stackrc (undercloud) $ openstack overcloud deploy --templates -e node-info.yaml ENVIRONMENT_FILES
- デプロイメントコマンドの実行が完了すると、オーバークラウドには追加のオブジェクトストレージノードが含まれるようになります。
新しいノードにデータを複製します。ノードを削除する前に (この場合は
overcloud-objectstorage-1
)、複製のパス が新規ノードで完了するのを待ちます。/var/log/swift/swift.log
ファイルで複製パスの進捗を確認することができます。パスが完了すると、Object Storage サービスは以下の例のようなエントリーをログに残します。Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
リングから不要になったノードを削除するには、
ObjectStorageCount
パラメーターの数を減らして不要になったノードを削除します。今回は 3 に減らします。parameter_defaults: ObjectStorageCount: 3
新規環境ファイル (
remove-object-node.yaml
) を作成します。このファイルでオブジェクトストレージノードを特定し、そのノードを削除します。以下の内容ではovercloud-objectstorage-1
の削除を指定します。parameter_defaults: ObjectStorageRemovalPolicies: [{'resource_list': ['1']}]
デプロイメントコマンドに
node-info.yaml
ファイルとremove-object-node.yaml
ファイルの両方を含めます。(undercloud) $ openstack overcloud deploy --templates -e node-info.yaml ENVIRONMENT_FILES -e remove-object-node.yaml
director は、オーバークラウドからオブジェクトストレージノードを削除して、オーバークラウド上の残りのノードを更新し、ノードの削除に対応します。
11.6. ノードのブラックリスト登録
オーバークラウドノードがデプロイメントの更新を受け取らないように除外することができます。これは、既存のノードがコア Heat テンプレートコレクションから更新されたパラメーターセットやリソースを受け取らないように除外した状態で、新規ノードをスケーリングする場合に役立ちます。つまり、ブラックリストに登録されているノードは、スタック操作の影響を受けなくなります。
ブラックリストを作成するには、環境ファイルの DeploymentServerBlacklist
パラメーターを使います。
ブラックリストの設定
DeploymentServerBlacklist
パラメーターは、サーバー名のリストです。新たな環境ファイルを作成するか、既存のカスタム環境ファイルにパラメーター値を追加して、ファイルをデプロイメントコマンドに渡します。
parameter_defaults: DeploymentServerBlacklist: - overcloud-compute-0 - overcloud-compute-1 - overcloud-compute-2
パラメーター値のサーバー名には、実際のサーバーホスト名ではなく、OpenStack Orchestation (Heat) で定義されている名前を使用します。
openstack overcloud deploy
コマンドで、この環境ファイルを指定します。
$ source ~/stackrc (undercloud) $ openstack overcloud deploy --templates \ -e server-blacklist.yaml \ [OTHER OPTIONS]
Heat はリスト内のサーバーをすべてブラックリストし、Heat デプロイメントの更新を受け取らないようにします。スタック操作が完了した後には、ブラックリストに登録されたサーバーは以前の状態のままとなります。操作中に os-collect-config
エージェントの電源をオフにしたり、停止したりすることもできます。
- ノードをブラックリストに登録する場合には、注意が必要です。ブラックリストを有効にした状態で要求された変更を適用する方法を十分に理解していない限り、ブラックリストは使用しないでください。ブラックリスト機能を使うと、スタックがハングしたり、オーバークラウドが誤って設定されたりする場合があります。たとえば、クラスター設定の変更が Pacemaker クラスターの全メンバーに適用される場合には、この変更の間に Pacemaker クラスターのメンバーをブラックリストに登録すると、クラスターが機能しなくなる場合があります。
- 更新またはアップグレードの操作中にブラックリストを使わないでください。これらの操作には、特定のサーバーに対する変更を分離するための独自の方法があります。詳細は、『Upgrading Red Hat OpenStack Platform』のドキュメントを参照してください。
- サーバーをブラックリストに追加すると、そのサーバーをブラックリストから削除するまでは、それらのノードにはさらなる変更は適用されません。これには、更新、アップグレード、スケールアップ、スケールダウン、およびノードの置き換えが含まれます。
ブラックリストのクリア
その後のスタック操作のためにブラックリストをクリアするには、DeploymentServerBlacklist
を編集して空の配列を使用します。
parameter_defaults: DeploymentServerBlacklist: []
DeploymentServerBlacklist
パラメーターを単に削除しないでください。パラメーターを削除しただけの場合には、オーバークラウドデプロイメントには、前回保存された値が使用されます。