ネットワーク信号が弱い場合や、Wi-Fi とモバイルネットワークを頻繁に切り替える場合、Quick UDP Internet Connections (QUIC) プロトコルは、ネットワークや動画の途切れを減らすことができます。QUIC は、オーディオおよびビデオのリソースへのアクセスを改善し、データ転送を保護します。暗号化された接続を持つ QUIC リスナーを作成して、QUIC プロトコルを使用するリクエストを転送できます。
QUIC プロトコルの概要
QUIC は SSL と同レベルのセキュリティを提供し、接続の多重化をサポートします。接続が弱い、ネットワーク遅延が大きい、パケット損失率が高いシナリオでは、QUIC はサービスの可用性を保証します。QUIC は、オペレーティングシステムやカーネルに関係なく、アプリケーション層でさまざまな輻輳制御アルゴリズムを実装できます。TCP と比較して、QUIC はサービス要件に基づいて柔軟な調整をサポートします。QUIC は、TCP の最適化がボトルネックに遭遇した場合の適切な代替手段です。
ショートビデオやライブストリーミングサービスが普及するにつれて、ストリーミングプラットフォームはビジネス要件を満たすために高い帯域幅と低いネットワーク遅延を必要とします。QUIC はネットワーク遅延を最小限に抑え、ビデオバッファリングを減らし、オーディオおよびビデオコンテンツの配信を高速化し、データ転送を保護します。
サポートされている QUIC プロトコルタイプ
Application Load Balancer (ALB) は gQUIC と iQUIC をサポートしています。HTTP/3 プロトコルは iQUIC 上に構築されたアプリケーション層プロトコルです。多重化、輻輳制御、損失検出、再送などの機能を実装するために iQUIC に依存しています。HTTP/3 プロトコルはクライアント接続をより速く開始し、多重化されたストリームでの head-of-line ブロッキングを排除し、クライアントの IP アドレスが変更されたときの接続移行をサポートします。
ALB は gQUIC バージョン Q46、Q43、Q39 をサポートしており、これらは Chrome バージョン 74 から 81 に対応しています。
ALB は HTTP/3 バージョン h3 をサポートしており、これは Chrome バージョン 87 以降に対応しています。
QUIC リスナーのシナリオ
シナリオ | 説明 |
QUIC リスナーを単独で使用する | すべてのクライアントが HTTP/3 プロトコルをサポートする必要があります。 |
QUIC リスナーを HTTPS リスナーと併用する | クライアントが HTTP/3 プロトコルを完全にサポートしていない場合、ALB は自動的にネゴシエーションを行い、HTTP/3 を優先します。ネゴシエーションが失敗した場合、HTTPS または HTTP/2 にフォールバックします。 詳細情報: |
前提条件
Application Load Balancer (ALB) インスタンスを作成します。詳細については、「ALB インスタンスの作成と管理」をご参照ください。
ALB インスタンスに少なくとも 1 つの SSL サーバー証明書をデプロイします。
バックエンドサーバーグループを作成します。詳細については、「サーバーグループの作成と管理」をご参照ください。
手順
このトピックでは、QUIC リスナーを作成する 2 つのメソッドについて説明します。必要に応じてメソッドを選択できます。
QUIC リスナーの作成: ビジネスニーズに基づいて、詳細設定などの機能をカスタマイズします。
QUIC リスナーのクイック作成: リスナープロトコル、リスナーポート、サーバー証明書、およびバックエンドサーバーグループのみを設定してリスナーを作成します。
QUIC リスナーの作成
ステップ 1: リスナーの設定
QUIC リスナーを設定するには、次のステップを実行します。
Application Load Balancer (ALB) コンソール にログインします。
次のいずれかの方法を使用して、リスナー設定ウィザードを開きます。
インスタンス ページで、ターゲットインスタンスを見つけます。操作 列で、リスナーの作成 をクリックします。
インスタンス ページで、ターゲットインスタンス ID をクリックします。リスナー タブで、リスナーの作成 をクリックします。
リスナーの設定 ウィザードで、次の設定を指定し、[次へ] をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナーのプロトコルを選択します。
この例では、[QUIC] を選択します。
リスナーポート
リクエストを受信してバックエンドサーバーに転送するために使用するリスナーポートを入力します。
ポート範囲は 1~65535 です。
説明同じ ALB インスタンス内では、同じプロトコルのリスナーは同じポートを使用できません。HTTP リスナーと HTTPS リスナーは同じポートを使用できません。
リスナー名
リスナーの名前を入力します。
タグ
[タグキー] と [タグ値] を設定します。
タグを設定すると、[リスナー] タブでタグによってリスナーをフィルターできます。
詳細設定
[変更] をクリックして詳細設定を展開します。
アイドル接続タイムアウト期間
アイドルタイムアウト期間を指定します。値は 1~600 秒である必要があります。デフォルト値は 15 秒です。より大きなクォータをリクエストするには、Quota Center に移動してください。
タイムアウト期間内にリクエストが受信されない場合、ALB は接続を終了します。次のリクエストが到着すると、新しい接続が確立されます。
リクエストタイムアウト
リクエストタイムアウト期間を指定します。値は 1~600 秒である必要があります。デフォルト値は 60 秒です。より大きなクォータをリクエストするには、Quota Center に移動してください。
タイムアウト期間内にバックエンドサーバーが応答しない場合、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。
説明データ圧縮は、応答の
Content-Lengthが 1024 バイトを超えた場合にのみトリガーされます。クライアントリクエストが Brotli と Gzip の両方をサポートしている場合、ALB はより効率的な Brotli を使用します。
クライアントが Gzip のみをサポートし、ファイルタイプが Gzip でサポートされていない場合、ALB はファイルを圧縮しません。
HTTP ヘッダーフィールドの追加
追加するカスタム HTTP ヘッダーフィールドを選択します:
送信元クライアント IP アドレスを取得するために
X-Forwarded-Forヘッダーフィールドを有効にするかどうかを選択します。クライアント IP アドレスを保持するために X-Forwarded-For を追加するを選択した場合、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ヘッダーを削除します。
クライアント IP アドレスを保持するために X-Forwarded-For を追加するを選択しない場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエスト内のX-Forwarded-Forヘッダーに対して何もしません。
フォーマット:
X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …SLB-IDヘッダーフィールドを使用して SLB インスタンスの ID を取得します。X-Forwarded-Protoヘッダーフィールドを使用して SLB インスタンスのリスナープロトコルを取得します。X-Forwarded-Portヘッダーフィールドを使用して SLB インスタンスのリスナーポートを取得します。X-Forwarded-Hostヘッダーフィールドを使用して、クライアントが SLB インスタンスにアクセスするために使用したドメイン名を取得します。X-Forwarded-Client-srcportヘッダーフィールドを追加して、SLB インスタンスにアクセスするクライアントのポートを取得します。
説明スペックアップされた ALB インスタンス のみ、QUIC リスナーを作成する際に
X-Forwarded-ForおよびX-Forwarded-Client-srcportヘッダーフィールドの追加をサポートします。
ステップ 2: SSL 証明書の設定
サービスを暗号化し、認証局による認証を受けるために SSL 証明書を設定します。詳細については、「SSL 証明書」をご参照ください。
新しい証明書を ALB インスタンスに適用した後、変更が有効になるまでに約 1 分かかり、3 分を超えることはありません。
[SSL 証明書の設定] ウィザードで、[サーバー証明書] ドロップダウンリストからサーバー証明書を選択するか、[証明書の作成] をクリックします。次に、[次へ] をクリックします。
利用可能なサーバー証明書がない場合は、ドロップダウンリストの [証明書の作成] をクリックして新しい証明書を作成できます。詳細については、「商用証明書の購入」および「SSL 証明書のアップロード」をご参照ください。
ステップ 3: サーバーグループの選択
[サーバーグループの選択] ウィザードで、サーバーグループを選択し、バックエンドサーバー情報を確認して、[次へ] をクリックします。
ステップ 4: 設定の確認
[設定の確認] ウィザードで、設定を確認し、[送信] をクリックします。
QUIC リスナーのクイック作成
リスナーをクイック作成するには、リスナープロトコル、リスナーポート、サーバー証明書、およびバックエンドサーバーグループのみを設定する必要があります。
Application Load Balancer (ALB) コンソール にログインします。
上部の メニューバー で、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、ターゲットインスタンスを見つけてその ID をクリックします。
[リスナー] タブをクリックします。[リスナー] タブで、[リスナーのクイック作成] をクリックします。
[リスナーのクイック作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
リスナー設定
説明
リスナープロトコルの選択
リスナーのプロトコルを選択します。この例では、[QUIC] を選択します。
リスナーポート
フロントエンドポートを指定します。このポートはリクエストを受信し、バックエンドサーバーに転送します。
一般的なリスナーポートをクリックしてポート番号を自動的に入力するか、カスタムポート番号を入力できます。リスナーポートは 1~65535 の範囲である必要があります。
サーバー証明書の選択
ドロップダウンリストからサーバー証明書を選択します。
利用可能なサーバー証明書がない場合は、ドロップダウンリストの [証明書の作成] をクリックして新しい証明書を作成します。詳細については、「商用証明書の購入」および「SSL 証明書のアップロード」をご参照ください。
リソースグループの選択
サーバーグループを含むリソースグループを選択します。
サーバーグループ
バックエンドサーバーグループのタイプとバックエンドサーバーを選択します。
参考資料
ALB はさまざまな高度な転送ルールを提供します。詳細については、「リスナー転送ルールの設定」をご参照ください。
異常な状態コードが発生した場合は、「ALB の状態コード」をご参照ください。
ヘルスチェック例外が発生した場合は、「ALB ヘルスチェック例外のトラブルシューティング」をご参照ください。
QUIC プロトコルを使用してアプリケーションのアクセス速度を向上させる方法のチュートリアルについては、「QUIC プロトコルを使用してオーディオおよびビデオサービスのアクセス速度を向上させる」をご参照ください。