5.9. マルチサイトコマンドラインの使用

5.9.1. レルム

レルムは、1 つ以上のゾーンを含む 1 つ以上のゾーングループとバケットを含むゾーンを含む 1 つ以上のゾーンで構成されるグローバルに固有の namespace を表します。レルムにより、Ceph Object Gateway は、同じハードウェア上で複数の名前空間とそれらの設定をサポートすることができます。

レルムにはピリオドの概念が含まれます。各期間は、ゾーングループおよびゾーン設定の状態(時間単位)を表します。ゾーングループまたはゾーンを変更するたびに、期間を更新してコミットします。

デフォルトでは、Ceph Object Gateway バージョン 2 は、バージョン 1.3 以前のリリースとの後方互換性を確保するためにレルムを作成しません。ただし、Red Hat では、ベストプラクティスとして、新規クラスター用のレルムを作成することを推奨します。

5.9.1.1. レルムの作成

レルムを作成するには、realm create を実行してレルム名を指定します。レルムがデフォルトの場合は、--default を指定します。

[root@master-zone]# radosgw-admin realm create --rgw-realm={realm-name} [--default]

以下に例を示します。

[root@master-zone]# radosgw-admin realm create --rgw-realm=movies --default

--default を指定すると、--rgw-realm とレルム名が明示的に指定されていない限り、各 radosgw-admin 呼び出しでレルムが暗黙的に呼び出されます。

5.9.1.2. レルムのデフォルトの作成

レルム一覧内のレルムの 1 つがデフォルトのレルムである必要があります。デフォルトレルムは 1 つのみです。レルムが 1 つあり、作成時にデフォルトのレルムとして指定されていない場合は、デフォルトのレルムにします。デフォルトレルムを変更するには、以下を実行します。

[root@master-zone]# radosgw-admin realm default --rgw-realm=movies
注記

レルムがデフォルトの場合、コマンドラインでは --rgw-realm=<realm-name> を引数と想定します。

5.9.1.3. レルムの削除

レルムを削除するには、realm delete を実行し、レルム名を指定します。

[root@master-zone]# radosgw-admin realm delete --rgw-realm={realm-name}

以下に例を示します。

[root@master-zone]# radosgw-admin realm delete --rgw-realm=movies

5.9.1.4. レルムの取得

レルムを取得するには、realm get を実行してレルム名を指定します。

# radosgw-admin realm get --rgw-realm=<name>

以下に例を示します。

# radosgw-admin realm get --rgw-realm=movies [> filename.json]

CLI は JSON オブジェクトをレルムプロパティーでエコーします。

{
    "id": "0a68d52e-a19c-4e8e-b012-a8f831cb3ebc",
    "name": "movies",
    "current_period": "b0c5bbef-4337-4edd-8184-5aeab2ec413b",
    "epoch": 1
}

> と出力ファイル名を使用して、JSON オブジェクトをファイルに出力します。

5.9.1.5. レルムの設定

レルムを設定するには、realm set を実行し、レルム名を指定し、--infile= を入力ファイル名で指定します。

[root@master-zone]# radosgw-admin realm set --rgw-realm=<name> --infile=<infilename>

以下に例を示します。

[root@master-zone]# radosgw-admin realm set --rgw-realm=movies --infile=filename.json

5.9.1.6. レルムの一覧表示

レルムを一覧表示するには、realm list を実行します。

# radosgw-admin realm list

5.9.1.7. レルム期間の一覧表示

レルムの期間を一覧表示するには、realm list-periods を実行します。

# 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}

5.9.1.9. レルムの名前変更

レルムは期間の一部ではありません。そのため、レルムの名前変更はローカルでのみ適用され、realm pull でプルされません。複数のゾーンを持つレルムの名前を変更する場合は、各ゾーンでこのコマンドを実行します。レルムの名前を変更するには、以下を実行します。

# radosgw-admin realm rename --rgw-realm=<current-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=<name> [--rgw-realm=<name>][--master] [--default]
注記

zonegroup modify --rgw-zonegroup=<zonegroup-name> を使用して、既存のゾーングループの設定を変更します。

5.9.2.2. ゾーングループのデフォルトの作成

ゾーングループの一覧に含まれるゾーングループは、デフォルトのゾーングループである必要があります。デフォルトゾーングループは 1 つのみです。ゾーングループが 1 つあり、作成時にデフォルトのゾーングループとして指定されていない場合は、デフォルトのゾーングループにします。デフォルトである zonegroup を変更するには、次のコマンドを実行します。

# radosgw-admin zonegroup default --rgw-zonegroup=comedy
注記

ゾーングループがデフォルトの場合、コマンドラインは --rgw-zonegroup=<zonegroup-name> を引数として想定します。

次に、期間を更新します。

# radosgw-admin period update --commit

5.9.2.3. ゾーングループへのゾーンの追加

ゾーングループにゾーンを追加するには、ゾーンに追加するホストでこの手順を実行する必要があります。ゾーングループにゾーンを追加するには、次のコマンドを実行します。

# radosgw-admin zonegroup add --rgw-zonegroup=<name> --rgw-zone=<name>

次に、期間を更新します。

# radosgw-admin period update --commit

5.9.2.4. ゾーングループからのゾーンの削除

ゾーングループからゾーンを削除するには、次のコマンドを実行します。

# radosgw-admin zonegroup remove --rgw-zonegroup=<name> --rgw-zone=<name>

次に、期間を更新します。

# radosgw-admin period update --commit

5.9.2.5. ゾーングループの名前変更

zonegroup の名前を変更するには、次のコマンドを実行します。

# radosgw-admin zonegroup rename --rgw-zonegroup=<name> --zonegroup-new-name=<name>

次に、期間を更新します。

# radosgw-admin period update --commit

5.9.2.6. ゾーングループの削除

ゾーングループを削除するには、次のコマンドを実行します。

# radosgw-admin zonegroup delete --rgw-zonegroup=<name>

次に、期間を更新します。

# radosgw-admin period update --commit

5.9.2.7. ゾーングループの一覧表示

Ceph クラスターにはゾーングループの一覧が含まれます。ゾーングループを一覧表示するには、次のコマンドを実行します。

# 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=<zonegroup>]

ゾーングループの設定は以下のようになります。

{
    "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": 0,
            "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": 0,
            "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 オブジェクトの作成で構成されており、最低でも必要な設定を指定します。

  1. name: ゾーングループの名前。必須。
  2. api_name: ゾーングループの API 名。任意です。
  3. is_master: ゾーングループがマスターゾーングループであるかどうかを指定します。必須。注記: マスターゾーングループを 1 つだけ指定できます。
  4. endpoints: ゾーングループ内のエンドポイントの一覧。たとえば、複数のドメイン名を使用して、同じゾーングループを参照できます。忘れずに前方スラッシュ (\/) エスケープしてください。各エンドポイントにポート (fqdn:port) を指定することもできます。任意です。
  5. hostnames: ゾーングループのホスト名の一覧。たとえば、複数のドメイン名を使用して、同じゾーングループを参照できます。任意です。rgw dns name 設定は、このリストに自動的に含まれます。この設定を変更したら、ゲートウェイデーモンを再起動する必要があります。
  6. master_zone: ゾーングループのマスターゾーン。任意です。指定されていない場合は、デフォルトゾーンを使用します。注記: ゾーングループごとにマスターゾーンを 1 つだけ指定できます。
  7. zones: ゾーングループ内のゾーンの一覧。各ゾーンには名前(必須)、エンドポイントの一覧(任意)、およびゲートウェイがメタデータおよびデータ操作をログに記録するかどうか(デフォルトでは false)があります。
  8. placement_targets: 配置ターゲットの一覧 (任意)。各配置ターゲットには、配置ターゲットの名前 (必須) とタグのリスト (任意) が含まれているため、タグを持つユーザーのみが配置ターゲットを使用できます (つまり、ユーザー情報のユーザーの placement_tags フィールド)。
  9. default_placement: オブジェクトインデックスおよびオブジェクトデータのデフォルトの配置ターゲット。デフォルトでは default-placement に設定されます。各ユーザーのユーザー情報に、ユーザーごとのデフォルト配置を設定することもできます。

ゾーングループを設定するには、必須フィールドで構成される JSON オブジェクトを作成し、オブジェクトをファイル (たとえば、zonegroup.json) に保存します。次に、次のコマンドを実行します。

# radosgw-admin zonegroup set --infile zonegroup.json

ここで、zonegroup.json は作成した JSON ファイルです。

重要

default ゾーングループの is_master 設定は true です。新しいゾーングループを作成してそれをマスターゾーングループにしたい場合は、default ゾーングループ is_master 設定を false に設定するか、default ゾーングループを削除する必要があります。

最後に、期間を更新します。

# radosgw-admin period update --commit

5.9.2.10. ゾーングループマップの設定

ゾーングループマップの設定は、1 つ以上のゾーングループで構成される JSON オブジェクトの作成と、クラスターの master_zonegroupの 設定で構成されます。ゾーングループマップの各ゾーングループは、キーと値のペアで構成されます。key 設定は、個々のゾーングループ構成の 名前 設定と同等であり、val は、個々のゾーングループ構成で構成される JSON オブジェクトです。

is_mastertrue と同等のゾーングループを 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": 0,
                        "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": 0,
                        "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
    }
}

ゾーングループマップを設定するには、次のコマンドを実行します。

# radosgw-admin zonegroup-map set --infile zonegroupmap.json

ここで、zonegroupmap.json は作成した JSON ファイルです。ゾーングループマップで指定されたゾーンが作成されていることを確認します。最後に、期間を更新します。

# 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 ノードにゾーンを作成する必要があります。

[root@zone] radosgw-admin zone create --rgw-zone=<name> \
                [--zonegroup=<zonegroup-name]\
                [--endpoints=<endpoint:port>[,<endpoint:port>] \
                [--master] [--default] \
                --access-key $SYSTEM_ACCESS_KEY --secret $SYSTEM_SECRET_KEY

次に、期間を更新します。

# radosgw-admin period update --commit

5.9.3.2. ゾーンの削除

ゾーンを削除するには、最初にゾーングループから削除します。

# radosgw-admin zonegroup remove --zonegroup=<name>\
                                 --zone=<name>

次に、期間を更新します。

# radosgw-admin period update --commit

次にゾーンを削除します。

重要

この手順では、ゾーン内のホストで MUST を実行する 必要があります

以下のコマンドを実行します。

[root@zone]# radosgw-admin zone delete --rgw-zone<name>

最後に、期間を更新します。

# radosgw-admin period update --commit
重要

ゾーングループからゾーンを削除せずに、ゾーンを削除しないでください。そうでない場合は、期間の更新に失敗します。

削除したゾーンのプールが他の場所で使用しない場合は、プールを削除することを検討してください。以下の例の <del-zone> を、削除したゾーン名に置き換えます。

重要

Ceph がゾーンプールを削除すると、そのゾーンプール内の全データがリカバリー不可能な状態で削除されます。Ceph クライアントにプールのコンテンツが必要なくなった場合にのみ、ゾーンプールを削除します。

重要

マルチレルムクラスターでは、.rgw.root プールをゾーンプールと共に削除すると、クラスターのレルム情報のすべてが削除されます。.rgw.root プールを削除する前に、.rgw.root に他のアクティブなレルムが含まれていないことを確認します。

# ceph osd pool delete <del-zone>.rgw.control <del-zone>.rgw.control --yes-i-really-really-mean-it
# ceph osd pool delete <del-zone>.rgw.data.root <del-zone>.rgw.data.root --yes-i-really-really-mean-it
# ceph osd pool delete <del-zone>.rgw.log <del-zone>.rgw.log --yes-i-really-really-mean-it
# ceph osd pool delete <del-zone>.rgw.users.uid <del-zone>.rgw.users.uid --yes-i-really-really-mean-it

5.9.3.3. ゾーンの変更

ゾーンを変更するには、ゾーン名と、変更するパラメーターを指定します。

重要

ゾーンは、ゾーン内にある Ceph Object Gateway ノードで変更する必要があります。

[root@zone]# radosgw-admin zone modify [options]

--access-key=<key> --secret/--secret-key=<key> --master --default --endpoints=<list>

次に、期間を更新します。

# radosgw-admin period update --commit

5.9.3.4. ゾーンの一覧

root でクラスター内のゾーンを一覧表示するには、以下を実行します。

# radosgw-admin zone list

5.9.3.5. ゾーンの取得

root でゾーンの設定を取得するには、次のコマンドを実行します。

# radosgw-admin zone get [--rgw-zone=<zone>]

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 プールを指定する必要があります。一貫性を保つために、ゾーン名と同じプール接頭辞を使用することを推奨します。プールの設定に関する詳細は、「 Pools_」を参照してください。

重要

ゾーンは、ゾーン内にある Ceph Object Gateway ノードで設定する必要があります。

ゾーンを設定するには、プールで構成される JSON オブジェクトを作成し、オブジェクトをファイル (例: zone.json) に保存します。続いて以下のコマンドを実行して、{zone-name} をゾーンの名前に置き換えます。

[root@zone]# radosgw-admin zone set --rgw-zone={zone-name} --infile zone.json

ここで、zone.json は作成した JSON ファイルです。

次に、root でピリオドを更新します。

# radosgw-admin period update --commit

5.9.3.7. ゾーンの名前変更

ゾーンの名前を変更するには、ゾーン名と新しいゾーン名を指定します。ゾーン内のホストで以下のコマンドを実行します。

[root@zone]# radosgw-admin zone rename --rgw-zone=<name> --zone-new-name=<name>

次に、期間を更新します。

# radosgw-admin period update --commit