Quick UDP Internet Connections (QUIC) は、ネットワーク遅延を削減し、head-of-line ブロッキングを排除するトランスポートプロトコルです。これにより、損失の多いネットワークやモバイルネットワーク上でのストリーミングおよびリアルタイムアプリケーションに適しています。このトピックでは、Application Load Balancer (ALB) インスタンスに QUIC リスナーを追加する方法について説明します。
QUIC の概要
QUIC は SSL と同レベルのセキュリティを提供し、接続多重化をサポートします。接続が不安定な状況、高いネットワーク遅延、高いパケット損失率のシナリオでは、QUIC はサービス可用性を確保します。QUIC は、オペレーティングシステムやカーネルに関係なく、アプリケーション層で異なる輻輳制御アルゴリズムを実装でき、TCP よりも柔軟性があります。TCP の最適化がボトルネックに直面した場合、QUIC は適切な代替手段となります。
ショートビデオやライブストリーミングサービスの人気が高まるにつれて、ストリーミングプラットフォームは高帯域幅と低いネットワーク遅延を必要としています。QUIC はネットワーク遅延を最小限に抑え、ビデオバッファリングを削減し、オーディオおよびビデオコンテンツの配信を高速化し、データ転送を保護します。
サポートされている QUIC バージョン
ALB は 2 つの QUIC バリアントをサポートしています。
| バリアント | バージョン | 必要なクライアント |
|---|---|---|
| gQUIC (Google QUIC) | Q46, Q43, Q39 | Google Chrome 74 ~ 81 |
| iQUIC (IETF QUIC) | h3 (HTTP/3) | Google Chrome 87 以降 |
HTTP/3 は iQUIC 上に構築されており、多重化、輻輳制御、パケット損失検出、および再送を追加します。HTTP/3 は、より高速な接続確立をサポートし、head-of-line ブロッキングの問題を排除し、クライアント IP アドレスの変更シナリオでの接続移行をサポートします。
ユースケース
| シナリオ | 仕組み |
|---|---|
| QUIC リスナーのみ | すべてのクライアントは HTTP/3 をサポートしている必要があります。 |
| QUIC リスナー + HTTPS リスナー | ALB はクライアントとネゴシエートし、HTTP/3 を優先します。クライアントが HTTP/3 をサポートしていない場合、ALB は自動的に HTTPS または HTTP/2 にフォールバックします。詳細については、「HTTPS リスナーの追加」および「QUIC を使用したオーディオおよびビデオコンテンツ配信の高速化」をご参照ください。 |
前提条件
開始する前に、次のことを確認してください。
ALB インスタンスがあること。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
ALB インスタンスに少なくとも 1 つの SSL サーバー証明書がデプロイされていること。
バックエンドサーバーグループ。詳細については、「サーバーグループを作成および管理する」をご参照ください。
リスナーの追加
ALB は、QUIC リスナーを追加する 2 つの方法を提供します。
手動作成: タイムアウト、圧縮、HTTP ヘッダーなどの詳細オプションを含む、すべてのリスナー設定を構成します。
クイック作成: リスナープロトコル、リスナーポート、SSL 証明書、バックエンドサーバーグループなど、必須パラメーターのみを指定します。
手動作成
ステップ 1: リスナーの構成
ALB コンソールにログインします。
次のいずれかの方法を使用して、リスナー作成ウィザードを開きます。
「[インスタンス]」ページで、ALB インスタンスを見つけ、「[リスナーの作成]」を「[操作]」列でクリックします。
[インスタンス] ページで、ALB インスタンスの ID をクリックします。[リスナー] タブで、[リスナーの作成] をクリックします。
[リスナーの設定] ページで、次のパラメーターを設定し、[次へ] をクリックします。 X-Forwarded-For の動作
クライアント IP アドレスを保持するために X-Forwarded-For を追加するを選択した場合は、次のいずれかのモードを選択します。クライアント IP アドレスを保持するために X-Forwarded-For を追加するを選択しない場合、ALB はX-Forwarded-Forヘッダーを変更しません。 次の表は、最終ホップ IP が127.0.0.1である場合に、各モードでX-Forwarded-Forヘッダーがどのように変更されるかを示しています。 詳細については、「Application Load Balancer を介してバックエンドサーバーでクライアントの送信元 IP アドレスを取得する」をご参照ください。[追加] (デフォルト): ALB は、最終ホップの IP アドレスを
X-Forwarded-Forヘッダーに追加します。リクエストにこのヘッダーが含まれていない場合、ALB はそれを作成します。ヘッダーには、コンマ区切りの複数の IP アドレスが含まれる場合があります。X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …削除: ALB は、リクエストを転送する前に
X-Forwarded-Forヘッダーを削除します。
QUIC リスナーに
X-Forwarded-ForおよびX-Forwarded-Client-srcportヘッダーを追加できるのは、スペックアップされた ALB インスタンスパラメーター 説明 リスナープロトコル QUIC を選択します。 リスナーポート ALB インスタンスがリクエストを受信し、バックエンドサーバーに転送するために使用するポートです。 値の範囲は 1~65535 です。 同じ ALB インスタンスでは、同じプロトコルを使用するリスナーは一意のポートを使用する必要があります。 HTTP リスナーと HTTPS リスナーは、異なるポートを使用する必要があります。 リスナー名 リスナーの名前を入力します。 タグ [タグキー]タグ値[リスナー] と を設定して、1 つ以上のタグを追加します。 タグを使用すると、 タブでリスナーを絞り込むことができます。 詳細設定 [変更] をクリックして、次のオプションを設定します。 アイドル接続タイムアウト期間 アイドル接続のタイムアウト期間 (単位:秒) です。 値の範囲は 1~600 です。 デフォルト値は 15 です。この期間内にリクエストが受信されない場合、ALB は接続を閉じ、次のリクエストが到着したときに新しい接続を確立します。 より長いタイムアウトを設定するには、クォータセンターコンソールに移動してください。 接続リクエストタイムアウト バックエンドサーバーからの応答タイムアウト期間 (単位:秒) です。 値の範囲は 1~600 です。 デフォルト値は 60 です。この期間内にバックエンドサーバーが応答しない場合、ALB はクライアントに HTTP 504 を返します。 より長いタイムアウトを設定するには、クォータセンターコンソールに移動してください。 圧縮 有効にすると、ALB はクライアントにファイルを送信する前に圧縮します。 Brotli はすべてのファイルタイプをサポートします。 GZIP は、 text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、application/xml、およびapplication/jsonをサポートします。 クライアントリクエストが Brotli と GZIP の両方を受け入れる場合、ALB は Brotli を使用します。 クライアントリクエストが GZIP のみを受け入れ、かつ GZIP がサポートしていないファイルタイプが 1 つ以上含まれる場合、ALB はどのファイルも圧縮しません。HTTP ヘッダーの追加 転送リクエストに追加するヘッダーを選択します: クライアント IP アドレスを保持するために X-Forwarded-For を追加、SLB インスタンス ID を保持するために SLB-ID を追加、リスナープロトコルを保持するために X-Forwarded-Proto を追加、SLB リスナーポートを保持するために X-Forwarded-Port を追加、クライアントドメイン名を保持するために X-Forwarded-Host を追加。受信リクエスト 追加 (デフォルト) 削除 未選択 X-Forwarded-ForヘッダーなしX-Forwarded-For: 127.0.0.1ヘッダーは存在しません ヘッダーは存在しません X-Forwarded-For: 127.0.0.2X-Forwarded-For: 127.0.0.2, 127.0.0.1ヘッダーは存在しません X-Forwarded-For: 127.0.0.2X-Forwarded-For: 127.0.0.2, 127.0.0.3X-Forwarded-For: 127.0.0.2, 127.0.0.3, 127.0.0.1ヘッダーは存在しません X-Forwarded-For: 127.0.0.2, 127.0.0.3
ステップ 2: SSL 証明書の追加
サーバー証明書を、[サーバー証明書] ドロップダウンリストから選択します。証明書が利用できない場合は、[SSL 証明書の作成] をクリックして、購入またはアップロードを行います。詳細については、「SSL 証明書の購入」と「SSL 証明書のアップロード」をご参照ください。
新しく追加された証明書が ALB に追加されてから有効になるまで 1 ~ 3 分かかります。
[次へ] をクリックします。
ステップ 3: バックエンドサーバーグループの選択
バックエンドサーバーグループを選択し、バックエンドサーバーを確認して、[次へ] をクリックします。
ステップ 4: 確認と提出
構成を確認し、[送信] をクリックします。
クイック作成
クイック作成では、必須パラメーターのみで QUIC リスナーを設定できます。
ALB コンソールにログインします。
上部のナビゲーションバーで、ALB インスタンスが存在するリージョンを選択します。
[インスタンス] ページで、ALB インスタンスの ID をクリックします。
[リスナー] タブで、[リスナーのクイック作成] をクリックします。
[クイック作成リスナー] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 説明 リスナープロトコル QUIC**[QUIC]** を選択します。 リスナー ポート リクエストを受信し、バックエンドサーバーに転送するフロントエンドのポートです。有効な値:1 ~ 65535。 サーバー証明書 [SSL 証明書の作成]SSL 証明書の購入」および「SSL 証明書のアップロード」をご参照ください。 リソースグループ サーバーグループに割り当てるリソースグループを選択します。 サーバーグループ 左側のドロップダウンリストからサーバーグループの種別を選択し、右側のドロップダウンリストから対象のサーバーグループを選択します。
次のステップ
高度なリクエストルーティングの構成: リスナーの転送ルールを管理する
状態コードエラーのトラブルシューティング: ALB 状態コード
ヘルスチェックの問題のトラブルシューティング: ALB ヘルスチェックの問題のトラブルシューティング
QUIC を使用したオーディオおよびビデオ配信の高速化: QUIC を使用したオーディオおよびビデオコンテンツ配信の高速化