5.7. マルチサイト Ceph Object Gateway の設定
システム管理者は、障害復旧目的で、マルチサイト Ceph Object Gateways をクラスター間でデータのミラーリングを実行するように設定できます。
1 つ以上の RGW レルムを使用してマルチサイトを設定できます。レルムは、その内部の RGW を独立した状態にし、レルム外の RGW から分離できるようにします。これにより、あるレルムの RGW に書き込まれたデータは、別のレルムの RGW からはアクセスできません。
Ceph-Ansible は、ゲートウェイがシングルサイト設定で開始した後に、マルチサイトセットアップにゲートウェイを再設定することはできません。この設定は手動でデプロイできます。レッドハットサポート にお問い合わせください。
Red Hat Ceph Storage 4.1 から、group_vars/all.yml
ファイルで rgw_multisite_endpoints_list
の値を設定する必要はありません。
詳細については、Red Hat Ceph Storage Object Gateway の設定および管理ガイド の マルチサイト セクションを参照してください。
5.7.1. 前提条件
- 2 つの Red Hat Ceph Storage クラスター
- Ceph Object Gateway ノード上で、Red Hat Ceph Storage インストールガイドの Red Hat Ceph Storage のインストール要件 セクションに記載のタスクを実行します。
- 各 Object Gateway ノードについて、Red Hat Ceph Storage インストールガイドの Ceph Object Gateway のインストール セクションに記載のステップ 1 から 6 を実施します。
5.7.2. 1 つのレルムのあるマルチサイト Ceph Object Gateway の設定
Ceph-Ansible は、複数の Ceph Object Gateway インスタンスが含まれる、複数のストレージクラスター全体で 1 つのレルムのデータをミラーリングするように Ceph Object Gateway を設定します。
Ceph-Ansible は、ゲートウェイがシングルサイト設定で開始した後に、マルチサイトセットアップにゲートウェイを再設定することはできません。この設定は手動でデプロイできます。レッドハットサポート にお問い合わせください。
前提条件
- Red Hat Ceph Storage クラスターを実行する 2 つ。
- Ceph Object Gateway ノード上で、Red Hat Ceph Storage インストールガイドの Red Hat Ceph Storage のインストール要件 セクションに記載のタスクを実行します。
- 各 Object Gateway ノードについて、Red Hat Ceph Storage インストールガイドの Ceph Object Gateway のインストール セクションに記載のステップ 1 から 6 を実施します。
手順
システムキーを生成し、
multi-site-keys.txt
ファイルで出力を取得します。[root@ansible ~]# echo system_access_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) > multi-site-keys.txt [root@ansible ~]# echo system_secret_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) >> multi-site-keys.txt
プライマリーストレージクラスター
Ceph-Ansible 設定ディレクトリーに移動します。
[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。rgw_multisite
行のコメントを解除して、true
に設定します。rgw_multisite_proto
パラメーターのコメントを解除します。rgw_multisite: true rgw_multisite_proto: "http"
usr/share/ceph-ansible
にhost_vars
ディレクトリーを作成します。[root@ansible ceph-ansible]# mkdir host_vars
プライマリーストレージクラスター上の各 Object Gateway ノードの
host_vars
にファイルを作成します。ファイル名は、Ansible インベントリーファイルで使用される名前と同じである必要があります。たとえば、Object Gateway ノードの名前がrgw-primary
の場合は、host_vars/rgw-primary
ファイルを作成します。構文
touch host_vars/NODE_NAME
例
[root@ansible ceph-ansible]# touch host_vars/rgw-primary
注記マルチサイト設定で使用するクラスター内に複数の Ceph Object Gateway ノードがある場合は、ノードごとにファイルを作成します。
ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。それぞれ、ZONE_NAME、ZONE_GROUP_NAME、ZONE_USER_NAME、ZONE_DISPLAY_NAME、および REALM_NAME の更新と共に以下の設定を行います。ACCESS_KEY および SECRET_KEY の
multi-site-keys.txt
ファイルに保存されるランダムな文字列を使用します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: ZONE_NAME_1 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: RGW_PRIMARY_PORT_NUMBER_1
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: paris rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080
オプション: 複数のインスタンスを作成する場合は、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。
rgw_instances
の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1 のmulti-site-keys-realm-1.txt
ファイルに保存されるランダムな文字列を使用します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME_1' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: ZONE_NAME_1 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 - instance_name: 'INSTANCE_NAME_2' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: ZONE_NAME_1 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_2
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: paris rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 - instance_name: 'rgw1' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: paris rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8081
セカンダリーストレージクラスター
Ceph-Ansible 設定ディレクトリーに移動します。
[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。rgw_multisite
行のコメントを解除して、true
に設定します。rgw_multisite_proto
パラメーターのコメントを解除します。rgw_multisite: true rgw_multisite_proto: "http"
usr/share/ceph-ansible
にhost_vars
ディレクトリーを作成します。[root@ansible ceph-ansible]# mkdir host_vars
セカンダリーストレージクラスター上の各 Object Gateway ノードの
host_vars
にファイルを作成します。ファイル名は、Ansible インベントリーファイルで使用される名前と同じである必要があります。たとえば、Object Gateway のノード名がrgw-secondary
の場合は、host_vars/rgw-secondary
というファイルを作成します。構文
touch host_vars/NODE_NAME
例
[root@ansible ceph-ansible]# touch host_vars/rgw-secondary
注記マルチサイト設定で使用するクラスター内に複数の Ceph Object Gateway ノードがある場合は、ノードごとにファイルを作成します。
以下の設定を設定します。ZONE_USER_NAME、ZONE_DISPLAY_NAME、ACCESS_KEY、SECRET_KEY、REALM_NAME、および ZONE_GROUP_NAME の最初のクラスターで使用するものと同じ値を指定します。ZONE_NAME には、プライマリーストレージクラスターとは異なる値を使用します。マスターゾーンの Ceph Object Gateway ノードに MASTER_RGW_NODE_NAME を設定します。なお、プライマリーストレージクラスターと比較して、
rgw_zonemaster
、rgw_zonesecondary
、rgw_zonegroupmaster
の設定が逆にることに注意してください。構文
rgw_instances: - instance_name: 'INSTANCE_NAME_1' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: ZONE_NAME_2 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 endpoint: RGW_PRIMARY_HOSTNAME_ENDPOINT:RGW_PRIMARY_PORT_NUMBER_1
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: lyon rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 endpoint: http://rgw-primary:8081
オプション: 複数のインスタンスを作成する場合は、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。
rgw_instances
の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1 のmulti-site-keys-realm-1.txt
ファイルに保存されるランダムな文字列を使用します。RGW_PRIMARY_HOSTNAME をプライマリーストレージクラスターの Object Gateway ノードに設定します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME_1' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: ZONE_NAME_2 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 endpoint: RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 - instance_name: '_INSTANCE_NAME_2_' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: ZONE_NAME_2 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 endpoint: RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_2
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: lyon rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 endpoint: http://rgw-primary:8080 - instance_name: 'rgw1' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: lyon rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8081 endpoint: http://rgw-primary:8081
両方のサイトで以下の手順を実行します。
プライマリーストレージクラスターで Ansible Playbook を実行します。
ベアメタル デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site.yml -i hosts
コンテナー デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site-container.yml -i hosts
セカンダリーのストレジクラスターがプライマリーのストレージクラスターの API にアクセスできることを確認します。
セカンダリーのストレージクラスターの Object Gateway ノードから、
curl
または別の HTTP クライアントを使用して、プライマリークラスターの API に接続します。all.yml
でrgw_pull_proto
、rgw_pullhost
、およびrgw_pull_port
の設定に使用する情報を使用して URL を作成します。上記の例では、URL はhttp://cluster0-rgw-000:8080
です。API にアクセスできない場合は、URL が正しいことを確認し、必要な場合はall.yml
を更新します。URL が有効になり、ネットワークの問題が解決したら、次の手順に進み、セカンダリーのストレージクラスターで Ansible Playbook を実行します。セカンダリーのストレージクラスターで Ansible Playbook を実行します。
注記クラスターがデプロイされていて、Ceph Object Gateway に変更を加える場合は、
--limit rgws
オプションを使用します。ベアメタル デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site.yml -i hosts
コンテナー デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site-container.yml -i hosts
プライマリーストレージクラスターおよびセカンダリーストレージクラスターで Ansible Playbook を実行した後に、Ceph Object Gateway はアクティブ/アクティブ状態で実行されます。
両方のサイトでマルチサイト Ceph Object Gateway の設定を確認します。
構文
radosgw-admin sync status
5.7.3. 複数のレルムと複数のインスタンスのあるマルチサイト Ceph Object Gateway の設定
Ceph-Ansible は、複数の Ceph Object Gateway インスタンスが含まれる、複数のストレージクラスター全体で複数のレルムのデータをミラーリングするように Ceph Object Gateway を設定します。
ゲートウェイがシングルサイト設定ですでに使用されていると、Ceph-Ansible はゲートウェイをマルチサイト設定に再設定することはできません。この設定は手動でデプロイできます。レッドハットサポート にお問い合わせください。
前提条件
- Red Hat Ceph Storage クラスターを実行する 2 つ。
- 各ストレージクラスター内に少なくとも 2 つの Object Gateway ノードがある。
- Ceph Object Gateway ノード上で、Red Hat Ceph Storage インストールガイドの Red Hat Ceph Storage のインストール要件 セクションに記載のタスクを実行します。
- 各 Object Gateway ノードについて、Red Hat Ceph Storage インストールガイドの Ceph Object Gateway のインストール セクションに記載のステップ 1 から 6 を実施します。
手順
いずれのノードでも、レルム 1 と 2 のシステムアクセスキーとシークレットキーを生成し、それぞれ
multi-site-keys-realm-1.txt
およびmulti-site-keys-realm-2.txt
という名前のファイルに保存します。# echo system_access_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) > multi-site-keys-realm-1.txt [root@ansible ~]# echo system_secret_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) >> multi-site-keys-realm-1.txt # echo system_access_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) > multi-site-keys-realm-2.txt [root@ansible ~]# echo system_secret_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) >> multi-site-keys-realm-2.txt
サイト A ストレージクラスター
Ansible 設定ディレクトリーに移動します。
[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。rgw_multisite
行のコメントを解除して、true
に設定します。rgw_multisite_proto
パラメーターのコメントを解除します。rgw_multisite: true rgw_multisite_proto: "http"
usr/share/ceph-ansible
にhost_vars
ディレクトリーを作成します。[root@ansible ceph-ansible]# mkdir host_vars
サイト A ストレージクラスター上の各 Object Gateway ノードの
host_vars
にファイルを作成します。ファイル名は、Ansible インベントリーファイルで使用される名前と同じである必要があります。たとえば、Object Gateway ノードの名前がrgw-site-a
の場合は、host_vars/rgw-site-a
ファイルを作成します。構文
touch host_vars/NODE_NAME
例
[root@ansible ceph-ansible]# touch host_vars/rgw-site-a
注記マルチサイト設定で使用するクラスター内に複数の Ceph Object Gateway ノードがある場合は、ノードごとにファイルを作成します。
最初のレルムに複数のインスタンスを作成するために、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。最初のレルムの
rgw_instances
の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1 のmulti-site-keys-realm-1.txt
ファイルに保存されるランダムな文字列を使用します。構文
rgw_instances: - instance_name: '_INSTANCE_NAME_1_' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: ZONE_NAME_1 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 - instance_name: '_INSTANCE_NAME_2_' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: ZONE_NAME_1 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: paris rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 - instance_name: 'rgw1' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: paris rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080
注記サイト A はサイト B のレルムに対してセカンダリであるため、サイト B のすべてのレルムを設定した後に、次のステップにスキップして実行し、その後に Ansible Playbook を実行します。
他のレルムに複数のインスタンスを作成するために、
rgw_instances
の下の項目の更新するとともに、以下の設定を行います。ACCESS_KEY_2 および SECRET_KEY_2 のmulti-site-keys-realm-2.txt
ファイルに保存されるランダムな文字列を使用します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME_1' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: ZONE_NAME_2 rgw_zonegroup: ZONE_GROUP_NAME_2 rgw_realm: REALM_NAME_2 rgw_zone_user: ZONE_USER_NAME_2 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_2" system_access_key: ACCESS_KEY_2 system_secret_key: SECRET_KEY_2 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 endpoint: RGW_SITE_B_PRIMARY_HOSTNAME_ENDPOINT:RGW_SITE_B_PORT_NUMBER_1 - instance_name: 'INSTANCE_NAME_2' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: ZONE_NAME_2 rgw_zonegroup: ZONE_GROUP_NAME_2 rgw_realm: REALM_NAME_2 rgw_zone_user: ZONE_USER_NAME_2 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_2" system_access_key: ACCESS_KEY_2 system_secret_key: SECRET_KEY_2 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 endpoint: RGW_SITE_B_PRIMARY_HOSTNAME_ENDPOINT:RGW_SITE_B_PORT_NUMBER_1
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: fairbanks rgw_zonegroup: alaska rgw_realm: usa rgw_zone_user: edward.lewis rgw_zone_user_display_name: "Edward Lewis" system_access_key: yu17wkvAx3B8Wyn08XoF system_secret_key: 5YZfaSUPqxSNIkZQQA3lBZ495hnIV6k2HAz710BY radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 endpoint: http://rgw-site-b:8081 - instance_name: 'rgw1' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: fairbanks rgw_zonegroup: alaska rgw_realm: usa rgw_zone_user: edward.lewis rgw_zone_user_display_name: "Edward Lewis" system_access_key: yu17wkvAx3B8Wyn08XoF system_secret_key: 5YZfaSUPqxSNIkZQQA3lBZ495hnIV6k2HAz710BY radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8081 endpoint: http://rgw-site-b:8081
サイト A ストレージクラスターで Ansible Playbook を実行します。
ベアメタル デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site.yml -i hosts
コンテナー デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site-container.yml -i hosts
サイト B ストレージクラスター
Ceph-Ansible 設定ディレクトリーに移動します。
[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。rgw_multisite
行のコメントを解除して、true
に設定します。rgw_multisite_proto
パラメーターのコメントを解除します。rgw_multisite: true rgw_multisite_proto: "http"
usr/share/ceph-ansible
にhost_vars
ディレクトリーを作成します。[root@ansible ceph-ansible]# mkdir host_vars
サイト B ストレージクラスター上の各 Object Gateway ノードの
host_vars
にファイルを作成します。ファイル名は、Ansible インベントリーファイルで使用される名前と同じである必要があります。たとえば、Object Gateway ノードの名前がrgw-site-b
の場合は、host_vars/rgw-site-b
ファイルを作成します。構文
touch host_vars/NODE_NAME
例
[root@ansible ceph-ansible]# touch host_vars/rgw-site-b
注記マルチサイト設定で使用するクラスター内に複数の Ceph Object Gateway ノードがある場合は、ノードごとにファイルを作成します。
最初のレルムに複数のインスタンスを作成するために、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。最初のレルムの
rgw_instances
の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1 のmulti-site-keys-realm-1.txt
ファイルに保存されるランダムな文字列を使用します。RGW_SITE_A_PRIMARY_HOSTNAME_ENDPOINT をサイト A ストレージクラスターの Object Gateway ノードに設定します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME_1' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: ZONE_NAME_1 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 endpoint: RGW_SITE_A_HOSTNAME_ENDPOINT:RGW_SITE_A_PORT_NUMBER_1 - instance_name: '_INSTANCE_NAME_2_' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: ZONE_NAME_1 rgw_zonegroup: ZONE_GROUP_NAME_1 rgw_realm: REALM_NAME_1 rgw_zone_user: ZONE_USER_NAME_1 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_1" system_access_key: ACCESS_KEY_1 system_secret_key: SECRET_KEY_1 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 endpoint: RGW_SITE_A_PRIMARY_HOSTNAME_ENDPOINT:RGW_SITE_A_PORT_NUMBER_1
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: paris rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 endpoint: http://rgw-site-a:8080 - instance_name: 'rgw1' rgw_multisite: true rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: paris rgw_zonegroup: idf rgw_realm: france rgw_zone_user: jacques.chirac rgw_zone_user_display_name: "Jacques Chirac" system_access_key: P9Eb6S8XNyo4dtZZUUMy system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfB radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8081 endpoint: http://rgw-site-a:8081
他のレルムに複数のインスタンスを作成するために、
rgw_instances
の下の項目の更新するとともに、以下の設定を行います。ACCESS_KEY_2 および SECRET_KEY_2 のmulti-site-keys-realm-2.txt
ファイルに保存されるランダムな文字列を使用します。RGW_SITE_A_PRIMARY_HOSTNAME_ENDPOINT をサイト A ストレージクラスターの Object Gateway ノードに設定します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME_1' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: ZONE_NAME_2 rgw_zonegroup: ZONE_GROUP_NAME_2 rgw_realm: REALM_NAME_2 rgw_zone_user: ZONE_USER_NAME_2 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_2" system_access_key: ACCESS_KEY_2 system_secret_key: SECRET_KEY_2 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1 - instance_name: '_INSTANCE_NAME_2_' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: ZONE_NAME_2 rgw_zonegroup: ZONE_GROUP_NAME_2 rgw_realm: REALM_NAME_2 rgw_zone_user: ZONE_USER_NAME_2 rgw_zone_user_display_name: "ZONE_DISPLAY_NAME_2" system_access_key: ACCESS_KEY_2 system_secret_key: SECRET_KEY_2 radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: PORT_NUMBER_1
例
rgw_instances: - instance_name: 'rgw0' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: fairbanks rgw_zonegroup: alaska rgw_realm: usa rgw_zone_user: edward.lewis rgw_zone_user_display_name: "Edward Lewis" system_access_key: yu17wkvAx3B8Wyn08XoF system_secret_key: 5YZfaSUPqxSNIkZQQA3lBZ495hnIV6k2HAz710BY radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 - instance_name: 'rgw1' rgw_multisite: true rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: fairbanks rgw_zonegroup: alaska rgw_realm: usa rgw_zone_user: edward.lewis rgw_zone_user_display_name: "Edward Lewis" system_access_key: yu17wkvAx3B8Wyn08XoF system_secret_key: 5YZfaSUPqxSNIkZQQA3lBZ495hnIV6k2HAz710BY radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8081
サイト B ストレージクラスターで Ansible Playbook を実行します。
ベアメタル デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site.yml -i hosts
コンテナー デプロイメント:
[user@ansible ceph-ansible]$ ansible-playbook site-container.yml -i hosts
サイト A の 他 のレルム用の サイト A ストレージクラスターで Ansible Playbook を再度実行します。
サイト A および サイト B ストレージクラスターで Ansible Playbook を実行した後、Ceph Object Gateway はアクティブ/アクティブ状態で実行されます。
検証
マルチサイト Ceph Object Gateway の設定を確認します。
-
各サイト (サイト A およびサイト B) の Ceph Monitor ノードおよび Object Gateway ノードから、
curl
または別の HTTP クライアントを使用して、API が他のサイトからアクセスできることを確認します。 両方のサイトで
radosgw-admin sync status
コマンドを実行します。構文
radosgw-admin sync status radosgw-admin sync status --rgw -realm REALM_NAME 1
- 1
- このオプションは、ストレージクラスターの各ノードで複数のレルムを使用する場合に使用します。
例
[user@ansible ceph-ansible]$ radosgw-admin sync status [user@ansible ceph-ansible]$ radosgw-admin sync status --rgw -realm usa
-
各サイト (サイト A およびサイト B) の Ceph Monitor ノードおよび Object Gateway ノードから、