テナントのゾーン間リソース管理とは、リソースプールのゾーン分布範囲を調整することで、テナント内の各データのレプリカ数を変更し、結果としてテナントのデータ災害復旧能力を変化させるリソース管理手法です。
リソースプールの 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つのゾーンにおける物理マシンのスペックには大きな差異がある可能性があるため、3つのゾーンで同一のリソース規格 uc0 を使用すると、各ゾーン内の物理マシンのリソースを十分に活用できません。リソースプールを分割することで、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は等しくなければなりません。統合されるリソースプールのリソース設定は同一である必要があります。