Quick UDP Internet Connections (QUIC) は、ネットワーク品質を向上させ、ネットワーク信号が弱い場合や Wi-Fi とセルラーネットワーク間の頻繁な切り替えが発生するシナリオでの動画の停止問題に対処するための理想的なプロトコルです。 QUIC を使用すると、転送中のデータセキュリティを維持しながら、オーディオおよびビデオコンテンツの配信を高速化できます。このトピックでは、データ転送が暗号化された QUIC リクエストを転送するために、Application Load Balancer (ALB) インスタンスに QUIC リスナーを追加する方法について説明します。
QUIC の概要
QUIC は SSL と同レベルのセキュリティを提供し、接続多重化をサポートしています。接続が弱い、ネットワーク遅延が大きい、パケット損失率が高いなどのシナリオでは、QUIC はサービスの可用性を確保します。 QUIC は、オペレーティングシステムやカーネルに関係なく、アプリケーション層でさまざまな輻輳制御アルゴリズムを実装できます。 TCP と比較して、QUIC はサービス要件に基づいて柔軟な調整をサポートしています。 QUIC は、TCP の最適化がボトルネックに遭遇した場合の適切な代替手段です。
ショートビデオやライブストリーミングサービスの人気が高まるにつれ、ストリーミングプラットフォームはビジネス要件を満たすために高帯域幅と低ネットワーク遅延を必要としています。 QUIC は、ネットワーク遅延を最小限に抑え、ビデオバッファリングを削減し、オーディオおよびビデオコンテンツの配信を高速化し、データ転送を保護できます。
サポートされている QUIC プロトコルタイプ
ALB は gQUIC と iQUIC をサポートしています。 HTTP/3 は、iQUIC に基づくアプリケーション層プロトコルです。 HTTP/3 は iQUIC を使用して、多重化、輻輳制御、パケット損失検出、および再送を実装します。 HTTP/3 は、より高速な接続確立をサポートし、head-of-line ブロッキングの問題を解消し、クライアント IP アドレス変更のシナリオでの接続移行をサポートします。
ALB は、Google Chrome 74 ~ 81 を必要とする gQUIC バージョン Q46、Q43、および Q39 をサポートしています。
ALB は、Google Chrome 87 以降を必要とする HTTP/3 のバージョン h3 をサポートしています。
ユースケース
シナリオ | 説明 |
QUIC リスナーのみを使用する | すべてのクライアントが HTTP/3 をサポートしている必要があります。 |
HTTPS リスナーとともに QUIC リスナーを使用する | ALB はクライアントとネゴシエートして、優先的に HTTP/3 を使用します。クライアントが HTTP/3 をサポートしていない場合は、HTTPS または HTTP/2 が使用されます。 詳細については、以下のトピックをご参照ください。 |
前提条件
ALB インスタンスが作成されていること。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
少なくとも 1 つの SSL サーバー証明書が ALB インスタンスにデプロイされていること。
バックエンドサーバーグループが作成されていること。詳細については、「サーバーグループの作成と管理」をご参照ください。
手順
このトピックでは、QUIC リスナーを追加する方法を示す 2 つの手順について説明します。必要に応じていずれかを選択できます。
手動作成
手順 1: リスナーを作成する
QUIC リスナーを作成するには、次の手順を実行します。
ALB コンソール にログインします。
次のいずれかの方法を使用して、リスナー構成ウィザードを開きます。
インスタンス ページで、管理する ALB インスタンスを見つけ、操作 列の リスナーの作成 をクリックします。
インスタンス ページで、管理する NLB インスタンスの ID をクリックします。 リスナー タブで、リスナーの作成 をクリックします。
リスナーの設定 ウィザードページで、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター
説明
リスナープロトコルの選択
リスナープロトコルを選択します。
この例では、[QUIC] が選択されています。
リスナーポート
ALB インスタンスが listen するポートを選択します。 ALB インスタンスはポートで listen し、リクエストをバックエンドサーバーに転送します。
有効な値: 1 ~ 65535。
説明同じ ALB インスタンスでは、同じプロトコルを使用するリスナーのポートは一意である必要があります。 HTTP リスナーと HTTPS リスナーは異なるポートを使用する必要があります。
リスナー名
リスナーの名前を入力します。
タグ
[タグキー] パラメーターと [タグ値] パラメーターを構成して、タグを追加します。 1 つ以上のタグを追加できます。
タグを指定した後、[リスナー] タブでタグ別にリスナーをフィルタリングできます。
[詳細設定]
[変更] をクリックして、詳細設定を構成できます。
アイドル接続タイムアウト期間
アイドル接続のタイムアウト期間を指定します。単位: 秒。有効な値: 1 ~ 60。より長いタイムアウト期間を指定するには、クォータセンターコンソール にアクセスしてください。
指定されたタイムアウト期間内にリクエストが受信されない場合、ALB は接続を閉じます。別のリクエストが受信されると、ALB は新しい接続を確立します。
[接続リクエストタイムアウト]
リクエストタイムアウト期間を指定します。単位: 秒。有効な値: 1 ~ 180。より長いタイムアウト期間を指定するには、クォータセンターコンソール にアクセスしてください。
リクエストタイムアウト期間内にバックエンドサーバーから応答が受信されない場合、ALB はクライアントに HTTP 504 エラーコードを返します。
[圧縮]
圧縮を有効にすると、特定の種類のファイルが圧縮されます。圧縮を無効にすると、ファイルは圧縮されません。
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 圧縮のみが許可されており、少なくとも 1 つのファイルが GZIP でサポートされていない形式である場合、ALB はファイルを圧縮しません。
[HTTP ヘッダーの追加]
次のオプションを選択できます。
X-Forwarded-For を追加してクライアント IP アドレスを保持する
: クライアント IP アドレスを保持するために X-Forwarded-For ヘッダーを追加しますX-Forwarded-For を追加してクライアント IP アドレスを保持する
を選択すると、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストにX-Forwarded-For
ヘッダーを追加したり、リクエストからX-Forwarded-For
ヘッダーを削除したりできます。[追加] (デフォルト)
[追加] を選択すると、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストの X-Forwarded-For ヘッダーに最後のホップの IP アドレスを追加します。リクエストに X-Forwarded-For ヘッダーが含まれていない場合、ALB は値が最後のホップの IP アドレスである X-Forwarded-For ヘッダーを作成し、リクエストにヘッダーを追加します。リクエストの X-Forwarded-For ヘッダーには、コンマ (,) で区切られた複数の IP アドレスが含まれている場合があります。
[削除]
[削除] を選択すると、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストから
X-Forwarded-For
ヘッダーを削除します。
X-Forwarded-For を追加してクライアント IP アドレスを保持する
を選択しない場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストのX-Forwarded-For
ヘッダーについては何もしません。
フォーマット:
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …
SLB-ID を追加して SLB インスタンス ID を保持する
: ALB インスタンスの ID を保持するために SLB-ID ヘッダーを追加します。X-Forwarded-Proto を追加してリスナープロトコルを保持する
: リスナープロトコルを保持するために X-Forwarded-Proto ヘッダーを追加します。X-Forwarded-Port を追加して SLB リスナーポートを保持する
: リスナーポートを保持するために X-Forwarded-Port ヘッダーを追加します。X-Forwarded-Host を追加してクライアントドメイン名を保持する
: ALB にアクセスするクライアントのドメイン名を保持するために X-Forwarded-Host ヘッダーを追加します。
説明アップグレードされた ALB インスタンスのみが、QUIC リスナーの作成時に
X-Forwarded-For
ヘッダーとX-Forwarded-Client-srcport
ヘッダーの追加をサポートしています。
手順 2: SSL 証明書を追加する
データ転送が暗号化され、ユーザーの ID が信頼できる機関によって検証されるように、SSL 証明書を構成します。詳細については、SSL Certificates Service をご参照ください。
新しい証明書のアップロード、ロード、および検証には時間がかかります。 ALB に追加された後、証明書が有効になるまで約 1 ~ 3 分かかります。
[SSL 証明書の構成] ステップで、サーバー証明書を選択するか、サーバー証明書のドロップダウンリストで [SSL 証明書の作成] をクリックして、新しい証明書を購入します。 [次へ] をクリックします。
サーバー証明書がない場合は、[SSL 証明書の作成] をクリックして作成します。詳細については、「SSL 証明書の購入」および「SSL 証明書をアップロードする」をご参照ください。
手順 3: サーバーグループを選択する
[サーバーグループの選択] ステップで、サーバーグループを選択し、バックエンドサーバーを表示して、[次へ] をクリックします。
手順 4: 構成を確認する
[構成の確認] ステップで、構成を確認し、[送信] をクリックします。
クイック作成
この方法を選択した場合は、リスナープロトコル、リスナーポート、サーバー証明書、およびサーバーグループを指定するだけで済みます。
ALB コンソール にログインします。
上部のナビゲーションバーで、ALB インスタンスが存在するリージョンを選択します。
[インスタンス] ページで、管理する ALB インスタンスを見つけ、その ID をクリックします。
[リスナー] タブをクリックします。 [リスナー] タブで、[リスナーのクイック作成] をクリックします。
[リスナーのクイック作成] ダイアログボックスで、パラメーターを構成し、[OK] をクリックします。次の表にパラメーターを示します。
パラメーター
説明
リスナープロトコルの選択
リスナープロトコルを選択します。この例では、[QUIC] が選択されています。
リスナーポート
リクエストを受信してバックエンドサーバーに転送するために使用されるフロントエンドポート。
一般的に使用されるポートを選択するか、ポート番号を入力できます。有効な値: 1 ~ 65535。
[サーバー証明書]
ドロップダウンリストからサーバー証明書を選択します。
サーバー証明書がない場合は、[SSL 証明書の作成] をクリックして作成します。詳細については、「SSL 証明書の購入」および「SSL 証明書のアップロード」をご参照ください。
[リソースグループ]
サーバーグループのリソースグループを選択します。
サーバーグループ
左側のドロップダウンリストからサーバーグループタイプを選択し、右側のドロップダウンリストからサーバーグループを選択します。
関連情報
ALB が提供する高度な転送機能を使用するには、「リスナーの転送ルールを管理する」をご参照ください。
ALB から返された異常な状態コードが発生した場合は、「ALB の状態コード」をご参照ください。
ヘルスチェックエラーが発生した場合は、「ALB ヘルスチェックの問題のトラブルシューティング」をご参照ください。
QUIC リスナーを構成してコンテンツ配信を高速化する方法については、「QUIC を使用してビデオおよびオーディオコンテンツの配信を高速化する」をご参照ください。