HTTPS サービスに Global Accelerator (GA) を使用している場合、バックエンドサービスへの接続に HTTP/2 を有効にできます。これにより、HTTP/2 の機能を利用してパフォーマンスを向上させ、レイテンシーを短縮し、ネットワークオーバーヘッドを削減できます。
HTTP/2 とは
HTTP/2 ネゴシエーション
HTTPS 接続では、クライアントとサーバーはアプリケーションデータを送信する前に Transport Layer Security (TLS) 接続を確立する必要があります。HTTP/2 をサポートするために、ハンドシェイクではアプリケーション層プロトコルネゴシエーション (ALPN) を使用して、使用するプロトコルバージョンを決定します。
Global Accelerator で HTTP/2 を有効にすると、Global Accelerator は TLS ハンドシェイク中に ClientHello メッセージの ALPN フィールドに h2 を指定します。Global Accelerator はその後、ServerHello メッセージでサーバーから返されたプロトコルバージョンを無視し、バックエンドサービスへの HTTP/2 接続を強制します。
ユースケース
このトピックでは、次のシナリオを使用します。ある企業は米国 (シリコンバレー) に本社を置き、Alibaba Cloud Elastic Compute Service (ECS) インスタンスで HTTPS ウェブサイトをホストしています。クライアントのほとんどは中国 (香港) にいます。この企業は、不安定なクロスボーダーのパブリックネットワークによって引き起こされるレイテンシー、ジッター、パケットロスなどのネットワーク問題を軽減するために Global Accelerator を使用しています。
ウェブサイトのパフォーマンスとユーザーエクスペリエンスをさらに向上させるために、この企業は HTTP/2 プロトコルを採用する予定です。
デフォルトでは、Global Accelerator がバックエンドサービスプロトコルとして HTTPS に設定されている場合、HTTP/1.1 を使用してバックエンドサービスに接続します。プロトコルのパフォーマンス向上を最大限に活用するために、この企業は Global Accelerator インスタンスの設定を変更して、バックエンド接続に HTTP/2 を指定する必要があります。
制限事項
Global Accelerator が HTTP/2 を使用してバックエンドサービスに接続するように設定する場合、次の制限事項が適用されます。
-
お使いの Global Accelerator インスタンスで[プロトコルバージョン] オプションが利用できない場合、そのインスタンスではこの機能がサポートされていない可能性があります。有効にするには、アカウントマネージャーに連絡してインスタンスのアップグレードを依頼してください。
WebSocket プロトコルはサポートされていません。
HTTP/2 プロトコルのサーバープッシュ機能はサポートされていません。
HTTP/2 に基づく gRPC リクエストは高速化できません。
前提条件
-
証明書管理サービスコンソールでサーバー証明書が購入またはアップロードされていること。詳細については、「公式証明書の購入」および「SSL 証明書のアップロード、同期、共有」をご参照ください。
-
証明書ファイルがバックエンドサーバーにアップロードされていること。詳細については、「Cloud Assistant を使用した ECS インスタンスへのファイルのアップロード」をご参照ください。
-
バックエンドサーバーのポート 443 に HTTPS サービスがデプロイされており、HTTP/2 プロトコルバージョンが有効になっていること。
バックエンドサーバーのセキュリティグループで、TCP ポート 443 でのインバウンドトラフィックを許可するルールを追加していることを確認してください。詳細については、「セキュリティグループルールの追加」をご参照ください。
-
Global Accelerator インスタンスが作成され、バックエンドサーバーがエンドポイントとして追加され、バックエンドサービスプロトコルが HTTPS に設定されていること。詳細については、「標準 Global Accelerator インスタンスの作成と管理」をご参照ください。
-
ドメインが、Global Accelerator インスタンスによって割り当てられた CNAME アドレスにマッピングされていること。詳細については、「CNAME レコードの追加」をご参照ください。
バックエンド接続のための HTTP/2 の設定
このセクションでは、このシナリオに関連する主要な設定項目のみを説明します。エンドポイントグループの設定の詳細については、「インテリジェントルーティングリスナーのエンドポイントグループの追加と管理」をご参照ください。
- Global Acceleratorコンソールにログインします。
-
インスタンスページで対象の GA インスタンスを見つけ、操作 列の リスナーの設定 をクリックします。
-
リスナー タブで、目的のリスナーを見つけ、操作 列の ノードグループの編集 をクリックします。
-
ウィザードのリスナーとプロトコルの設定のステップで、次へをクリックします。
-
ウィザードの エンドポイントの設定 ステップで、プロトコルのバージョン を HTTP/2 に設定し、次へ をクリックします。
[バックエンドサービスプロトコル] を [HTTPS] に、[プロトコルバージョン] を [HTTP/2] に設定します。
-
設定監査 ステップで、設定を確認し、送信する をクリックします。
結果の検証
HTTP/2 が有効になっていることを確認するには、プロトコルバージョンを変更する前と後に次の手順を実行します。
-
中国 (香港) リージョンのクライアントからブラウザーを開き、
https://<アクセラレーション対象ドメイン名>と入力します。バックエンドサービスに正常にアクセスできるはずです。 -
米国 (シリコンバレー) リージョンのバックエンドサーバーで、コマンドラインウィンドウを開き、次のコマンドを実行して最新のアクセスレコードを表示します。
アクセスレコードには、リクエストをバックエンドサーバーに転送するために使用されたプロトコルバージョンが表示されます。
tail -n 1 /var/log/nginx/access.logプロトコルバージョンを設定する前は、アクセスログはオリジンリクエストが
HTTP/1.1プロトコルを使用していることを示しています。[root@iZxxx ~]# tail -n 1 /var/log/nginx/access.log 172.20.xxx - - [30/Jul/2024:14:40:40 +0800] "GET / HTTP/1.1" 200 27 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0 Safari/537.36 Edg/126.0.0.0" "47.76.xxx"プロトコルバージョンを HTTP/2 に設定すると、アクセスログはオリジンリクエストが HTTP/2.0 を使用していることを示しています。
[root@iZrj95wxxx xxx ~]# tail -n 1 /var/log/nginx/access.log 172.20.xxx.xxx - - [30/Jul/2024:14:42:55 +0800] "GET / HTTP/2.0" 200 27 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0 Safari/537.36 Edg/126.0.0" "47.76.xxx.xxx"
関連ドキュメント
チュートリアル
-
エンドポイントグループ設定の詳細については、「インテリジェントルーティングリスナーのエンドポイントグループの追加と管理」をご参照ください。
-
クライアントとの接続を HTTP/3 にアップグレードするには、クライアントから Global Accelerator へのアクセスの最大 HTTP バージョンを HTTP/3 に設定します。詳細については、「HTTP/3 を使用してアプリケーションのアクセスエクスペリエンスを向上させる」をご参照ください。
関連 API
-
CreateEndpointGroup:エンドポイントグループを作成します。
EndpointProtocolVersionパラメーターを使用して、バックエンドサービスに接続するためのプロトコルバージョンを指定します。 -
UpdateEndpointGroup:エンドポイントグループのビジネス設定を変更します。
EndpointProtocolVersionパラメーターを使用して、バックエンドサービスに接続するためのプロトコルバージョンを指定します。 -
DeleteEndpointGroup:エンドポイントグループを削除します。