単一の Global Accelerator インスタンスで複数の証明書を設定し、複数の HTTPS ドメインへのアクセスを高速化します。
ユースケース
US (Silicon Valley) に本社を置くある企業が、Alibaba Cloud サーバー上に 2 つの Web サービスをデプロイしました。それぞれが異なるドメイン名を使用しています。クライアントは主に China (Hong Kong) におり、Web サービスは次の課題に直面しています。
不安定なパブリックネットワーク接続により、高いレイテンシー、ジッター、パケット損失が発生します。
各ドメインを個別に高速化すると、コストが高くなります。
これらの問題を解決するため、同社は HTTPS リスナーを備えた GA のデプロイを計画しています。HTTPS リスナーは、次の機能を通じて複数の HTTPS ドメインへのアクセスを高速化します。
複数の証明書のバインドをサポートし、複数のドメインを単一の HTTPS リスナーに関連付けます。
ドメインベースの転送ルールをサポートし、異なるドメインへのリクエストを対応するバックエンドサーバーにルーティングします。
クライアントリクエストを暗号化し、伝送中のデータセキュリティを確保します。
次の表に、GA のデプロイ後の Web サーバーの詳細とリクエスト転送計画を示します。
項目 | ドメイン 1 | ドメイン 2 |
リスナープロトコル | HTTPS | |
リスナーポート | 443 | |
対応する証明書 | デフォルト証明書 A | 追加証明書 B |
対応する転送ルール | デフォルト転送ルール | カスタム転送ルール |
対応するエンドポイントグループ | デフォルトエンドポイントグループ | 仮想エンドポイントグループ |
対応するサーバー | サーバー 1 | サーバー 2 |
バックエンドサービスプロトコル | HTTP | HTTPS |
バックエンドサービスポート | 80 | 443 |
サーバーのパブリック IP アドレス | 47.XX.XX.62 | 47.XX.XX.34 |
GA で設定された証明書は、クライアントからインスタンスへのデータを暗号化します。バックエンドサーバーにインストールされた証明書は、GA からサーバーへのデータを暗号化します。
前提条件
SSL 証明書を購入し、証明書申請を提出済みであること。詳細については、「証明書の選択と購入」および「証明書申請の提出」をご参照ください。
証明書ファイルをバックエンドサーバーにアップロード済みであること。詳細については、「Cloud Assistant を使用した ECS インスタンスへのファイルのアップロード」をご参照ください。
バックエンドのサーバー 1 とサーバー 2 が、それぞれ HTTP ポート 80 と HTTPS ポート 443 でサービスを提供していること。
ドメイン 1 (
xxxtest.cloud) とドメイン 2 (xxxtest.fun) の DNS 名前解決を設定済みであること。具体的には、ドメインをバックエンドサーバーのパブリック IP アドレスに向ける A レコードを設定済みであること。
このトピックでは、Nginx を使用して HTTP ポート 80 と HTTPS ポート 443 で動作するバックエンドサービスを設定し、Alibaba Cloud DNS を使用してDNS レコードを設定する方法について説明します。別の DNS サービスプロバイダーを使用している場合は、そのプロバイダーの指示に従ってください。
このトピックでは、標準の従量課金 Global Accelerator インスタンスを例に、Global Accelerator を設定して複数の HTTPS ドメインへのアクセスを高速化する方法を説明します。
従量課金制の GA インスタンスは、帯域幅課金に Pay-By-Data-Transfer を使用します。帯域幅プランを関連付ける必要はありません。Cloud Data Transfer (CDT) がトラフィック課金を処理します。
従量課金制のGlobal Acceleratorインスタンスを初めて使用するときは、従量課金GAアクティベーションページをクリックし、プロンプトに従ってGlobal Acceleratorをアクティブにします。
ステップ1:基本情報の設定
Global Accelerator コンソールにログインします。
インスタンス ページで、標準タイプの従量課金型インスタンスの作成 をクリックします。
インスタンスの基本設定 ウィザードページで、次のパラメーターを設定し、次へ をクリックします。
パラメーター
説明
[GA インスタンス名]
GA インスタンスの名前を入力します。
[インスタンスの課金方法]
デフォルト値は[従量課金]です。
従量課金制の標準 Global Accelerator インスタンスには、インスタンス料金、キャパシティユニット (CU) 料金、およびデータ転送料金が発生します。
[リソースグループ]
標準 Global Accelerator インスタンスが属するリソースグループを選択します。
リソースグループは、Alibaba Cloud アカウントのリソース管理で作成する必要があります。
ステップ2:加速エリアの設定
Global Accelerator インスタンスの加速エリアを設定して、バックエンドサービスへの高速アクセスが必要なユーザーがいるリージョンを指定し、これらのリージョンに帯域幅を割り当てます。
アクセラレーションエリアの設定 ウィザードページで、次の情報に基づいて加速エリアを設定し、次へ をクリックします。
パラメーター | 説明 |
[アクセラレーションエリア] | ドロップダウンリストから高速化が必要な 1 つ以上のリージョンを選択し、[リストに追加] をクリックします。 この例では、[アジア太平洋]エリアの China (Hong Kong) を選択します。 |
[帯域幅の割り当て] | |
[帯域幅ピーク値] | 加速リージョンの帯域幅を設定します。各加速リージョンに 2~10,000 Mbps を割り当てることができます。 最大帯域幅はレート制限にのみ使用されます。データ転送料金は CDT が請求します。 この例では、デフォルト値の 200 Mbps を維持します。 重要 最大帯域幅が低すぎると、レート制限によりトラフィックがドロップされる可能性があります。ビジネス要件に基づいて最大帯域幅を設定してください。 |
[IP プロトコル] | Global Accelerator へのアクセスに使用する IP アドレスプロトコルを選択します。 この例では、デフォルト値の IPv4 を維持します。 |
[ISP 回線タイプ] | Global Accelerator へのアクセスに使用する ISP 回線タイプを選択します。 この例では、[BGP (マルチ ISP)] を選択します。 |
ステップ3:リスナーの設定
リスナーは、指定したポートとプロトコルに基づいて、着信接続リクエストをチェックして処理します。各リスナーは 1 つ以上のエンドポイントグループに関連付けられます。エンドポイントグループをリスナーに関連付けると、GA はそのグループ内の最適なエンドポイントにトラフィックをルーティングします。
リスナーの設定 ページで、リスナーを設定し、次へ をクリックします。
パラメーター | 説明 |
[リスナー名] | リスナーの名前を入力します。 |
[ルーティングタイプ] | ルーティングタイプを選択します。 この例では、[インテリジェントルーティング]を選択します。 |
[プロトコル] | リスナーのプロトコルを選択します。 この例では、HTTPS を選択します。 |
[ポート] | リスナーがリクエストを受信してエンドポイントに転送するポートを指定します。 有効な値: 1 ~ 65499 この例では、443 と入力します。 |
[サーバー証明書] | 取得したサーバー証明書を選択します。 この例では、証明書 A を選択します。 |
[TLS セキュリティポリシー] | 使用する TLS セキュリティポリシーを選択します。 TLS セキュリティポリシーには、HTTPS でサポートされる TLS プロトコルバージョンと暗号スイートが含まれます。詳細については、「TLS セキュリティポリシー」をご参照ください。 このパラメーターを設定しない場合、デフォルトポリシーの tls_cipher_policy_1_0 を使用します。 |
[クライアントのアフィニティ] | クライアントアフィニティを有効にするかどうかを指定します。有効にすると、同じクライアントからのすべてのリクエストを同じエンドポイントにルーティングします。この機能はステートフルなアプリケーションに適しています。 この例では、[配信元 IP アドレス]を選択します。 |
[追加の HTTP ヘッダーフィールド] | 必要な追加の HTTP ヘッダーフィールドを選択します。 この例では、デフォルトの設定を使用します。 |
ステップ4:エンドポイントグループとエンドポイントの設定
エンドポイントグループの設定 ページで、エンドポイントグループとエンドポイントを設定し、次へ をクリックします。
このセクションでは、このシナリオに特に関連性の高いパラメーターのみを説明します。詳細については、「インテリジェントルーティングリスナーのエンドポイントグループの追加と管理」をご参照ください。
パラメーター
説明
[[リージョン]]
エンドポイントグループがデプロイされるリージョンを選択します。
この例では、[US (Silicon Valley)] を選択します。
[エンドポイント設定]
エンドポイントは、クライアントリクエストの宛先ホストです。次の情報に基づいてエンドポイントを設定します。
[バックエンドサービスタイプ]:[Alibaba Cloud インターネット IP アドレス] を選択します。
[バックエンドサービス]:高速化するバックエンドサービスの IP アドレスを入力します。この例では、サーバー 1 のパブリック IP アドレスである 47.XX.XX.62 を入力します。
[重み]:エンドポイントの重みを入力します。値は 0~255 の範囲である必要があります。Global Accelerator は、重みに基づいてエンドポイントにトラフィックをルーティングします。この例では、デフォルト値の 255 を使用します。
警告エンドポイントの重みを0に設定すると、Global Acceleratorはエンドポイントへのネットワークトラフィックの配信を停止します。 作業は慎重に行ってください。
[クライアント IP の保持]
デフォルトで有効になっているクライアント IP の保持機能により、バックエンドサービスはクライアントの IP アドレスを取得できます。HTTP リスナーは、HTTP ヘッダーの x-forwarded-for フィールドからクライアントのソース IP アドレスを読み取ります。詳細については、「クライアント IP アドレスの保持」をご参照ください。
[バックエンドサービスプロトコル]
バックエンドサーバーで使用するサービスプロトコルを選択します。
デフォルトのプロトコルは HTTP です。
[ポートマッピング]
リスナーポートがエンドポイントのサービスポートと異なる場合は、ポートマッピングを設定する必要があります。
[リスナーポート]:このパラメーターは現在のリスナーのポートに設定する必要があります。この例では、443 と入力します。
[エンドポイントポート]:エンドポイントのサービスポートです。この例では、80 と入力します。
[トラフィック配分率]
エンドポイントグループに転送するトラフィックの割合を指定します。
有効値:0~100。
この例では、デフォルト値の 100% を使用します。
[ヘルスチェック]
ヘルスチェックを有効または無効にします。
この機能を有効にすると、システムはエンドポイントのヘルスステータスをチェックします。詳細については、「ヘルスチェックの有効化と管理」をご参照ください。
この例では、ヘルスチェックはデフォルトで無効になっています。
設定監査 ページで設定を確認し、送信する をクリックします。GA インスタンスの作成には約 3~5 分かかります。
オプション:インスタンスが作成されたら、タスク詳細リストの下にある インスタンスの詳細に移動する をクリックします。インスタンス詳細ページでは、インスタンス情報、リスナー、アクセラレーションエリア などのタブをクリックしてインスタンスの設定を表示できます。
仮想エンドポイントグループを設定します。
インスタンス詳細ページで、リスナー タブをクリックします。
リスナー タブで、管理するリスナーを見つけ、デフォルトのエンドポイントグループ 列のエンドポイントグループ ID をクリックします。
エンドポイントグループ タブの 仮想エンドポイントグループ セクションで、仮想エンドポイントグループの追加 をクリックします。
エンドポイントグループの追加 ページで、次の情報に基づいて設定を行い、作成済み をクリックします。
以下のパラメーターを除き、他のすべてのパラメーターはデフォルトのエンドポイントグループと同じ方法で設定します。
[バックエンドサービスタイプ]:[Alibaba Cloud インターネット IP アドレス] を選択します。
[バックエンドサービス]:サーバー 2 のパブリック IP アドレスである 47.XX.XX.34 を入力します。
[バックエンドサービスプロトコル]:HTTPS を選択します。
[ポートマッピング]:ポートマッピングは不要です。
リスナーポートがエンドポイントのサービスポートと同じ場合、ポートマッピングは不要です。Global Accelerator は自動的にアクセスリクエストをエンドポイントのサービスポートに転送します。
ステップ5:追加証明書のバインド
追加証明書を HTTPS リスナーにバインドして、別のドメインを関連付けます。ドメインベースの転送ルールと組み合わせることで、異なるドメインへのリクエストを異なる仮想エンドポイントグループにルーティングします。
以下の手順では、証明書 B をバインドしてドメイン 2 (xxxtest.fun) を HTTPS リスナーに関連付ける方法について説明します。
-
[リスナー] タブで、対象の HTTPS リスナーを見つけ、その ID をクリックします。
-
リスナーの詳細ページで、証明書 をクリックします。
-
[証明書] ページの [追加の証明書] セクションで、[証明書の関連付け] をクリックします。
証明書の関連付け ダイアログボックスで、次の情報に基づいて追加証明書を設定し、OK をクリックします。
[証明書]:バインドする証明書を選択します。この例では、証明書 B を選択します。
[関連付けられたドメイン名]:Global Accelerator を使用して高速化する、この証明書に関連付けられたドメインを選択します。この例では、ドメイン 2 (
xxxtest.fun) を選択します。
ステップ6:転送ルールの追加
HTTPS リスナーがリクエストを受信すると、カスタム転送ルールと照合します。ルールが一致する場合、リスナーは対応するエンドポイントグループにリクエストを転送します。カスタムルールが一致しない場合、リクエストはデフォルトのエンドポイントグループに転送されます。
以下の手順では、サーバー 2 の仮想エンドポイントグループに対してカスタム転送ルールを作成する方法について説明します。このルールは、ドメイン 2 (xxxtest.fun) へのすべてのリクエストをサーバー 2 にルーティングします。
-
[リスナー] タブで、対象の HTTPS リスナーを見つけ、その ID をクリックします。
リスナー詳細ページで、転送ルール タブをクリックします。
転送ルール タブで、転送ルールの追加 をクリックします。
転送ルールの追加 セクションで、次の情報に基づいて転送ルールを設定し、OK をクリックします。
パラメーター
説明
[名前]
転送ルールの名前を入力します。
[転送条件]
転送条件を設定します。
この例では、[ドメイン名]を選択し、一致させるドメイン xxxtest.fun を入力します。
[転送アクション]
アクションタイプと転送先を選択します。
この例では、[転送先]を選択し、作成した仮想エンドポイントグループを選択します。
ステップ7:CNAME レコードの設定
ドメイン 1 (xxxtest.cloud) とドメイン 2 (xxxtest.fun) を、GA インスタンスの CNAME アドレスにマッピングする必要があります。これにより、アクセスリクエストが GA を経由してルーティングされます。
[ドメイン] ページで、ドメイン (
xxxtest.cloud) を見つけ、操作 列の [DNS設定] をクリックします。ドメインが Alibaba Cloud に登録されていない場合は、DNS レコードを設定する前に Alibaba Cloud DNS コンソールにドメインを追加する必要があります。
[DNS設定] ページで、既存の A レコードを見つけ、操作 列の 編集 をクリックします。
[レコードの変更] パネルで、レコードタイプ を CNAME に設定し、レコード値 を Global Accelerator インスタンスに割り当てられた CNAME アドレスに変更して、OK をクリックします。
Global Accelerator インスタンスに割り当てられた CNAME アドレスは、インスタンス ページで確認できます。
上記の手順を繰り返し、ドメイン 2 (
xxxtest.fun) の既存の A レコードを CNAME レコードに変更します。
クライアントのリージョンに基づいて DNS 結果を返すには、Alibaba Cloud DNS をエンタープライズスタンダード版またはエンタープライズアルティメット版にアップグレードしてください。
アップグレード後、既存の A レコードのデフォルトの DNS 回線を特定のリージョン回線に変更し、Global Accelerator インスタンスに割り当てられた CNAME アドレスを指す CNAME レコードを追加できます。
ステップ8:設定のテスト
クライアントが、高速化されたアクセスで異なるドメインを介して US (Silicon Valley) にデプロイされた Web サービスにアクセスできるかどうかをテストします。
このトピックでは、Alibaba Cloud Linux 3 を例として使用します。テストコマンドはオペレーティングシステムによって異なる場合があります。特定のコマンドについては、お使いのオペレーシングシステムのドキュメントをご参照ください。
Global Accelerator サービスの高速化効果は、実際のビジネステストによって異なります。
Webサイト接続のテスト
加速エリア内のコンピューターでコマンドラインウィンドウを開きます。この例では、加速エリアは China (Hong Kong) です。
ドメイン 1 (
xxxtest.cloud) とドメイン 2 (xxxtest.fun) の両方で次のコマンドを実行し、CNAME 設定が有効になっていることを確認します。ping <website_domain>返された名前解決の結果が GA インスタンスの CNAME と一致する場合、CNAME 設定は有効です。
[root@iZjxxx ~]# ping xxx_test.cloud PING ga-bp1xxx9.com (8.217.xxx.xxx) 56(84) bytes of data. 64 bytes from 8.217.xxx.xxx (8.217.xxx.xxx): icmp_seq=1 ttl=101 time=1.59 ms 64 bytes from 8.217.xxx.xxx (8.217.xxx.xxx): icmp_seq=2 ttl=101 time=1.59 ms 64 bytes from 8.217.xxx.xxx (8.217.xxx.xxx): icmp_seq=3 ttl=101 time=1.60 ms ^C --- ga-bp1xxx9.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 1.593/1.595/1.598/0.002 ms [root@iZjxxx ~]# ping xxx_test.fun PING ga-bp1xxx.com (8.217.xxx.xxx) 56(84) bytes of data. 64 bytes from 8.217.xxx.xxx (8.217.xxx.xxx): icmp_seq=1 ttl=96 time=1.58 ms 64 bytes from 8.217.xxx.xxx (8.217.xxx.xxx): icmp_seq=2 ttl=96 time=1.53 ms 64 bytes from 8.217.xxx.xxx (8.217.xxx.xxx): icmp_seq=3 ttl=96 time=1.51 ms ^C --- ga-bp1xxx9.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 1.508/1.539/1.576/0.042 msドメイン 1 (
xxxtest.cloud) とドメイン 2 (xxxtest.fun) で次のコマンドを実行して Web サイトの接続をテストし、証明書を取得できることを確認します。curl -v https://<website_domain> --resolve <website_domain>:<listener_port>:<accelerated_IP>ドメイン 1 (
xxxtest.cloud) の次のテスト結果を例とします。出力に証明書情報と有効な応答が含まれている場合、Web サイトサービスは期待どおりに機能しています。[root@iZxxx]# curl -v https://xxx_test.cloud --resolve xxx_test.cloud:443:8.217.xxx * Added xxx_test.cloud:443:8.217.xxx to DNS cache * Rebuilt URL to: https://xxx_test.cloud/ * Hostname xxx_test.cloud was found in DNS cache * Trying 8.217.xxx... * TCP_NODELAY set * Connected to xxx_test.cloud (8.217.xxx) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=xxx_test.cloud * start date: Mar 1 00:00:00 2024 GMT * expire date: Mar 31 23:59:59 2025 GMT * subjectAltName: host "xxx_test.cloud" matched cert's "xxx_test.cloud" * issuer: C = US; O = DigiCert Inc; CN = DigiCert Global G2 TLS RSA SHA256 2020 CA1 * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * Using Stream ID: 1 (easy handle 0x55d6e15b76b0) > GET / HTTP/2 > Host: xxx_test.cloud > User-Agent: curl/7.61.1 > Accept: */* > * Connection state changed (MAX_CONCURRENT_STREAMS == 128)! < HTTP/2 200 < date: Thu, 14 Sep 2023 09:00:09 GMT < content-type: text/html < content-length: 299 < last-modified: Mon, 11 Sep 2023 10:27:09 GMT < etag: "64feeb7d-12b" < accept-ranges: bytes < <!DOCTYPE html> <html> <head> <title>HTTP Server Test Page</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to HTTP Server Test Page!</h1> <p>This is ECS01.</p> </body> </html> * Connection #0 to host xxx_test.cloud left intact
アクセラレーションパフォーマンスのテスト
アクセラレーションパフォーマンスをテストするには、「Global Accelerator のアクセラレーションパフォーマンスのテスト」をご参照ください。