テナントのゾーン間リソース管理とは、リソースプールのゾーン配置範囲を調整することで、テナントの各データのレプリカ数を変更し、結果としてテナントのデータ災害復旧能力を変えるリソース管理手法です。
リソースプールの ZONE_LIST では、以下の操作がサポートされています:
ZONE_LISTの変更リソースプールの分割
リソースプールの統合
ZONE_LISTの変更
リソースプールのZONE_LISTを調整することで、ゾーン単位でのリソースプールの利用範囲を変更し、結果としてテナントデータのサービス範囲をゾーン単位で調整できます。
リソースプールZONE_LISTを調整する例文は以下のとおりです:
obclient> CREATE RESOURCE POOL pool1 UNIT_NUM=3, UNIT='unit_config', ZONE_LIST=('z1','z2','z3');
obclient> CREATE RESOURCE POOL pool2 UNIT_NUM=3, UNIT='unit_config', ZONE_LIST=('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3','z4');
obclient> ALTER RESOURCE POOL pool2 ZONE_LIST=('z1','z2');
ZONE_LISTの変更は、ゾーン単位での利用範囲を拡大する場合と縮小する場合の2種類に分けられます。例文ALTER RESOURCE POOL pool1 ZONE_LIST=('z1','z2','z3','z4');はゾーン単位での利用範囲を拡大するもので、例文ALTER RESOURCE POOL pool2 ZONE_LIST=('z1','z2');はゾーン単位での利用範囲を縮小するものです。
Zone次元の利用範囲を拡大する
Zone次元の利用範囲を拡大する方法は、通常、以下の2つのシナリオで使用されます:
シナリオ1:テナントの可用性を向上させるために、テナントのレプリカ数を増やすアップグレードを行う場合。
シナリオ2:データをあるデータセンター(Zone)から別のデータセンター(Zone)に移動する際、新しいデータセンターでデータを補完する場合。
以下の例を通じて、これら2つのユースケースを説明します:
シナリオ1:レプリカ数を増やす例
テナント
ttのレプリカ数を3から5に増やし、データ範囲を'z1', 'z2', 'z3'から'z1','z2','z3','z4','z5'に拡大して、テナントの可用性を向上させる必要があります。obclient>CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3'); obclient>CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); obclient>ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); obclient>ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//z4にテナントttのデータを追加 obclient>ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4','z5'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4,F@z5";//z5にテナントttのデータを追加シナリオ2:新しいデータセンターでデータを補完する
新しいデータセンターでのデータ補完は、データセンター間でのデータ移動のサブ操作です。テナントがデータセンター
z1のデータをz4に移動したいと仮定すると、新しいデータセンターでのデータ補完の具体的な操作は以下のとおりです:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3'); obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); // 以下は新しいデータセンターでのデータ補完のサブ操作です obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//z4にテナントttのデータを追加 // 次に、古いデータセンターからデータを削除するサブ操作については、「Zone次元の利用範囲を縮小する」を参照してください。以上の操作により、テナントはまず
z4データセンターにデータを追加し、データセンター間でのデータ移動プロセスにおいて、新しいデータセンターでのデータ補完操作を完了します。
Zone次元の使用範囲を縮小する場合
Zone次元の使用範囲を縮小する方法は、通常、以下の2つのシナリオで使用されます:
シナリオ1:テナントのレプリカ数を削減し、テナントのストレージリソース使用量を抑える。
シナリオ2:データをあるデータセンター(Zone)から別のデータセンター(Zone)に移動する際に、古いデータセンターのデータを削除する。
以下では、例を用いてこれら2つの使用シナリオを説明します:
シナリオ1:レプリカ数削減の例
テナントttのレプリカ数を5から3に削減し、データ範囲を
'z1','z2','z3','z4','z5'から'z1','z2','z3'に縮小して、テナントのストレージリソース使用量を削減します。obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1','z2','z3','z4','z5'); obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//z5上のテナントttのデータを削除 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); // リソースプールからz5を削除 obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3";//z4上のテナントttのデータを削除 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3'); // リソースプールからz4を削除シナリオ2:古いデータセンターからデータを削除する例
古いデータセンター内のデータ削除は、データセンター間でのデータ移動におけるもう一つのサブ操作です。テナントがデータセンター
z1のデータをz4に移動したい場合、古いデータセンターでのデータ削除の具体的な操作は以下のとおりです:obclient> CREATE RESOURCE POOL r_p0 UNIT 'uc1', UNIT_NUM 1, ZONE_LIST ('z1', 'z2', 'z3'); obclient> CREATE TENANT tt RESOURCE_POOL_LIST = ('r_p0'); // 以下は新しいデータセンターでのデータ補完サブ操作です obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z1','z2','z3','z4'); obclient> ALTER TENANT tt locality="F@z1,F@z2,F@z3,F@z4";//z4上のテナントttにデータを追加 // 以下は古いデータセンターでのデータ削除サブ操作です obclient> ALTER TENANT tt locality="F@z2,F@z3,F@z4";//まずz1上のテナントttのデータを削除 obclient> ALTER RESOURCE POOL r_p0 ZONE_LIST=('z2','z3','z4');上記の操作により、テナントはまず
z4データセンターにデータを追加し、次にz1データセンターでデータを削除することで、テナントデータをz1からz4へ移動させることができます。
リソースプールの分割
リソースプールの分割操作により、1つのリソースプールを複数のリソースプールに分割できます。リソースプールの分割操作の基本構文と例は以下のとおりです:
obclient> CREATE RESOURCE POOL pool1 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool1 SPLIT INTO ('pool10','pool11','pool12') ON ('z1','z2','z3');
obclient> ALTER RESOURCE POOL pool10 UNIT='uc1';
obclient> ALTER RESOURCE POOL pool11 UNIT='uc2';
obclient> ALTER RESOURCE POOL pool12 UNIT='uc3';
リソースプールの分割操作は、主に以下のシナリオで利用されます。リソースプール pool1 の現在の使用範囲は z1、z2、z3 であり、すべてのゾーンのリソース構成仕様は uc0 です。しかし、z1、z2、z3 の3つのゾーンにおける物理マシンのスペックには大きな差異がある可能性があります。同じリソース構成仕様 uc0 を3つのゾーンで使用すると、各ゾーン内の物理マシンのリソースを十分に活用できません。リソースプールを分割することで、1つのマルチゾーンリソースプールを複数のシングルゾーンリソースプールに分割し、各シングルゾーンリソースプールに個別のリソース構成仕様を設定できます。
この例では、'z1','z2','z3' の範囲をカバーするマルチゾーンリソースプール pool1 を、3つのシングルゾーンリソースプール pool10 (ZONE_LIST が z1 で、pool1 が以前 z1 で使用していたリソースユニットを継承)、pool11 (ZONE_LIST が z2 で、pool1 が以前 z2 で使用していたリソースユニットを継承)、pool12 (ZONE_LIST が z3 で、pool1 が以前 z3 で使用していたリソースユニットを継承) に分割します。分割完了後、pool10、pool11、pool12 のデフォルトのリソース構成は引き続き pool1 のリソース構成 uc0 です。ユーザーは各ゾーンのリソース状況に応じて、新しい各リソースプールのリソース構成を調整できます。
リソースプールの統合
リソースプールの統合操作は、複数のリソースプールを1つのリソースプールに統合する操作です。基本的な構文と例は以下の通りです:
obclient> CREATE RESOURCE POOL pool1 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z1');
obclient> CREATE RESOURCE POOL pool2 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z2');
obclient> CREATE RESOURCE POOL pool3 UNIT='uc0', UNIT_NUM=1, ZONE_LIST=('z3');
obclient> ALTER RESOURCE POOL MERGE ('pool1','pool2','pool3') INTO ('pool0');
リソースプールの統合は、リソースプールの分割の逆操作です。この操作は主に以下のシナリオで利用されます:リソースプール pool1 の現在の使用範囲は z1、リソース設定は uc0 です。リソースプール pool2 の現在の使用範囲は z2、リソース設定は uc0 です。リソースプール pool3 の現在の使用範囲は z3、リソース設定は uc0 です。pool1、pool2、pool3 の3つのリソースプールはすべて同じリソース設定を使用しているため、これらを1つのリソースプールに統合することで、リソースプールの管理および運用コストを削減できます。
この例では、3つの単一ゾーンリソースプール pool1、pool2、pool3 を1つの複数ゾーンリソースプール pool0 に統合します。
リソースプールの統合には、以下の2つの制限があります:
統合されるリソースプールの
UNIT_NUMは同じである必要があります。統合されるリソースプールのリソース設定は同一である必要があります。