ALB Extensible Edition は、FQDN タイプのバックエンドサービスへのリクエスト転送をサポートしています。OSS を使用して静的リソースを保存し、ALB Extensible Edition インスタンスが VPC を介してリクエストを OSS にルーティングします。このアーキテクチャにより、フロントエンドとバックエンドが分離され、パブリックネットワークのトラフィックコストが削減され、アクセスの安定性が向上します。
仕組み
ALB Extensible Edition インスタンスはクライアントリクエストを受信し、VPC を介して、FQDN タイプのサーバーグループで設定された OSS バケットのアクセスドメインに転送します。その後、インスタンスはバケットのレスポンスをクライアントに返します。他のタイプのリクエストを処理するには、必要に応じてバックエンドサービスを追加し、転送ルールを設定します。
-
ALB Extensible Edition インスタンス:負荷分散機能とトラフィック転送機能を提供します。
-
HTTPS リスナー:クライアントリクエストを受信します。
-
FQDN タイプのサーバーグループ:OSS バケットのアクセスドメインをバックエンドサービスとして定義します。
-
OSS バケット:静的ウェブサイトのリソースを保存します。
前提条件
-
ALB Extensible Edition のパブリックプレビューへのアクセス権があること。
-
China (Ulanqab) リージョンに VPC が作成済みであり、ゾーン A とゾーン B にそれぞれ vSwitch が 1 つずつあること。
-
カスタムドメイン名を登録し、その ICP 申請を完了していること。このソリューションでは、OSS バケットと ALB インスタンスの両方が China (Ulanqab) リージョンにデプロイされます。したがって、OSS バケットにマッピングされたドメイン名と、クライアントが ALB インスタンスにアクセスするために使用するドメイン名の両方について、使用前に ICP 申請を完了させておく必要があります。
-
カスタムドメイン名に一致する SSL 証明書があること。証明書を Alibaba Cloud から購入していない場合は、Alibaba Cloud Certificate Management Service にアップロードする必要があります。
操作手順
手順1:OSS バケットの作成と設定
OSS バケットを作成し、パブリック読み取り権限を設定し、静的ページファイルをアップロードし、静的ウェブサイトホスティング機能を有効にします。
OSS バケットの作成
-
OSS コンソールにログインします。左側のナビゲーションバーで、[バケットリスト] をクリックし、次に バケットの作成 をクリックします。
-
バケットの作成 パネルで、次の設定を行い、その他の設定はデフォルト値のままにします。OK をクリックします。
-
[バケット名]:バケットにグローバルで一意な名前を設定します。
-
[リージョン]:[China (Ulanqab)] を選択します。
-
バケット権限の設定
-
バケットリストで、対象の バケット名 をクリックしてバケット詳細ページを開きます。
-
左側のナビゲーションバーで 権限管理 > 公開アクセス禁止 をクリックし、公開アクセス禁止 スイッチをオフにして、表示されるダイアログボックスで操作を確定します。
-
ACL タブに切り替えて、設定 をクリックし、バケット ACL を [パブリック読み取り] に設定してから、設定 をクリックします。
静的ページファイルのアップロード
-
左側のナビゲーションバーで、オブジェクト管理 > オブジェクト をクリックし、次に アップロード をクリックします。
-
サンプル静的ウェブページ
index.htmlをアップロードします。ファイル ACL には、バケットから継承 を選択します。
<html>
<head>
<title>Hello OSS!</title>
<meta charset="utf-8">
</head>
<body>
<p>Start Alibaba Cloud OSS Hosting</p>
<p>This is the index page</p>
</body>
</html>
-
引き続き
404.htmlファイルをアップロードし、ファイル ACL には [バケットから継承] を選択します。
<html>
<head>
<title>Page Not Found</title>
<meta charset="utf-8">
</head>
<body>
<p>The page you are looking for does not exist</p>
<p>You can try visiting the homepage</p>
</body>
</html>
静的ウェブサイトホスティングの設定
左側のナビゲーションバーで データ管理 > 静的ページ をクリックし、次に 設定 をクリックします。設定が完了したら、設定 をクリックします。
-
[デフォルトのホームページ]:
index.htmlを入力します。 -
[サブディレクトリ]:デフォルトで [無効] になっています。
-
[デフォルトの404ページ]:
404.htmlを入力します。 -
[エラーページのステータスコード]:デフォルトは [404] です。
手順2:OSS バケットへのドメインのマッピング
バケットのデフォルトドメイン名 (内部またはパブリックドメイン名) を使用して HTML ファイルにアクセスすると、OSS はブラウザーにファイルを表示させる代わりにダウンロードを促すレスポンスヘッダーを追加します。このセキュリティ制限を回避するには、カスタムドメイン名をバケットにマッピングする必要があります。
-
左側のナビゲーションバーで バケットの設定 > ドメイン名 をクリックし、次に カスタムドメイン名のバインド をクリックします。
-
カスタムドメイン名のバインド ダイアログボックスで、OSS バケットにバインドするドメイン名を入力し、プロンプトに従って 関連付けを完了し、ドメインが有効になったことを確認します。
バインドが完了したら、バインドしたドメイン名 (たとえば、static.example.com) を記録します。このドメイン名は、後続のステップで ALB バックエンドサービスを設定するために使用します。
手順3:ALB Extensible Edition インスタンスの作成
-
ALB コンソールにログインし、ALB の作成 をクリックします。
-
購入ページで、次の設定を行い、今すぐ作成 をクリックします。
-
リージョン:[China (Ulanqab)] を選択します。
-
ネットワークタイプ:[インターネット] を選択します。
-
VPC と ゾーン:対象の VPC を選択します。ゾーンには [Ulanqab Zone A] と [Ulanqab Zone B] を選択し、それぞれに対応する vSwitch を選択します。最後に、[EIP を自動的に割り当てる] を選択します。
-
IP バージョン:[IPv4] を選択します。
-
エディション:[Extensible] を選択します。
-
-
注文確認 ページで、インスタンスの設定詳細を確認し、今すぐ有効化 をクリックします。
手順4:PrivateZone 名前解決の設定
PrivateZone を設定して、手順2で OSS バケットにマッピングしたカスタムドメイン名が、バケットの内部ドメイン名に解決されるようにします。これにより、ALB は VPC を介してバケットにアクセスできるようになり、パブリックトラフィックコストを削減し、アクセスの安定性を向上させます。
PrivateZone へのゾーンの追加
-
プライベート DNS コンソールにログインし、Add Zone をクリックします。
-
Add ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
-
[イントラネット権威ドメイン名 (Zone)]: OSS Bucket にバインドするドメイン名 (例:
static.example.com) を入力します。 -
[Alibaba Cloud VPC イントラネットで有効]:Application Load Balancer (ALB) インスタンスが配置されている VPC を選択します。
-
CNAME レコードの追加
-
ドメイン名リストで、対象ドメイン名の Actions 列にある Settings をクリックします。Settings ページで、Add Record をクリックします。
-
Add Record ダイアログボックスで、次の設定を完了し、OK をクリックします。
-
[Record Type]:[CNAME] を選択します。
-
[Hostname]:
@を入力すると、ルートドメインstatic.example.comに解決されます。 -
[Record Value]:OSS バケットの内部ドメイン名を入力します。 OSS バケットの概要ページで、バケットドメイン名列にあるVPC 内 ECS からのアクセス (イントラネット)の値を確認します。 値は
bucket-name.oss-cn-wulanchabu-internal.aliyuncs.comのような形式です。 -
[Query Source]と [TTL]:デフォルト値のままにします。
-
-
Change Resource Record Confirmation ダイアログボックスで、レコード情報を確認し、OK をクリックします。
DNS 名前解決が有効になった後、ALB が配置されている VPC から static.example.com にアクセスした場合、ドメイン名は OSS バケットの内部 IP アドレスに解決され、VPC 内部ネットワーク経由でアクセスできるようになります。
手順5:FQDN タイプのサーバーグループの作成
FQDN タイプのサーバーグループを作成し、OSS バケットのアクセスドメイン名をバックエンドサービスとして追加します。
-
サーバーグループコンソールで、リージョンが [China (Ulanqab)] に設定されていることを確認し、サーバーグループの作成 をクリックします。
-
次のようにサーバーグループを設定し、作成 をクリックします。
-
[サーバーグループタイプ]:FQDN を選択します。
-
[サーバーグループ名]:このトピックでは、
sgp-dns-ossを入力します。 -
[バックエンドサーバープロトコル]: デフォルト値は
HTTPです。 -
[DNS サーバ設定]:内部 DNS アドレスを自動入力 をクリックします。クリックすると、Alibaba Cloud 内部 DNS が自動的に入力されます。
-
-
サーバーグループが作成されました ダイアログボックスで、バックエンドサーバーの追加 をクリックします。DNS 名の追加 ダイアログボックスで、次の設定を完了し、OK をクリックします。
-
[DNS 名]:
static.example.comなど、OSS バケットにマッピングされているドメイン名を入力します。 -
[ポート]:
80を入力します。
-
手順6:リスナーの作成
-
ALB コンソールで、対象のインスタンス ID をクリックして インスタンスの詳細 ページに移動します。リスナー タブで、リスナーの作成 をクリックします。
-
リスナーの設定 ステップで、リスナープロトコルの選択 を HTTPS に、リスニングポート を
443に設定し、次へ をクリックします。 -
SSL 証明書の設定 ステップで、カスタムドメイン名に一致する SSL 証明書を選択し、次へ をクリックします。
-
サーバーグループ ステップで、FQDN タイプと
sgp-dns-ossサーバーグループを選択し、次へ をクリックします。 -
設定の確認 ステップで、設定を確認し、送信 をクリックします。
手順7:DNS 名前解決の設定
カスタムドメイン名を ALB インスタンスの DNS 名に向ける CNAME レコードを作成します。これにより、クライアントはカスタムドメインを通じてウェブサイトにアクセスできます。
このチュートリアルでは、Alibaba Cloud DNS を例として使用します。ドメイン名が Alibaba Cloud に登録されていない場合は、まず Alibaba Cloud DNS コンソールにドメイン名を追加する必要があります。
-
ALB コンソールに移動し、対象インスタンスの ドメイン名 をコピーします。
-
Alibaba Cloud DNS コンソールにログインし、対象ドメイン名の Actions 列で 解決設定 をクリックします。解決設定 ページで、Add Record をクリックします。
-
以下の情報に基づいて CNAME レコードを追加し、OK をクリックします。
-
[Record Type]:[CNAME] を選択します。
-
[Hostname]:
testなどのドメインプレフィックスを入力します。 ALB にアクセスするためのドメイン名はtest.example.comです。 -
[Query Source]と [TTL]:デフォルト設定のままにします。
-
[Record Value]:ALB インスタンスの DNS 名を入力します。
-
-
Change Resource Record Confirmation ダイアログボックスで、DNS レコード情報を確認し、OK をクリックします。
手順8:テストと検証
test.example.com はドメイン名の例です。 テストでは、ステップ 7 で設定した実際のドメイン名に置き換え、ドメイン名解決が有効になっていることを確認する必要があります。
ホームページへのアクセス
ブラウザーで https://test.example.com にアクセスすると、OSS で設定されているデフォルトのホームページ index.html が返されます。
index.html への直接アクセス
ブラウザーで https://test.example.com/index.html にアクセスすると、index.html も返されます。
404 エラーページのテスト
ブラウザで https://test.example.com/donotexist のような存在しないリソースにアクセスすると、OSS で設定された 404.html エラーページが返されます。
詳細情報
課金
-
OSS 料金:実際の使用量に基づいて課金されます。詳細については、「OSS 課金概要」をご参照ください。
-
ALB Extensible Edition:この機能は パブリックプレビュー 期間中であり、無料で使用できます。ただし、ALB Extensible Edition インスタンスにバインドされた EIP については別途課金されます。詳細については、「EIP 課金ルール」をご参照ください。
-
PrivateZone 名前解決料金:従量課金制で課金されます。詳細については、「PrivateZone 製品課金」をご参照ください。
-
ドメイン名とパブリック DNS 名前解決料金:レジストラから請求されるドメイン名料金に加えて、Alibaba Cloud DNS をパブリック名前解決に使用する場合は、パブリック権威 DNS 名前解決料金を支払う必要があります。
-
証明書料金:Alibaba Cloud から証明書を購入またはアップロードする場合、SSL 証明書料金を支払う必要があります。
ALB Extensible Edition のサポートリージョン
エリア | リージョン | ゾーン |
中国 | 中国 (ウランチャブ) | ゾーン A、ゾーン B、ゾーン C |
中国 (杭州) | ゾーン J、ゾーン K | |
中国 (北京) | ゾーン I、ゾーン K、ゾーン L | |
中国 (上海) | ゾーン B、ゾーン F | |
中国 (香港) | ゾーン B、ゾーン C、ゾーン D | |
アジアパシフィック | シンガポール | ゾーン A、ゾーン B、ゾーン C |
日本 (東京) | ゾーン B、ゾーン C、ゾーン E | |
マレーシア (クアラルンプール) | ゾーン A、ゾーン B、ゾーン C | |
ヨーロッパとアメリカ | ドイツ (フランクフルト) | ゾーン A、ゾーン B |
米国 (シリコンバレー) | ゾーン A、ゾーン B | |
中東 | UAE (ドバイ) | ゾーン A、ゾーン B |
推奨事項
-
バケットタイプの選択:アクセス頻度に基づいて適切なストレージクラスを選択し、パフォーマンスとコストのバランスを取ります。重要な静的リソースについては、ゾーン冗長ストレージを有効にして、より高い可用性を確保します。
-
CDN アクセラレーション:ALB の前に CDN を配置して、静的リソースをエッジノードにキャッシュします。これにより、アクセス速度とユーザーエクスペリエンスが向上します。
よくあるご質問 (FAQ)
リクエストが OSS に到達できないエラー: upstream connect error or disconnect/reset before headers. reset reason: connection timeout
-
PrivateZone 名前解決が正しく設定されており、PrivateZone が ALB インスタンスの VPC に関連付けられていることを確認してください。
-
サーバーグループで設定されたドメイン名が、OSS バケットにマッピングされたドメイン名と一致していることを確認してください。
リクエストは OSS に到達するが、ホームページが表示されない
-
バケットがパブリックアクセスを許可しており、その ACL がパブリック読み取りに設定されていることを確認してください。
-
バケットの静的 Web サイトホスティングが有効化されており、
index.htmlファイルがアップロードされてデフォルトのホームページとして設定されていることを確認してください。