5.4. マルチサイトレルムの確立

クラスター内のすべてのゲートウェイには設定があります。マルチサイトレルムでは、このようなゲートウェイが異なるゾーングループおよびゾーンに存在する可能性があります。それでも、レルム内で連携する必要があります。マルチサイトレルムでは、すべてのゲートウェイインスタンスは、マスターゾーングループおよびマスターゾーン内のホスト上の ceph-radosgw デーモンから設定を取得する 必要があります

したがって、マルチサイトクラスター作成の最初の手順では、レルム、マスターゾーングループ、およびマスターゾーンを確立します。マルチサイト設定でゲートウェイを設定するには、レルム設定、マスターゾーングループ、およびマスターゾーンを保持する ceph-radosgw インスタンスを選択します。

5.4.1. レルムの作成

レルムには、ゾーングループとゾーンのマルチサイト設定が含まれ、レルム内でグローバルに一意の名前空間を適用するロールも果たします。

マスターゾーングループおよびゾーンで提供できるように識別されたホストでコマンドラインインターフェイスを開いて、マルチサイト設定用に新しいレルムを作成します。次に、以下のコマンドを実行します。

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

以下に例を示します。

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

クラスターに単一のレルムがある場合は、--default フラグを指定します。--default が指定されている場合、radosgw-admin はデフォルトでこのレルムを使用します。--default が指定されていない場合に、ローングループおよびゾーンを追加するには、--rgw-realm フラグまたは --realm-id フラグのいずれかを指定して、ゾーングループおよびゾーンを追加するときにレルムを識別する必要があります。

レルムの作成後、radosgw-admin はレルム設定を返します。以下に例を示します。

{
    "id": "0956b174-fe14-4f97-8b50-bb7ec5e1cf62",
    "name": "movies",
    "current_period": "1950b710-3e63-4c41-a19e-46a715000980",
    "epoch": 1
}
注記

Ceph はレルムに一意の ID を生成します。これにより、必要に応じてレルムの名前を変更することができます。

5.4.2. マスターゾーングループの作成

レルムには、レルムのマスターゾーングループとして機能するゾーングループが少なくとも 1 つ必要です。

マスターゾーングループおよびゾーンで提供するように識別されたホストでコマンドラインインターフェイスを開いて、マルチサイト設定用に新しいマスターゾーングループを作成します。次に、以下のコマンドを実行します。

[root@master-zone]# radosgw-admin zonegroup create --rgw-zonegroup={name} --endpoints={url} [--rgw-realm={realm-name}|--realm-id={realm-id}] --master --default

以下に例を示します。

[root@master-zone]# radosgw-admin zonegroup create --rgw-zonegroup=us --endpoints=http://rgw1:80 --rgw-realm=movies --master --default

レルムにゾーングループが 1 つしかない場合は、--default フラグを指定します。--default が指定されている場合、radosgw-admin はデフォルトでこのゾーングループを使用します。--default が指定されていない場合に、ゾーンを追加または変更するときにゾーングループを識別するには、--rgw-zonegroup フラグまたは --zonegroup-id フラグのいずれかが必要になります。

マスターゾーングループの作成後、radosgw-admin はゾーングループの設定を返します。以下に例を示します。

{
    "id": "f1a233f5-c354-4107-b36c-df66126475a6",
    "name": "us",
    "api_name": "us",
    "is_master": "true",
    "endpoints": [
        "http:\/\/rgw1:80"
    ],
    "hostnames": [],
    "hostnames_s3webzone": [],
    "master_zone": "",
    "zones": [],
    "placement_targets": [],
    "default_placement": "",
    "realm_id": "0956b174-fe14-4f97-8b50-bb7ec5e1cf62"
}

5.4.3. マスターゾーンの作成

重要

ゾーン内の Ceph Object Gateway ノードでゾーンを作成する必要があります。

マスターゾーングループおよびゾーンで提供するように識別されたホストでコマンドラインインターフェイスを開いて、マルチサイト設定用のマスターゾーンを作成します。次に、以下のコマンドを実行します。

[root@master-zone]# radosgw-admin zone create
                            --rgw-zonegroup={zone-group-name} \
                            --rgw-zone={zone-name} \
                            --master --default \
                            --endpoints={http://fqdn:port}[,{http://fqdn:port}]

以下に例を示します。

[root@master-zone]# radosgw-admin zone create --rgw-zonegroup=us \
                            --rgw-zone=us-east \
                            --master --default \
                            --endpoints={http://fqdn:port}[,{http://fqdn:port}]
注記

--access-key および --secret を指定しません。これらの設定は、次のセクションでユーザーが作成されると、ゾーンに追加されます。

5.4.4. デフォルトのゾーングループおよびゾーンの削除

default ゾーンが存在する場合は削除します。最初にデフォルトのゾーングループから削除してください。

重要

次の手順は、まだデータを保存していない、新しくインストールされたシステムを使用したマルチサイト設定を想定しています。default ゾーングループ、ゾーンとそのプールをすでにデータの保存に使用している場合は、削除しないでください。削除すると、データが削除されて回復できなくなります。

default ゾーンおよびゾーングループの古いデータにアクセスするには、radosgw-admin コマンドで --rgw-zone default および --rgw-zonegroup default を使用します。

  1. ゾーングループとゾーンを削除します。

    [root@master-zone]# radosgw-admin zonegroup remove --rgw-zonegroup=default --rgw-zone=default
    [root@master-zone]# radosgw-admin zone delete --rgw-zone=default
    [root@master-zone]# radosgw-admin zonegroup delete --rgw-zonegroup=default

  2. クラスターがマルチサイト設定にある場合は、期間を更新し、コミットします。

    [root@master-zone]# radosgw-admin period update --commit

  3. Ceph Storage Cluster の default プールが存在する場合は削除します。

    [root@master-zone]# ceph osd pool delete default.rgw.control default.rgw.control --yes-i-really-really-mean-it
    [root@master-zone]# ceph osd pool delete default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
    [root@master-zone]# ceph osd pool delete default.rgw.log default.rgw.log --yes-i-really-really-mean-it
    [root@master-zone]# ceph osd pool delete default.rgw.users.uid default.rgw.users.uid --yes-i-really-really-mean-it

    重要

    プールを削除した後、Ceph Object Gateway プロセスを再起動します。

5.4.5. システムユーザーの作成

ceph-radosgw デーモンは、レルムおよび期間情報をプルする前に認証する必要があります。マスターゾーンで、システムユーザーを作成し、デーモン間の認証を容易にします。

[root@master-zone]# radosgw-admin user create --uid="{user-name}" --display-name="{Display Name}" --system

以下に例を示します。

[root@master-zone]# radosgw-admin user create --uid="synchronization-user" --display-name="Synchronization User" --system

セカンダリーゾーンではマスターゾーンでの認証が必要になるため、access_keysecret_key をメモしておきます。

最後に、システムユーザーをマスターゾーンに追加します。

[root@master-zone]# radosgw-admin zone modify --rgw-zone=us-east --access-key={access-key} --secret={secret}
[root@master-zone]# radosgw-admin period update --commit

5.4.6. 期間の更新

マスターゾーン設定の更新後に、期間を更新します。

# radosgw-admin period update --commit
注記

期間を更新するとエポックが変更され、他のゾーンが更新された設定を確実に受信できるようになります。

5.4.7. Ceph 設定ファイルを更新します。

rgw_zone 設定オプションとマスターゾーンの名前をインスタンスエントリーに追加して、マスターゾーンホスト上の Ceph 設定ファイルを更新します。

[client.rgw.{instance-name}]
...
rgw_zone={zone-name}

以下に例を示します。

[client.rgw.rgw1.rgw0]
host = rgw1
rgw frontends = "civetweb port=80"
rgw_zone=us-east

5.4.8. ゲートウェイの開始

Object Gateway ホストで、Ceph Object Gateway サービスを開始して有効にします。

# systemctl start ceph-radosgw@rgw.`hostname -s`.rgw0
# systemctl enable ceph-radosgw@rgw.`hostname -s`.rgw0

サービスがすでに実行中の場合は、サービスを開始して有効にするのではなく、サービスを再起動します。

# systemctl restart ceph-radosgw@rgw.`hostname -s`.rgw0