5.9. マルチサイトの Ceph Object Gateway コマンドラインの使用
ストレージ管理者は、マルチサイト環境での Ceph Object Gateway の使用方法を理解することができます。マルチサイト環境で、レルム、ゾーングループ、およびゾーンをより適切に管理する方法を説明します。
前提条件
- 実行中の Red Hat Ceph Storage。
- Ceph Object Gateway ソフトウェアのデプロイメント。
- Ceph Object Gateway ノードまたはコンテナーへのアクセス。
5.9.1. レルム
レルムは、1 つ以上のゾーンが含まれる 1 つ以上のゾーングループと、バケットが含まれるゾーンで設定されるグローバル固有の名前空間を表します。この名前空間にはオブジェクトが含まれます。レルムにより、Ceph Object Gateway は同じハードウェアで複数の名前空間および設定をサポートできるようになります。
レルムには期間の概念が含まれます。それぞれの期間は、ゾーングループとゾーン設定の状態を時間で表しています。ゾーングループまたはゾーンに変更を加えるたびに、期間を更新してコミットします。
Red Hat は新規クラスターのレルムを作成することを推奨します。
5.9.1.1. レルムの作成
レルムを作成するには、realm create
コマンドを発行してレルム名を指定します。レルムがデフォルトの場合は、--default
を指定します。
構文
radosgw-admin realm create --rgw-realm=REALM_NAME [--default]
例
[ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
--default
を指定すると、--rgw-realm
とレルム名が明示的に指定されていない限り、各 radosgw-admin
呼び出しでレルムが暗黙的に呼び出されます。
5.9.1.2. レルムのデフォルトの設定
レルムリストにある 1 つのレルムはデフォルトのレルムである必要があります。デフォルトレルムは 1 つのみです。レルムが 1 つだけあり、そのレルムが作成時にデフォルトレルムとして指定されていない場合は、デフォルトのレルムにします。または、デフォルトであるレルムを変更するには、以下のコマンドを実行します。
[ceph: root@host01 /]# radosgw-admin realm default --rgw-realm=test_realm
レルムがデフォルトの場合、コマンドラインでは --rgw-realm=REALM_NAME
を引数と想定します。
5.9.1.3. レルムの削除
レルムを削除するには、realm delete
コマンドを実行して、レルム名を指定します。
構文
radosgw-admin realm delete --rgw-realm=REALM_NAME
例
[ceph: root@host01 /]# radosgw-admin realm delete --rgw-realm=test_realm
5.9.1.4. レルムの取得
レルムを取得するには、realm get
コマンドを実行してレルム名を指定します。
構文
radosgw-admin realm get --rgw-realm=REALM_NAME
例
[ceph: root@host01 /]# radosgw-admin realm get --rgw-realm=test_realm >filename.json
CLI は、レルムプロパティーを使用して JSON オブジェクトを echo します。
{ "id": "0a68d52e-a19c-4e8e-b012-a8f831cb3ebc", "name": "test_realm", "current_period": "b0c5bbef-4337-4edd-8184-5aeab2ec413b", "epoch": 1 }
>
と出力ファイル名を使用して、JSON オブジェクトをファイルに出力します。
5.9.1.5. レルムの設定
レルムを設定するには、realm set
コマンドを実行し、レルム名を指定し、--infile=
を入力ファイル名で指定します。
構文
radosgw-admin realm set --rgw-realm=REALM_NAME --infile=IN_FILENAME
例
[ceph: root@host01 /]# radosgw-admin realm set --rgw-realm=test_realm --infile=filename.json
5.9.1.6. レルムのリスト表示
レルムをリスト表示するには、realm list
コマンドを実行します。
例
[ceph: root@host01 /]# radosgw-admin realm list
5.9.1.7. レルム期間のリスト表示
レルムの期間をリスト表示するには、realm list-periods
コマンドを実行します。
例
[ceph: root@host01 /]# radosgw-admin realm list-periods
5.9.1.8. レルムのプル
マスターゾーングループとマスターゾーンを含むノードからセカンダリーゾーングループまたはゾーンを含むノードにレルムをプルするには、レルム設定を受け取るノードで realm pull
コマンドを実行します。
構文
radosgw-admin realm pull --url=URL_TO_MASTER_ZONE_GATEWAY--access-key=ACCESS_KEY --secret=SECRET_KEY
5.9.1.9. レルムの名前変更
レルムは期間の一部ではありません。そのため、レルムの名前変更はローカルでのみ適用され、realm pull
でプルされません。複数のゾーンを持つレルムの名前を変更する場合は、各ゾーンでこのコマンドを実行します。レルムの名前を変更するには、以下のコマンドを実行します。
構文
radosgw-admin realm rename --rgw-realm=REALM_NAME --realm-new-name=NEW_REALM_NAME
realm set
を使用して name
パラメーターを変更しないでください。これにより、内部名のみが変更されます。--rgw-realm
を指定すると、古いレルム名が使用されます。
5.9.2. ゾーングループ
Ceph Object Gateway は、ゾーングループの概念を使用したマルチサイトデプロイメントおよびグローバル名前空間をサポートします。以前はリージョンと呼ばれていたゾーングループは、1 つ以上のゾーン内の 1 つ以上の Ceph Object Gateway インスタンスの地理的な場所を定義します。
ゾーングループの設定は、設定のすべてが Ceph 設定ファイルになるわけではないため、一般的な設定手順とは異なります。ゾーングループのリストを表示し、ゾーングループ設定を取得し、ゾーングループ設定を設定できます。
期間を更新するステップはクラスター全体に変更を伝播するため、radosgw-admin zonegroup
操作はレルム内の任意のノードで実行できます。ただし、radosgw-admin zone
操作は、ゾーン内のホストで実行する 必要があります。
5.9.2.1. ゾーングループの作成
ゾーングループの作成は、ゾーングループ名の指定から始まります。ゾーンの作成では、--rgw-realm=REALM_NAME
が指定されていない限り、デフォルトのレルムで実行されていることを前提としています。ゾーングループがデフォルトのゾーングループの場合は、--default
フラグを指定します。ゾーングループがマスターゾーングループの場合は、--master
フラグを指定します。
構文
radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME [--rgw-realm=REALM_NAME] [--master] [--default]
zonegroup modify --rgw-zonegroup=ZONE_GROUP_NAME
を使用して、既存のゾーングループの設定を変更します。
5.9.2.2. ゾーングループをデフォルトにする
ゾーングループリスト内の 1 つのゾーングループは、デフォルトのゾーングループである必要があります。デフォルトのゾーングループは 1 つのみです。ゾーングループが 1 つだけあり、そのゾーンは作成時にデフォルトのゾーングループとして指定されていない場合は、デフォルトのゾーングループにします。または、デフォルトであるゾーングループを変更するには、以下のコマンドを実行します。
例
[ceph: root@host01 /]# radosgw-admin zonegroup default --rgw-zonegroup=us
ゾーングループがデフォルトの場合、コマンドラインは --rgw-zonegroup=ZONE_GROUP_NAME
を引数として想定します。
次に、期間を更新します。
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.2.3. ゾーングループへのゾーンの追加
ゾーングループにゾーンを追加するには、ゾーンに追加するホストでこのコマンドを実行する必要があります。ゾーングループにゾーンを追加するには、次のコマンドを実行します。
構文
radosgw-admin zonegroup add --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
次に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.2.4. ゾーングループからのゾーンの削除
ゾーングループからゾーンを削除するには、次のコマンドを実行します。
構文
radosgw-admin zonegroup remove --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
次に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.2.5. ゾーングループの名前変更
ゾーングループの名前を変更するには、次のコマンドを実行します。
構文
radosgw-admin zonegroup rename --rgw-zonegroup=ZONE_GROUP_NAME --zonegroup-new-name=NEW_ZONE_GROUP_NAME
次に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.2.6. ゾーングループの削除
ゾーングループを削除するには、次のコマンドを実行します。
構文
radosgw-admin zonegroup delete --rgw-zonegroup=ZONE_GROUP_NAME
次に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.2.7. ゾーングループのリスト表示
Ceph クラスターには、ゾーングループのリストが含まれます。ゾーングループをリスト表示するには、以下のコマンドを実行します。
[ceph: root@host01 /]# radosgw-admin zonegroup list
radosgw-admin
は、JSON 形式のゾーングループのリストを返します。
{ "default_info": "90b28698-e7c3-462c-a42d-4aa780d24eda", "zonegroups": [ "us" ] }
5.9.2.8. ゾーングループの取得
ゾーングループの設定を表示するには、次のコマンドを実行します。
構文
radosgw-admin zonegroup get [--rgw-zonegroup=ZONE_GROUP_NAME]
ゾーングループの設定は以下のようになります。
{ "id": "90b28698-e7c3-462c-a42d-4aa780d24eda", "name": "us", "api_name": "us", "is_master": "true", "endpoints": [ "http:\/\/rgw1:80" ], "hostnames": [], "hostnames_s3website": [], "master_zone": "9248cab2-afe7-43d8-a661-a40bf316665e", "zones": [ { "id": "9248cab2-afe7-43d8-a661-a40bf316665e", "name": "us-east", "endpoints": [ "http:\/\/rgw1" ], "log_meta": "true", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" }, { "id": "d1024e59-7d28-49d1-8222-af101965a939", "name": "us-west", "endpoints": [ "http:\/\/rgw2:80" ], "log_meta": "false", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" } ], "placement_targets": [ { "name": "default-placement", "tags": [] } ], "default_placement": "default-placement", "realm_id": "ae031368-8715-4e27-9a99-0c9468852cfe" }
5.9.2.9. ゾーングループの設定
ゾーングループの定義は、少なくとも必要な設定を指定して JSON オブジェクトの作成で設定されます。
-
name
: ゾーングループの名前。必須です。 -
api_name
: ゾーングループの API 名。任意です。 is_master
: ゾーングループがマスターゾーングループであるかどうかを指定します。必須です。注記: マスターゾーングループを 1 つだけ指定できます。
-
endpoints
: ゾーングループ内のエンドポイントのリスト。たとえば、複数のドメイン名を使用して、同じゾーングループを参照できます。忘れずに前方スラッシュ (\/
) エスケープしてください。各エンドポイントにポート (fqdn:port
) を指定することもできます。任意です。 -
hostnames
: ゾーングループのホスト名のリスト。たとえば、複数のドメイン名を使用して、同じゾーングループを参照できます。任意です。rgw dns name
設定は、このリストに自動的に含まれます。この設定を変更したら、ゲートウェイデーモンを再起動する必要があります。 master_zone
: ゾーングループのマスターゾーン。任意です。指定がない場合は、デフォルトゾーンを使用します。注記ゾーングループごとにマスターゾーンを 1 つだけ指定できます。
-
zones
: ゾーングループ内のゾーンのリスト。各ゾーンには、名前 (必須)、エンドポイントのリスト (任意)、およびゲートウェイがメタデータおよびデータ操作をログに記録するかどうか (デフォルトでは false) があります。 -
placement_targets
: 配置ターゲットのリスト (任意)。各配置ターゲットには、配置ターゲットの名前 (必須) とタグのリスト (任意) が含まれているため、タグを持つユーザーのみが配置ターゲットを使用できます (つまり、ユーザー情報のユーザーのplacement_tags
フィールド)。 -
default_placement
: オブジェクトインデックスおよびオブジェクトデータのデフォルトの配置ターゲット。デフォルトではdefault-placement
に設定されます。また、ユーザーごとのデフォルトの配置を、ユーザー情報で設定することもできます。
ゾーングループを設定するには、必須フィールドで設定される JSON オブジェクトを作成し、オブジェクトをファイル (たとえば、zonegroup.json
) に保存します。次に、次のコマンドを実行します。
例
[ceph: root@host01 /]# radosgw-admin zonegroup set --infile zonegroup.json
ここで、zonegroup.json
は作成した JSON ファイルです。
default
ゾーングループの is_master
設定は true
です。新しいゾーングループを作成してそれをマスターゾーングループにしたい場合は、default
ゾーングループ is_master
設定を false
に設定するか、default
ゾーングループを削除する必要があります。
最後に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.2.10. ゾーングループマップの設定
ゾーングループマップの設定は、1 つ以上のゾーングループで設定される JSON オブジェクトの作成と、クラスターの master_zonegroup の
設定で設定されます。ゾーングループマップの各ゾーングループは、キーと値のペアで設定されます。key
設定は、個々のゾーングループ設定の 名前
設定と同等であり、val
は、個々のゾーングループ設定で設定される JSON オブジェクトです。
is_master
が true
と同等のゾーングループを 1 つだけ持つ可能性があり、ゾーングループマップの最後に master_zonegroup
として指定する必要があります。以下の JSON オブジェクトは、デフォルトゾーングループマップの例です。
{ "zonegroups": [ { "key": "90b28698-e7c3-462c-a42d-4aa780d24eda", "val": { "id": "90b28698-e7c3-462c-a42d-4aa780d24eda", "name": "us", "api_name": "us", "is_master": "true", "endpoints": [ "http:\/\/rgw1:80" ], "hostnames": [], "hostnames_s3website": [], "master_zone": "9248cab2-afe7-43d8-a661-a40bf316665e", "zones": [ { "id": "9248cab2-afe7-43d8-a661-a40bf316665e", "name": "us-east", "endpoints": [ "http:\/\/rgw1" ], "log_meta": "true", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" }, { "id": "d1024e59-7d28-49d1-8222-af101965a939", "name": "us-west", "endpoints": [ "http:\/\/rgw2:80" ], "log_meta": "false", "log_data": "true", "bucket_index_max_shards": 11, "read_only": "false" } ], "placement_targets": [ { "name": "default-placement", "tags": [] } ], "default_placement": "default-placement", "realm_id": "ae031368-8715-4e27-9a99-0c9468852cfe" } } ], "master_zonegroup": "90b28698-e7c3-462c-a42d-4aa780d24eda", "bucket_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1 }, "user_quota": { "enabled": false, "max_size_kb": -1, "max_objects": -1 } }
ゾーングループマップを設定するには、次のコマンドを実行します。
例
[ceph: root@host01 /]# radosgw-admin zonegroup-map set --infile zonegroupmap.json
ここで、zonegroupmap.json
は作成した JSON ファイルです。ゾーングループマップで指定したゾーンが作成されていることを確認します。最後に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.3. ゾーン
Ceph Object Gateway はゾーンの概念をサポートします。ゾーンは、1 つ以上の Ceph Object Gateway インスタンスで設定される論理グループを定義します。
ゾーンの設定は、Ceph 設定ファイル内で終了するすべての設定ではないため、一般的な設定手順とは異なります。ゾーンをリスト表示して、ゾーン設定を取得し、ゾーン設定を設定できます。
radosgw-admin zone
操作はすべて、ゾーン内で動作するまたはこれから動作するホストで発行する 必要があります。
5.9.3.1. ゾーンの作成
ゾーンを作成するには、ゾーン名を指定します。マスターゾーンの場合は、--master
オプションを指定します。ゾーングループ内の 1 つのゾーンのみがマスターゾーンになることができます。ゾーングループにゾーンを追加するには、--rgw-zonegroup
オプションをゾーングループ名で指定します。
ゾーン内の Ceph Object Gateway ノードでゾーンを作成する必要があります。
構文
radosgw-admin zone create --rgw-zone=ZONE_NAME \ [--zonegroup=ZONE_GROUP_NAME]\ [--endpoints=ENDPOINT_PORT [,<endpoint:port>] \ [--master] [--default] \ --access-key ACCESS_KEY --secret SECRET_KEY
次に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.3.2. ゾーンの削除
ゾーンを削除するには、最初にゾーングループからこれを削除します。
手順
ゾーングループからゾーンを削除します。
構文
radosgw-admin zonegroup remove --rgw-zonegroup=ZONE_GROUP_NAME\ --rgw-zone=ZONE_NAME
期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
ゾーンを削除します。
重要この手順は、ゾーン内のホストで必ず使用する必要があります。
構文
radosgw-admin zone delete --rgw-zone=ZONE_NAME
期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
重要ゾーングループから先にゾーンを削除せずに、ゾーンを削除しないでください。それ以外の場合には、期間の更新に失敗します。
削除したゾーンのプールが他に使用されていない場合は、プールを削除することを検討してください。以下の例の DELETED_ZONE_NAME
を、削除したゾーン名に置き換えます。
Ceph がゾーンプールを削除すると、それによってリカバリー不可能な方法でその中のデータが削除されます。Ceph クライアントにプールの内容が必要なくなった場合にのみ、ゾーンプールを削除します。
マルチレルムクラスターでは、.rgw.root
プールをゾーンプールと共に削除すると、クラスターのレルム情報のすべてが削除されます。.rgw.root
プールを削除する前に、.rgw.root
に他のアクティブなレルムが含まれていないことを確認します。
構文
ceph osd pool delete DELETED_ZONE_NAME.rgw.control DELETED_ZONE_NAME.rgw.control --yes-i-really-really-mean-it ceph osd pool delete DELETED_ZONE_NAME.rgw.data.root DELETED_ZONE_NAME.rgw.data.root --yes-i-really-really-mean-it ceph osd pool delete DELETED_ZONE_NAME.rgw.log DELETED_ZONE_NAME.rgw.log --yes-i-really-really-mean-it ceph osd pool delete DELETED_ZONE_NAME.rgw.users.uid DELETED_ZONE_NAME.rgw.users.uid --yes-i-really-really-mean-it
プールの削除後に、RGW プロセスを再起動します。
5.9.3.3. ゾーンの変更
ゾーンを変更するには、ゾーン名と、変更するパラメーターを指定します。
ゾーンは、ゾーン内にある Ceph Object Gateway ノードで変更する必要があります。
構文
radosgw-admin zone modify [options]--access-key=<key>
--secret/--secret-key=<key>
--master
--default
--endpoints=<list>
次に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.3.4. ゾーンのリスト
root
でクラスター内のゾーンをリスト表示するには、以下のコマンドを実行します。
例
[ceph: root@host01 /]# radosgw-admin zone list
5.9.3.5. ゾーンの取得
root
でゾーンの設定を取得するには、次のコマンドを実行します。
構文
radosgw-admin zone get [--rgw-zone=ZONE_NAME]
default
ゾーンは以下のようになります。
{ "domain_root": ".rgw", "control_pool": ".rgw.control", "gc_pool": ".rgw.gc", "log_pool": ".log", "intent_log_pool": ".intent-log", "usage_log_pool": ".usage", "user_keys_pool": ".users", "user_email_pool": ".users.email", "user_swift_pool": ".users.swift", "user_uid_pool": ".users.uid", "system_key": { "access_key": "", "secret_key": ""}, "placement_pools": [ { "key": "default-placement", "val": { "index_pool": ".rgw.buckets.index", "data_pool": ".rgw.buckets"} } ] }
5.9.3.6. ゾーンの設定
ゾーンの設定には、一連の Ceph Object Gateway プールを指定する必要があります。一貫性を保つために、ゾーン名と同じプールの接頭辞を使用することが推奨されます。プールの設定に関する詳細は、Red Hat Ceph Storage Storage Strategies Guideの Pools の章を参照してください。
ゾーン内の Ceph Object Gateway ノードでゾーンを設定する必要があります。
ゾーンを設定するには、プールで設定される JSON オブジェクトを作成し、オブジェクトをファイル (例: zone.json
) に保存します。続いて以下のコマンドを実行して、ZONE_NAME
をゾーンの名前に置き換えます。
例
[ceph: root@host01 /]# radosgw-admin zone set --rgw-zone=test-zone --infile zone.json
ここで、zone.json
は作成した JSON ファイルです。
次に、root
でピリオドを更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit
5.9.3.7. ゾーンの名前変更
ゾーンの名前を変更するには、ゾーン名および新しいゾーン名を指定します。ゾーン内のホストで以下のコマンドを発行します。
構文
radosgw-admin zone rename --rgw-zone=ZONE_NAME --zone-new-name=NEW_ZONE_NAME
次に、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit