Menu Close
5.7.3. 複数のレルムのあるマルチサイト Ceph Object Gateway の設定
Ceph-Ansible は、複数の RGW インスタンスが含まれる、複数のストレージクラスター全体で複数のレルムのデータをミラーリングするように 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
プライマリーストレージクラスターの Ansible ノードで以下の手順を実行します。
Ceph-Ansible 設定ディレクトリー
/usr/share/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 にある全インスタンスに対して設定詳細を追加します。最初のレルムに対して、
instance_name
で以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1 のmulti-site-keys-realm-1.txt
ファイルに保存されるランダムな文字列を使用します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME' 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
重要Ansible Playbook をエラーなく実行するためには、例のように各
-instance_name
がrgw_instances:
の下に並んでいることを確認する必要があります。rgw_instances: - instance_name: 'rgw0'
例
rgw_instances: - instance_name: 'rgw0' 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
注記クラスター内に既存のレルムとCeph Object Gatewaysが手動で設定されている場合は、インスタンス
名
と各インスタンスの設定をそれぞれのオブジェクトノードファイルに追加する必要があります。Ceph-ansibleは、Playbook の実行時にすべてのノードのceph.conf
を上書きします。既存のレルムにある既存の Ceph Object Gateways をrgw_instances
に追加すると、各ノードの新しいceph.conf
ファイルに新旧の Ceph Object Gateways が必ず存在するようになります。例
rgw_instances: - instance_name: 'rgw0' rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_realm: local-realm-1 rgw_zonegroup: local-zone-group-1 rgw_zone: local-zone-1 rgw_zone_user: local-user-1 rgw_zone_user_display_name: "local-user-1" system_access_key: P9Eb6S8XNyo4dtZZUUMx system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfA radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 - instance_name: 'rgw1' 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
オプション: 同一の Object Gateway ノード上に複数のインスタンスがある場合には、他のレルムの
instance_name
に以下の設定を行います。ACCESS_KEY_2 および SECRET_KEY_2 のmulti-site-keys-realm-2.txt
ファイルに保存されるランダムな文字列を使用します。構文
- instance_name: 'INSTANCE_NAME' 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_2
例
- instance_name: 'rgw1' rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: juneau 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
プライマリーゲートウェイの
host_vars
ファイルが以下の例のようになっていることを確認します。例
rgw_instances: - instance_name: 'rgw0' 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
オプション: 複数のインスタンスの場合には、プライマリーゲートウェイの
host_vars
ファイルが以下の例のようになっていることを確認します。例
rgw_instances: - instance_name: 'rgw0' 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_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_zone: juneau 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
プライマリーストレージクラスターで 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 ノードで以下の手順を実行します。
Ceph-Ansible 設定ディレクトリー
/usr/share/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 ノードがある場合は、ノードごとにファイルを作成します。
ファイルを編集して、セカンダリーストレージクラスタ内の各 Object Gateway にある全インスタンスに対して設定詳細を追加します。最初のレルムに対して、
instance_name
で以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1 のmulti-site-keys-realm-1.txt
ファイルに保存されるランダムな文字列を使用します。構文
rgw_instances: - instance_name: 'INSTANCE_NAME' 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: http://RGW_PRIMARY_HOSTNAME:_RGW_PRIMARY_PORT_NUMBER_1_
例
rgw_instances: - instance_name: 'rgw0' rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: versailles 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
注記クラスター内に既存のレルムと Ceph Object Gateways を手動で設定している場合は、関連するオブジェクトノードファイルに
instance_name
と各インスタンスの設定を追加する必要があります。Ceph-ansibleは、Playbook の実行時にすべてのノードのceph.conf
を上書きします。既存のレルムにある既存の Ceph Object Gateways をrgw_instances
に追加すると、各ノードの新しいceph.conf
ファイルに新旧の Ceph Object Gateways が必ず存在するようになります。例
rgw_instances: - instance_name: 'rgw0' rgw_zonemaster: true rgw_zonesecondary: false rgw_zonegroupmaster: true rgw_realm: local-realm-2 rgw_zonegroup: local-zone-group-2 rgw_zone: local-zone-2 rgw_zone_user: local-user-2 rgw_zone_user_display_name: "local-user-2" system_access_key: P9Eb6S8XNyo4dtZZUUMx system_secret_key: qqHCUtfdNnpHq3PZRHW5un9l0bEBM812Uhow0XfA radosgw_address: "{{ _radosgw_address }}" radosgw_frontend_port: 8080 - instance_name: 'rgw1' rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: versailles 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
オプション: 同一の Object Gateway ノード上に複数のインスタンスがある場合には、他のレルムの
instance_name
に以下の設定を行います。ACCESS_KEY_2 および SECRET_KEY_2 のmulti-site-keys-realm-2.txt
ファイルに保存されるランダムな文字列を使用します。RGW_PRIMARY_HOSTNAME をプライマリーストレージクラスターの Object Gateway ノードに設定します。構文
- instance_name: 'INSTANCE_NAME' 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_2 endpoint: http://RGW_PRIMARY_HOSTNAME:_RGW_PRIMARY_PORT_NUMBER_2_
例
- instance_name: 'rgw1' 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-primary:8081
セカンダリーゲートウェイの
host_vars
ファイルが以下の例のようになっていることを確認します。例
rgw_instances: - instance_name: 'rgw0' rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: versailles 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
オプション: 複数のインスタンスの場合には、セカンダリーゲートウェイの
host_vars
ファイルが以下の例のようになっていることを確認します。例
rgw_instances: - instance_name: 'rgw0' rgw_zonemaster: false rgw_zonesecondary: true rgw_zonegroupmaster: false rgw_zone: versailles 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_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-primary:8081
-
各サイト (プライマリーおよびセカンダリー) の Ceph Monitor ノードおよび Object Gateway ノードから、
curl
または別の HTTP クライアントを使用して、プリマリーサイトへのエンドポイントがセカンダリーサイトからアクセスできることを確認します。rgw_instances
の設定にある任意のエンドポイント
をチェックする必要があります。 セカンダリーのストレージクラスターで 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