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 を実施します。

手順

  1. システムキーを生成し、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

プライマリーストレージクラスター

  1. Ceph-Ansible 設定ディレクトリーに移動します。

    [root@ansible ~]# cd /usr/share/ceph-ansible
  2. group_vars/all.yml ファイルを開いて編集します。rgw_multisite 行のコメントを解除して、true に設定します。rgw_multisite_proto パラメーターのコメントを解除します。

    rgw_multisite: true
    rgw_multisite_proto: "http"
  3. usr/share/ceph-ansiblehost_vars ディレクトリーを作成します。

    [root@ansible ceph-ansible]# mkdir host_vars
  4. プライマリーストレージクラスター上の各 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 ノードがある場合は、ノードごとにファイルを作成します。

  5. ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。それぞれ、ZONE_NAMEZONE_GROUP_NAMEZONE_USER_NAMEZONE_DISPLAY_NAME、および REALM_NAME の更新と共に以下の設定を行います。ACCESS_KEY および SECRET_KEYmulti-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

  6. オプション: 複数のインスタンスを作成する場合は、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。rgw_instances の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1multi-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

セカンダリーストレージクラスター

  1. Ceph-Ansible 設定ディレクトリーに移動します。

    [root@ansible ~]# cd /usr/share/ceph-ansible
  2. group_vars/all.yml ファイルを開いて編集します。rgw_multisite 行のコメントを解除して、true に設定します。rgw_multisite_proto パラメーターのコメントを解除します。

    rgw_multisite: true
    rgw_multisite_proto: "http"
  3. usr/share/ceph-ansiblehost_vars ディレクトリーを作成します。

    [root@ansible ceph-ansible]# mkdir host_vars
  4. セカンダリーストレージクラスター上の各 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 ノードがある場合は、ノードごとにファイルを作成します。

  5. 以下の設定を設定します。ZONE_USER_NAMEZONE_DISPLAY_NAMEACCESS_KEYSECRET_KEYREALM_NAME、および ZONE_GROUP_NAME の最初のクラスターで使用するものと同じ値を指定します。ZONE_NAME には、プライマリーストレージクラスターとは異なる値を使用します。マスターゾーンの Ceph Object Gateway ノードに MASTER_RGW_NODE_NAME を設定します。なお、プライマリーストレージクラスターと比較して、rgw_zonemasterrgw_zonesecondaryrgw_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

  6. オプション: 複数のインスタンスを作成する場合は、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。rgw_instances の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1multi-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

両方のサイトで以下の手順を実行します。

  1. プライマリーストレージクラスターで Ansible Playbook を実行します。

    • ベアメタル デプロイメント:

      [user@ansible ceph-ansible]$ ansible-playbook site.yml -i hosts
    • コンテナー デプロイメント:

      [user@ansible ceph-ansible]$ ansible-playbook site-container.yml -i hosts
  2. セカンダリーのストレジクラスターがプライマリーのストレージクラスターの API にアクセスできることを確認します。

    セカンダリーのストレージクラスターの Object Gateway ノードから、curl または別の HTTP クライアントを使用して、プライマリークラスターの API に接続します。all.ymlrgw_pull_protorgw_pullhost、および rgw_pull_port の設定に使用する情報を使用して URL を作成します。上記の例では、URL は http://cluster0-rgw-000:8080 です。API にアクセスできない場合は、URL が正しいことを確認し、必要な場合は all.yml を更新します。URL が有効になり、ネットワークの問題が解決したら、次の手順に進み、セカンダリーのストレージクラスターで Ansible Playbook を実行します。

  3. セカンダリーのストレージクラスターで 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 はアクティブ/アクティブ状態で実行されます。

  4. 両方のサイトでマルチサイト 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. いずれのノードでも、レルム 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 ストレージクラスター

  1. Ansible 設定ディレクトリーに移動します。

    [root@ansible ~]# cd /usr/share/ceph-ansible
  2. group_vars/all.yml ファイルを開いて編集します。rgw_multisite 行のコメントを解除して、true に設定します。rgw_multisite_proto パラメーターのコメントを解除します。

    rgw_multisite: true
    rgw_multisite_proto: "http"
  3. usr/share/ceph-ansiblehost_vars ディレクトリーを作成します。

    [root@ansible ceph-ansible]# mkdir host_vars
  4. サイト 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 ノードがある場合は、ノードごとにファイルを作成します。

  5. 最初のレルムに複数のインスタンスを作成するために、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。最初のレルムの rgw_instances の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1multi-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 を実行します。

  6. 他のレルムに複数のインスタンスを作成するために、rgw_instances の下の項目の更新するとともに、以下の設定を行います。ACCESS_KEY_2 および SECRET_KEY_2multi-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

  7. サイト 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 ストレージクラスター

  1. Ceph-Ansible 設定ディレクトリーに移動します。

    [root@ansible ~]# cd /usr/share/ceph-ansible
  2. group_vars/all.yml ファイルを開いて編集します。rgw_multisite 行のコメントを解除して、true に設定します。rgw_multisite_proto パラメーターのコメントを解除します。

    rgw_multisite: true
    rgw_multisite_proto: "http"
  3. usr/share/ceph-ansiblehost_vars ディレクトリーを作成します。

    [root@ansible ceph-ansible]# mkdir host_vars
  4. サイト 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 ノードがある場合は、ノードごとにファイルを作成します。

  5. 最初のレルムに複数のインスタンスを作成するために、ファイルを編集して、各 Object Gateway ノードにある全インスタンスに対して設定詳細を追加します。最初のレルムの rgw_instances の下にある項目を更新するとともに、以下の設定を行います。ACCESS_KEY_1 および SECRET_KEY_1multi-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

  6. 他のレルムに複数のインスタンスを作成するために、rgw_instances の下の項目の更新するとともに、以下の設定を行います。ACCESS_KEY_2 および SECRET_KEY_2multi-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

  7. サイト 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 はアクティブ/アクティブ状態で実行されます。

検証

  1. マルチサイト Ceph Object Gateway の設定を確認します。

    1. 各サイト (サイト A およびサイト B) の Ceph Monitor ノードおよび Object Gateway ノードから、curl または別の HTTP クライアントを使用して、API が他のサイトからアクセスできることを確認します。
    2. 両方のサイトで 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