Red Hat Training
A Red Hat training course is available for Red Hat Ceph Storage
3.6. Ceph Object Gateway のインストール
Ceph Object Gateway は、RADOS ゲートウェイとも呼ばれ、librados
API 上に構築されたオブジェクトストレージインターフェイスであり、アプリケーションに Ceph ストレージクラスターへの RESTful ゲートウェイを提供します。
前提条件
-
稼働中の Red Hat Ceph Storage クラスター (
active + clean
状態が望ましい) - Ceph Object Gateway ノードで、2章Red Hat Ceph Storage のインストール要件 に記載されているタスクを実行します。
手順
Ansible 管理ノードで以下のタスクを実行します。
[rgws]
セクションの下の/etc/ansible/hosts
ファイルにゲートウェイホストを追加して、それらのロールを Ansible に識別します。ホストに連続する命名がある場合は、以下のように範囲を使用します。[rgws] <rgw_host_name_1> <rgw_host_name_2> <rgw_host_name[3..10]>
Ansible 設定ディレクトリーに移動します。
[root@ansible ~]# cd /usr/share/ceph-ansible
サンプルファイルから
rgws.yml
ファイルを作成します。[root@ansible ~]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
group_vars/rgws.yml
ファイルを開いて編集します。管理者キーを Ceph Object Gateway ノードにコピーするには、copy_admin_key
オプションのコメントを解除します。copy_admin_key: true
rgws.yml
ファイルでは、デフォルトの7480
ポートとは異なるデフォルトポートを指定することができます。以下に例を示します。ceph_rgw_civetweb_port: 80
all.yml
ファイルはradosgw_interface
を指定する必要があります。以下に例を示します。radosgw_interface: eth0
インターフェイスを指定すると、同じホストで複数のインスタンスを実行している場合に、Civetweb が別の Civetweb インスタンスと同じ IP アドレスにバインドされないようにします。
通常、デフォルトの設定を変更するには、
rgw.yml
ファイル内の設定をアンコメントし、それに応じて変更します。rgw.yml
ファイルにない設定に追加の変更を加えるには、all.yml
ファイルでceph_conf_overrides:
を使用します。例えば、rgw_dns_name:
に DNS サーバーのホストを設定し、クラスターの DNS サーバーをワイルドカード用に設定して S3 サブドメインを有効にします。ceph_conf_overrides: client.rgw.rgw1: rgw_dns_name: <host_name> rgw_override_bucket_index_max_shards: 16 rgw_bucket_default_quota_max_objects: 1638400
詳細な設定の詳細は、Red Hat Ceph Storage 3 の 実稼働環境への Ceph Object Gateway ガイド を参照してください。高度なトピックには以下が含まれます。
- Ansible グループの設定
ストレージストラテジーの開発プールの作成方法および設定方法の詳細は、ルートプールの作成、システムプールの作成、およびデータ配置戦略の作成セクションを参照してください。
バケットのシャード化の詳細は、バケットのシャード化 を参照してください。
group_vars/all.yml
ファイルのradosgw_interface
パラメーターのコメントを外します。radosgw_interface: <interface>
以下を置き換えます。
-
Ceph Object Gateway がリッスンするインターフェイスを使用する
<interface>
詳細は、
all.yml
ファイルを参照してください。-
Ceph Object Gateway がリッスンするインターフェイスを使用する
Ansible Playbook の実行:
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit rgws
Ansible は、各 Ceph Object Gateway が確実に実行されていることを確認します。
単一サイトの設定の場合は、Ceph ObjectGateway を Ansible 設定に追加します。
マルチサイトデプロイメントでは、各ゾーンの Ansible 設定を行う必要があります。つまり、Ansible によって、そのゾーン用に Ceph Storage クラスターおよびゲートウェイインスタンスが作成されます。
マルチサイトクラスターのインストールが完了したら、マルチサイト用のクラスターの設定方法は、Red Hat Ceph Storage 4 のObject Gateway Guide for Red Hat Enterprise Linuxの マルチサイト の章に進んでください。
関連情報
3.6.1. マルチサイト Ceph Object Gateway の設定
Ansible は、マルチサイト環境の Ceph Object Gateway のレルム、ゾーングループ、マスターゾーン、セカンダリーゾーンを設定します。
前提条件
- Red Hat Ceph Storage クラスターを実行する 2 つ。
- Ceph Object Gateway ノード上で、Red Hat Ceph Storage インストールガイドの Red Hat Ceph Storage のインストール要件 に記載のタスクを実行します。
- ストレージクラスターごとに 1 つの Ceph Object Gateway をインストールして設定します。
手順
プライマリーストレージクラスターの Ansible ノードで以下の手順を実行します。
システムキーを生成し、
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
Ansible 設定ディレクトリー
/usr/share/ceph-ansible
に移動します。[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。以下のオプションを追加し、$ZONE_NAME
、$ZONE_GROUP_NAME
、$REALM_NAME
、$ACCESS_KEY
、$SECRET_KEY
の値を適宜更新することで、マルチサイトのサポートを有効にします。複数の Ceph Object Gateway がマスターゾーンにある場合は、
rgw_multisite_endpoints
オプションを設定する必要があります。rgw_multisite_endpoints
オプションの値は、コンマで区切られたリストで、スペースは含みません。例
rgw_multisite: true rgw_zone: $ZONE_NAME rgw_zonemaster: true rgw_zonesecondary: false rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}" rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080 rgw_zonegroup: $ZONE_GROUP_NAME rgw_zone_user: zone.user rgw_realm: $REALM_NAME system_access_key: $ACCESS_KEY system_secret_key: $SECRET_KEY
注記ansible_fqdn
ドメイン名は、セカンダリーストレージクラスターから解決可能である必要があります。注記新しい Object Gateway を追加するときは、Ansible Playbook を実行する前に、新しい Object Gateway のエンドポイント URL を使用して
rgw_multisite_endpoints
リストの最後に追加してください。Ansible Playbook の実行:
[user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
Ceph Object Gateway デーモンを再起動します。
[root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
セカンダリーストレージクラスターの Ansible ノードで以下の手順を行います。
Ansible 設定ディレクトリー
/usr/share/ceph-ansible
に移動します。[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。以下のオプションを追加し、$ZONE_NAME
、$ZONE_GROUP_NAME
、$REALM_NAME
、$ACCESS_KEY
、$SECRET_KEY
の値を更新することで、マルチサイトのサポートを有効にします。rgw_zone_user
、system_access_key
、system_secret_key
は、マスターゾーンの設定で使用したものと同じ値でなければなりません。rgw_pullhost
オプションには、マスターゾーンの Ceph Object Gateway を指定する必要があります。複数の Ceph Object Gateway がセカンダリーゾーンにある場合は、
rgw_multisite_endpoints
オプションを設定する必要があります。rgw_multisite_endpoints
オプションの値は、コンマで区切られたリストで、スペースは含みません。例
rgw_multisite: true rgw_zone: $ZONE_NAME rgw_zonemaster: false rgw_zonesecondary: true rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}" rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080 rgw_zonegroup: $ZONE_GROUP_NAME rgw_zone_user: zone.user rgw_realm: $REALM_NAME system_access_key: $ACCESS_KEY system_secret_key: $SECRET_KEY rgw_pull_proto: http rgw_pull_port: 8080 rgw_pullhost: $MASTER_RGW_NODE_NAME
注記ansible_fqdn
ドメイン名は、プライマリーストレージクラスターから解決可能である必要があります。注記新しい Object Gateway を追加するときは、Ansible Playbook を実行する前に、新しい Object Gateway のエンドポイント URL を使用して
rgw_multisite_endpoints
リストの最後に追加してください。Ansible Playbook の実行:
[user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
Ceph Object Gateway デーモンを再起動します。
[root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
- マスターおよびセカンダリーストレージクラスターで Ansible Playbookを実行すると、アクティブ-アクティブ Ceph Object Gateway 設定が実行されます。
マルチサイト Ceph Object Gateway の設定を確認します。
-
各サイトの Ceph Monitor ノードと Object Gateway ノードから、プライマリーとセカンダリーが他のサイトを
curl
できる必要があります。 -
両方のサイトで
radosgw-admin sync status
コマンドを実行します。
-
各サイトの Ceph Monitor ノードと Object Gateway ノードから、プライマリーとセカンダリーが他のサイトを