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
を使用します。
ゾーングループとゾーンを削除します。
例
[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
クラスターがマルチサイト設定にある場合は、期間を更新し、コミットします。
例
[root@master-zone]# radosgw-admin period update --commit
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_key
と secret_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