4.7. 静的 Web ホスト
ストレージ管理者は、S3 バケットで Ceph Object Gateway を静的 Web サイトをホストするように設定できます。従来の Web サイトのホストでは、Web サーバーごとに Web サーバーを設定し、コンテンツが動的に変更されない場合にリソースを非効率に使用することができます。たとえば、PHP、servlets、databases、nodejs などのサーバー側のサービスを使用しないサイト。このアプローチは、サイトごとに Web サーバーを備えた仮想マシンをセットアップするよりもはるかに経済的です。
前提条件
- 正常かつ実行中の Red Hat Ceph Storage クラスター
4.7.1. 静的 Web ホストの前提条件
静的 Web ホストには、少なくとも Red Hat Ceph Storage クラスター 1 台と、静的な Web サイト用に少なくとも 2 つの Ceph Object Gateway インスタンスが必要です。Red Hat は、各ゾーンに高可用性 (HA) プロキシーおよび keepalived
などのロードバランサーを使用する複数のゲートウェイインスタンスがあることを前提としています。
Red Hat は、Ceph Object Gateway インスタンスを使用した標準の S3/Swift API と静的 Web ホストの両方を同時にデプロイすることはサポート されません。
関連情報
- 高可用性の使用について、詳しくは Red Hat Ceph Storage Object Gateway Guide の High availability service セクションを参照してください。
4.7.2. 静的 Web ホストの要件
静的 Web ホスティング機能は独自の API を使用するため、S3 バケットで静的 Web サイトを使用するようにゲートウェイを設定するには、以下が必要です。
- S3 静的 Web ホストでは、Ceph Object Gateway インスタンスが使用され、標準の S3/Swift API のユースケースに使用されるインスタンスと区別されます。
- S3 静的 Web サイトをホストするゲートウェイインスタンスは、標準の S3/Swift API ゲートウェイインスタンスとは別の重複しないドメイン名を持っている必要があります。
- S3 静的 Web サイトをホストするゲートウェイインスタンスは、標準の S3/Swift API ゲートウェイインスタンスとは別のパブリック向け IP アドレスを使用する必要があります。
- S3 静的 Web サイトをホストするゲートウェイインスタンスは負荷分散し、必要に応じて HAProxy/keepalived を使用して SSL を終了します。
4.7.3. 静的 Web ホストゲートウェイの設定
静的 Web ホスト用に Ceph Object Gateway を有効にするには、以下のオプションを設定します。
構文
ceph config set client.rgw OPTION VALUE
例
[ceph: root@host01 /]# ceph config set client.rgw rgw_enable_static_website true [ceph: root@host01 /]# ceph config set client.rgw rgw_enable_apis s3,s3website [ceph: root@host01 /]# ceph config set client.rgw rgw_dns_name objects-zonegroup.example.com [ceph: root@host01 /]# ceph config set client.rgw rgw_dns_s3website_name objects-website-zonegroup.example.com [ceph: root@host01 /]# ceph config set client.rgw rgw_resolve_cname true
rgw_enable_static_website
設定は true
にする必要があります。rgw_enable_apis
設定 は s3website
API を有効にする必要があります。rgw_dns_name
設定および rgw_dns_s3website_name
設定は、完全修飾ドメインを提供する必要があります。サイトで正規の名前拡張子を使用している場合は、rgw_resolve_cname
オプションを true
に設定します。
rgw_dns_name
および rgw_dns_s3website_name
の完全修飾ドメイン名は重複 しないでください。
4.7.4. 静的 Web ホスティング DNS 設定
以下は、想定される DNS 設定の例です。最初の 2 行は、標準の S3 インターフェイスを使用してゲートウェイインスタンスのドメインを指定し、そ IPv4 アドレスおよび IPv6 アドレスを指しています。3 行目は、正規名の拡張を使用して S3 バケットのワイルドカード CNAME 設定を提供します。4 番目と 5 番目の行は、S3 の Web サイトインターフェイスを使用してゲートウェイインスタンスのドメインを指定し、IPv4 アドレスおよび IPv6 アドレスを参照します。
objects-zonegroup.domain.com. IN A 192.0.2.10 objects-zonegroup.domain.com. IN AAAA 2001:DB8::192:0:2:10 *.objects-zonegroup.domain.com. IN CNAME objects-zonegroup.domain.com. objects-website-zonegroup.domain.com. IN A 192.0.2.20 objects-website-zonegroup.domain.com. IN AAAA 2001:DB8::192:0:2:20
最初の 2 行にある IP アドレスは、4 番目と 5 行目の IP アドレスとは異なります。
マルチサイト設定で Ceph Object Gateway を使用している場合は、ルーティングソリューションを使用してトラフィックをクライアントに最も近いゲートウェイにルーティングすることを検討してください。
Amazon Web Service (AWS) では、ホスト名に一致するように静的 Web ホストバケットが必要です。Ceph は DNS を設定するいくつかの方法を提供し、プロキシーに適合する証明書がある場合に HTTPS は機能します。
サブドメインのバケットのホスト名
AWS 形式の S3 サブドメインを使用するには、DNS エントリーでワイルドカードを使用し、要求を任意のバケットにリダイレクトできます。DNS エントリーは以下のようになります。
*.objects-website-zonegroup.domain.com. IN CNAME objects-website-zonegroup.domain.com.
以下の方法でバケット名 (バケット名は bucket1
) にアクセスします。
http://bucket1.objects-website-zonegroup.domain.com
一致しないバケットのホスト名
Ceph は、リクエストにバケット名を含めずにドメイン名をバケットへのマッピングをサポートします。これは Ceph Object Gateway に固有のものです。ドメイン名を使用してバケットにアクセスするには、ドメイン名をバケット名にマップします。DNS エントリーは以下のようになります。
www.example.com. IN CNAME bucket2.objects-website-zonegroup.domain.com.
バケット名は bucket2
です。
以下の方法でバケットにアクセスします。
http://www.example.com
CNAME を使用した長いバケットのホスト名
AWS は通常、ドメイン名に一致するバケット名を必要とします。CNAME を使用して静的 Web ホストに DNS を設定するには、DNS エントリーは以下のようになります。
www.example.com. IN CNAME www.example.com.objects-website-zonegroup.domain.com.
以下の方法でバケットにアクセスします。
http://www.example.com
CNAME のない長いバケットのホスト名
DNS 名には、SOA
、NS
、MX
、TXT
などの他の非 CNAME レコードが含まれている場合、DNS レコードはドメイン名を IP アドレスに直接マップする必要があります。以下に例を示します。
www.example.com. IN A 192.0.2.20 www.example.com. IN AAAA 2001:DB8::192:0:2:20
以下の方法でバケットにアクセスします。
http://www.example.com
4.7.5. 静的 Web ホストサイトの作成
静的 Web サイトを作成するには、以下の手順を実行します。
S3 バケットを作成します。バケット名は、Web サイトのドメイン名と同じである場合があります。たとえば、
mysite.com
のバケット名はmysite.com
になります。これは AWS に必要ですが、Ceph には必要ありません。- 詳細は、Red Hat Ceph Storage Object Gateway Guide の Static web hosting DNS configuration セクションを参照してください。
-
静的 Web コンテンツをバケットにアップロードします。コンテンツには、HTML、CSS、クライアント側の JavaScript、イメージ、音声/ビデオコンテンツなどのダウンロード可能なファイルが含まれる場合があります。Web サイトには
index.html
ファイルが必要で、error.html
ファイルも必要な場合があります。 - Web サイトの内容を確認します。この時点で、バケットの作成者のみがコンテンツにアクセスできます。
- ファイルにパーミッションを設定し、それらが一般に公開されるようにします。