リスナーは接続リクエストをチェックします。Application Load Balancer (ALB) インスタンスでは、ビジネスニーズに基づいてクライアントリクエストを転送するリスナーを作成し、作成したリスナーの変更、開始、停止、または削除を行うことができます。
リスナープロトコルの選択
リスナーを作成する前に、ビジネスニーズに適したリスナープロトコルを選択します。Application Load Balancer (ALB) は、HTTP、HTTPS、QUIC の 3 つのレイヤー 7 リスナープロトコルをサポートしています。次の表で、各プロトコルのユースケースと設定要件を説明します。
|
プロトコル |
ユースケース |
SSL 証明書の要否 |
サポートするバックエンドプロトコル |
機能 |
|
HTTP |
Web アプリケーションやモバイルカジュアルゲームなど、コンテンツインスペクションが必要なアプリケーション。 |
不要 |
HTTP、HTTPS、gRPC gRPC バックエンドプロトコルを使用するには、リスナーで HTTP/2 を有効にする必要があります。 HTTP リスナーでの HTTP/2 の有効化はホワイトリスト機能です。ご利用の際は、担当のビジネスマネージャーにお問い合わせください。 |
デフォルトで WebSocket プロトコルをサポートします。 |
|
HTTPS |
暗号化データ伝送が必要なアプリケーション。ALB インスタンスとクライアント間で SSL/TLS 暗号化セッションを確立します。 |
必要です (サーバー証明書が必須。相互認証には CA 証明書が必要です) |
HTTP、HTTPS、gRPC gRPC バックエンドプロトコルを使用するには、リスナーで HTTP/2 を有効にする必要があります。 |
HTTP/2、CA 証明書による相互認証、TLS セキュリティポリシー、および QUIC アップグレードをサポートします。デフォルトで WebSocket Secure (WSS) プロトコルをサポートします。 |
|
QUIC |
通信状況が悪い場合や、Wi-Fi とモバイルネットワーク間で頻繁に切り替わるシナリオ。ネットワークや動画の途切れを効果的に軽減し、音声および動画リソースのアクセス効率を向上させ、安全なデータ伝送を確保します。 |
必要です (サーバー証明書が必須) |
HTTP |
UDP 上で動作し、接続の確立が高速で、コネクションマイグレーション (ネットワーク切り替え時に接続を維持) をサポートします。単独で使用することも、HTTPS リスナーと併用することもできます。 |
ALB Extensible Edition は、リスナープロトコルにおいて他のエディションと次の点で異なります。QUIC リスナー、gRPC バックエンドプロトコル、CA 証明書による相互認証、および QUIC アップグレードはサポートされません。
前提条件
-
ALB インスタンスを作成し、サーバーグループが作成済みであること。
-
HTTPS または QUIC リスナーを作成するには、Certificate Management Service でサーバー証明書を購入またはアップロードする必要があります。詳細については、「証明書の管理」をご参照ください。
リスナーの作成
リスナーは、次の 2 つの方法のいずれかで作成できます:
-
[リスナーの作成]:詳細なカスタム設定に対応した、ステップバイステップ形式のウィザードです。
-
[リスナーのクイック作成]:リスナープロトコル、リスナーポート、サーバーグループを設定するだけの簡素化された方法です。 HTTPS および QUIC リスナーの場合は、サーバー証明書も設定する必要があります。 HTTPS リスナーの場合は、TLS セキュリティポリシーも選択する必要があります。
コンソール
ステップ 1: [リスナーの設定]
-
ALB コンソールの インスタンス ページに移動し、対象のインスタンスの ID をクリックして、リスナー タブで リスナーの作成 をクリックします。
-
リスナーの設定 ウィザードで、次の設定を行い、次へ をクリックします。
-
[リスナープロトコルの選択]:HTTP、HTTPS、または QUIC を選択します。
ALB Extensible Edition は QUIC リスナーをサポートしていません。
-
[リスナーポート]:有効な値は 1 ~ 65535 です。 HTTP は通常ポート 80 を使用し、HTTPS は通常ポート 443 を使用します。
同じ ALB インスタンス内で、同じプロトコルのリスナーが同じポートを使用することはできません。 さらに、HTTP リスナーと HTTPS リスナーが同じポートを使用することもできません。
-
[リスナー名]:リスナーのカスタム名を入力します。
-
[タグ]:キーと値のペアでリスナーにタグを付けます。
-
[詳細設定]: 展開するには、変更 をクリックします。
-
[HTTP/2 の有効化]:HTTP リスナー (ホワイトリスト機能。ご利用には、担当の営業までお問い合わせください) および HTTPS リスナーでのみサポートされます。
ALB Extensible Edition は、デフォルトで HTTP/2 が有効になっており、無効にすることはできません。
-
[アイドル接続タイムアウト期間]:有効な値は 1 ~ 600 秒です。 デフォルト値は 15 秒です。 この期間が経過すると、ALB は接続を閉じます。 より大きな最大タイムアウト値を申請するには、Quota Center に移動します。
リスナープロトコルが HTTP の場合、アイドル接続タイムアウトは HTTP/2 リクエストには適用されません。
-
[接続リクエストタイムアウト]:有効な値は 1 ~ 600 秒です。 デフォルト値は 60 秒です。 タイムアウトを超えると、ALB は HTTP 504 エラーを返します。 より大きな最大タイムアウト値を申請するには、Quota Center に移動します。
-
[圧縮]:有効にすると、レスポンスの
Content-Lengthが 1024 バイトを超える場合にコンテンツが圧縮されます。 この機能は Brotli (すべてのタイプ) と Gzip (レベル 4) をサポートしています。 クライアントが両方をサポートしている場合、Brotli が優先されます。サポートされている Gzip タイプ:
text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss+xml、application/atom+xml、application/xml、およびapplication/json。 -
[実際のクライアントソース IP を見つける]:有効にすると、ALB は X-Forwarded-For ヘッダーから実際のクライアント IP を抽出します。 この機能を使用するには、信頼できる IP リストを設定する必要があります:
-
0.0.0.0/0:X-Forwarded-For ヘッダーから左端のアドレスを取得します。 -
proxy1 IP;proxy2 IP;...:右から順に、リストに含まれていない最初の IP アドレスを取得します。
この機能を有効にすると、SourceIp 照合と QPS (クライアント IP あたり) アクションを使用する転送ルールで、実際のクライアント IP が使用されるようになります。
このオプションは QUIC リスナーではサポートされていません。
この機能は、Standard Edition および WAF-enabled Edition のインスタンスでのみ利用できます。 Basic Edition または Extensible Edition のインスタンスではサポートされていません。
-
-
[カスタム HTTP ヘッダー]:クライアント IP アドレス、リスナープロトコル、リスナーポートなどの情報を取得するために、追加する HTTP ヘッダーを選択します。 各ヘッダーの詳細については、「HTTP ヘッダー」をご参照ください。
-
[QUIC アップデート]: このオプションは、HTTPS リスナーと QUIC リスナーを使用する場合に適用されます。 関連付けられた QUIC リスナー ドロップダウンリストで、作成済みの QUIC リスナーを選択します。 このオプションを有効にすると、ALB はクライアントに HTTP/3 プロトコルをアドバタイズします。 HTTP/3 をサポートするクライアントは QUIC リスナーを使用し、サポートしないクライアントは自動的に HTTPS にフォールバックします。
このオプションは HTTPS リスナーでのみサポートされており、ALB Extensible Edition ではサポートされていません。
-
ステップ 2: [SSL 証明書の設定] (HTTPS および QUIC リスナーの場合)
|
証明書 |
説明 |
一方向認証に必須 |
相互認証に必須 |
|
サーバー証明書 |
クライアントがサーバーの身元を確認し、信頼できることを検証するために使用されます。 詳細については、「SSL 証明書とは」をご参照ください。 |
はい |
はい |
|
CA 証明書 |
サーバーは CA 証明書を使用してクライアント証明書の署名を検証します。 検証に失敗すると、接続は拒否されます。 |
いいえ |
はい |
-
新しい証明書が適用されてから有効になるまで、通常 1 ~ 3 分かかります。
-
QUIC リスナーはサーバー証明書のみを必要とし、相互認証はサポートしていません。
-
複数のドメインに対応したり、複数のサーバー証明書を使用したりする必要がある場合は、リスナーに追加の証明書を追加できます。
-
SSL 証明書の設定 ウィザードで、サーバー証明書 を選択します。
選択可能なサーバー証明書がない場合は、SSL 証明書の作成 をクリックして証明書管理サービスに移動し、サーバー証明書を購入またはアップロードできます。
-
HTTPS リスナーのみ: TLS セキュリティポリシー を選択します。
システムには複数の事前定義されたポリシーが用意されていますが、TLS プロトコルバージョンと暗号スイートをカスタマイズする場合は、TLS セキュリティポリシーの作成、カスタムポリシーの作成 の順にクリックします。詳細については、「TLS セキュリティポリシー」をご参照ください。
ALB Extensible Edition は、デフォルトの TLS セキュリティポリシー
tls_cipher_policy_1_0_to_1_3のみをサポートし、カスタム TLS セキュリティポリシーはサポートしていません。 -
HTTPS リスナーのみ (オプション): 相互認証の有効化 を有効にし、次に CA 証明書ソースと CA 証明書を選択します。
-
CA 証明書ソースを Alibaba Cloud に設定し、CA 証明書 ドロップダウンリストから CA 証明書を選択します。 CA 証明書が利用できない場合は、CA 証明書の購入をクリックして新しい CA 証明書を作成します。
-
CA 証明書ソース を サードバーティ に設定し、CA 証明書 ドロップダウンリストから CA 証明書を選択します。 CA 証明書が利用できない場合は、自己署名 CA 証明書のアップロード をクリックして、証明書リポジトリを使用して 自己署名 CA 証明書をアップロードします。
相互認証は、Standard Edition および WAF-enabled Edition のインスタンスでのみ利用できます。 Basic Edition または Extensible Edition のインスタンスではサポートされていません。
-
ステップ 3: サーバーグループの選択
「サーバーグループの選択」ウィザードで、サーバーグループを選択し、バックエンドサーバー情報を確認してから、次へ をクリックします。
ステップ 4: 設定の確認
設定の確認 ページで、設定を確認し、送信 をクリックします。
[リスナーのクイック作成]
-
ALB コンソールのインスタンスページに移動し、ターゲットインスタンスの ID をクリックしてから、リスナー タブで リスナーのクイック作成 をクリックします。
-
リスナーのクイック作成 ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
-
[リスナープロトコルの選択]:HTTP、HTTPS、または QUIC を選択します。
ALB Extensible Edition は QUIC リスナーをサポートしていません。
-
[リスナーポート]:有効な値は 1 ~ 65535 です。 HTTP は通常ポート 80 を使用し、HTTPS は通常ポート 443 を使用します。
-
[サーバー証明書] (HTTPS および QUIC リスナー用): サーバー証明書を選択します。選択可能なサーバー証明書がない場合は、SSL 証明書の作成 をクリックして証明書管理サービスに移動し、サーバー証明書を購入またはアップロードします。
-
[TLS セキュリティポリシー] (HTTPS リスナーのみ):TLS セキュリティポリシーを選択します。TLS プロトコルバージョンと暗号スイートをカスタマイズする場合は、TLS セキュリティポリシーの作成 をクリックし、次に カスタムポリシーの作成 をクリックします。詳細については、「TLS セキュリティポリシー」をご参照ください。
ALB Extensible Edition は、デフォルトの TLS セキュリティポリシー
tls_cipher_policy_1_0_to_1_3のみをサポートし、カスタム TLS セキュリティポリシーはサポートしていません。 -
[サーバーグループ]:サーバーグループのタイプとバックエンドサーバーを選択します。
-
API
CreateListener API を使用してリスナーを作成できます。
リスナーの変更
リスナーの作成後に、リスナープロトコルまたはリスナーポートを変更することはできません。変更するには、リスナーを削除して新しいリスナーを作成する必要があります。
コンソール
-
ALB コンソールの [インスタンス] ページに移動し、ターゲットインスタンスの ID をクリックします。
-
リスナー タブをクリックし、対象のリスナーを見つけ、以下のいずれかの方法でその基本情報を変更します。
-
リスナー ID をクリックするか、操作 列の 詳細を表示 をクリックします。リスナーの詳細 タブで、基本情報 セクションの リスナーの変更 をクリックします。
-
操作 列で、
> リスナーの変更 を選択します。
-
-
リスナーの変更 ダイアログボックスで、リスナー名または詳細設定を変更し、保存 をクリックします。
API
UpdateListenerAttribute API を使用して、リスナーの設定を更新します。
リスナーの開始または停止
リスナーを開始または停止すると、リスナーは一時的に 設定中 状態になります。この間、リスナーの削除、編集、またはサーバーグループの変更はできません。
リスナーを停止すると、トラフィックが中断されます。操作は慎重に行ってください。
コンソール
-
ALB コンソールで [インスタンス] ページに移動し、ターゲットインスタンスの ID をクリックします。
-
[リスナー] タブをクリックし、対象のリスナーを見つけ、次のいずれかの方法でリスナーを開始または停止します。
-
[操作] 列で、
> [有効化] または [無効化] を選択します。表示されたダイアログボックスで、[OK] をクリックします。 -
リスナー ID をクリックし、[リスナーの詳細] タブの右上隅にある [有効化] または [無効化] をクリックします。
-
API
-
StartListener API を呼び出してリスナーを開始します。
-
StopListener API を呼び出してリスナーを停止します。
サーバーグループの変更
コンソール
-
ALB コンソールで [Instances] ページに移動し、ターゲットインスタンスの ID をクリックします。
-
リスナー タブをクリックし、対象のリスナーで、次のいずれかの方法でサーバーグループを変更します。
-
操作 列で、
> サーバーグループの変更 (デフォルトの転送ルール) を選択します。 -
リスナー ID をクリックします。[リスナーの詳細] タブの サーバーグループ (デフォルトの転送ルール) セクションで、サーバーグループの変更 (デフォルトの転送ルール) をクリックします。
-
-
表示されたダイアログボックスで、使用するサーバーグループを選択するか、ドロップダウンリストから サーバーグループの作成 をクリックして 新しいサーバーグループを作成 して選択します。次に、保存 をクリックします。
API
UpdateListenerAttribute API を使用して、サーバーグループの変更を含むリスナーの設定を更新します。
バックエンドプロトコルとバックエンドサービスの不一致に関するトラブルシューティング
ALB リスナーが 502 Bad Gateway エラーを返す場合、サーバーグループのバックエンドプロトコルが、バックエンドサービスで実際に使用されているプロトコルと一致していない可能性があります。たとえば、サーバーグループのバックエンドプロトコルが HTTPS に設定されている一方で、バックエンドサービスが実際には HTTP で動作している場合、ALB は HTTPS でバックエンドにリクエストを転送します。その結果、SSL ハンドシェイクに失敗し、502 エラーが返されます。
この問題をトラブルシューティングして解決するには、次の手順を実行します。
-
ALB コンソールで [Instances] ページに移動し、ターゲットインスタンスの ID をクリックします。[Listeners] タブで、502 エラーを返すリスナーを見つけ、[View/Edit Forwarding Rules] をクリックします。
-
転送ルールの一覧で、デフォルトの転送ルールに関連付けられているサーバーグループのバックエンドプロトコルが、バックエンドサービスで実際に使用されているプロトコルと一致しているかを確認します。
-
プロトコルが一致しない場合は、デフォルトの転送ルールで [Edit] をクリックし、[Server Group] ドロップダウンリストから正しいバックエンドプロトコルを使用するサーバーグループを選択し、[Save] をクリックします。適切なサーバーグループがない場合は、先に 正しいバックエンドプロトコルを使用するサーバーグループを作成 してから、サーバーグループを変更します。
サーバーグループを作成する際は、[Backend Protocol] パラメーターが、バックエンドサービスで実際に使用されているプロトコル (HTTP または HTTPS) と一致していることを確認してください。一致していない場合、プロトコルの不一致が原因で、バックエンドへのリクエスト転送時に 502 エラーが発生します。
証明書の管理
コンソール
API
-
UpdateListenerAttribute API を使用して、リスナーの証明書設定を更新します。
-
AssociateAdditionalCertificatesWithListener API を使用して、リスナーに追加証明書を追加します。
-
DissociateAdditionalCertificatesFromListener API を使用して、リスナーから追加証明書を削除します。
TLS セキュリティポリシーの変更 (HTTPS リスナーのみ)
コンソール
-
リスナーの詳細 タブで SSL 証明書 セクションを見つけ、TLS セキュリティポリシー の右側にある
アイコンをクリックします。 -
表示された TLS セキュリティポリシーの変更 ダイアログボックスで、TLS セキュリティポリシーを選択し、保存 をクリックします。
システムには、複数の事前定義されたポリシーが用意されています。TLS プロトコルのバージョンと暗号スイートをカスタマイズする場合は、TLS セキュリティポリシーの作成 をクリックし、次に カスタムポリシーの作成 をクリックします。詳細については、「TLS セキュリティポリシー」をご参照ください。
ALB Extensible Edition は、デフォルトの TLS セキュリティポリシー
tls_cipher_policy_1_0_to_1_3のみをサポートしており、カスタム TLS セキュリティポリシーはサポートしていません。
API
UpdateListenerAttribute API を呼び出してリスナーの設定を更新し、SecurityPolicyId パラメーターを使用して TLS セキュリティポリシーを指定します。
分散トレーシングの管理
分散トレーシングは、Standard Edition および WAF-enabled Edition の ALB インスタンスでのみサポートされています。Basic Edition または Extensible Edition のインスタンスではサポートされていません。分散トレーシングを有効にする方法の詳細な説明と手順については、「ALB 分散トレーシングを使用したエンドツーエンドリクエストの分析」をご参照ください。
分散トレーシングを有効にすると、Managed Service for OpenTelemetry と Log Service の料金が発生します。
リスナーの削除
コンソール
-
ALB コンソールの[インスタンス] ページに移動し、対象インスタンスの ID をクリックします。 リスナー タブで、対象のリスナーを探し、操作 列で
> 削除 を選択します。 -
表示されるダイアログボックスで、OK をクリックします。
API
DeleteListener API を使用して、リスナーを削除します。
課金
リスナーに対して個別に課金されることはありません。ただし、リスナーのトラフィックと転送ルールの設定は LCU 料金に影響します。ALB インスタンスの課金ルールについては、「ALB の課金」をご参照ください。
クォータ
|
クォータ名 |
説明 |
デフォルト |
最大値 |
調整可能 |
|
alb_quota_loadbalancer_listeners_num_basic_edition |
Basic Edition の ALB インスタンスに追加できるリスナーの最大数 |
50 |
80 |
|
|
alb_quota_loadbalancer_listeners_num_standard_edition |
Standard Edition の ALB インスタンスに追加できるリスナーの最大数 |
50 |
100 |
|
|
alb_quota_loadbalancer_listeners_num_standardwithwaf_edition |
WAF-enabled Edition の ALB インスタンスに追加できるリスナーの最大数 |
50 |
100 |
|
|
alb_quota_max_idle_timeout |
リスナーに設定できるアイドルタイムアウトの最大値 |
600 秒 |
3,600 秒 * |
|
|
alb_quota_max_request_timeout |
リスナーに設定できるリクエストタイムアウトの最大値 |
600 秒 |
3,600 秒 * |
* アップグレードされた ALB インスタンス のみ、alb_quota_max_request_timeoutとalb_quota_max_idle_timeoutのクォータを最大 3,600 秒まで引き上げることができます。アップグレードされていないインスタンスの最大値は 900 秒です。