多数のポートまたは動的に割り当てられたポートを使用するシナリオでは、リスナーを1つずつ構成すると、構成管理が非常に複雑になります。 さらに、構成エラーは、セキュリティリスクをもたらす可能性がある。 Network Load Balancer (NLB) は、マルチポートリスニング機能をサポートしています。これにより、NLBは、リスナーの複数のポートを使用して、ポート範囲ごとにリッスンし、ネットワークトラフィックを転送できます。 マルチポートリスニングは、構成管理を簡素化し、セキュリティリスクを軽減します。
マルチポートリスニングとは何ですか?
マルチポートリスニングにより、NLBはポート範囲でリッスンし、そのポート範囲に宛てられたネットワークトラフィックを転送できます。 リスニングは特定のポートに限定されなくなりました。
NLBインスタンスのマルチポートリスニングを有効にすると、NLBインスタンスは指定されたポート範囲内のすべてのポートをリッスンし、バックエンドサーバー上の同じポートにリクエストを直接自動的に転送します。
マルチポートリスニングを使用すると、複数のポートのネットワークトラフィックを柔軟に管理でき、構成管理が大幅に簡素化されます。 マルチポートリスニングは、多数のポートまたは動的に割り当てられたポートを使用するシナリオに最適です。
主な機能
ポート範囲によるリスニング: マルチポートリスニングでは、
1000〜2000など、連続するポート番号を含むポート範囲を指定できます。 NLBは、指定されたポート範囲に該当するすべてのポートをリッスンします。簡単な設定: マルチポートリスニングにより、リスナーを1つずつ設定する必要がなくなります。 マルチポートリスニングは、リスナーとバックエンドサーバー間で同じままの多数のポートを使用するシナリオに最適です。 マルチポートリスニングを使用すると、サービスポートが頻繁に変更またはスケールアウトされた場合でも、ネットワークトラフィックを柔軟に管理できます。 ポートを1つずつ追加または変更する必要はありません。
適用シナリオ
マルチポートリスニングは、次のような多数のポートまたは動的に割り当てられたポートを使用するシナリオに最適です。
オンラインシングルプレイヤーロールプレイングゲーム (RPG) 、プレイヤー対環境 (PvE) ゲーム、シミュレーションゲーム (SLG) などのオンラインゲーム。 前述のシナリオでは、さまざまなシナリオでゲームデータを処理するために多数のポートが使用されます。 ポートは、異なるゲームシナリオまたはゲームルームに割り当てられます。
ビデオ会議やオンライン教育を含むリアルタイムコミュニケーション。 前述のシナリオでは、リアルタイムのオーディオおよびビデオデータとシグナリングデータを処理するために多数のポートが使用されます。
サンプルシナリオ
ある会社が、中国 (杭州) リージョンに仮想プライベートクラウド (VPC) を作成しました。 NLBインスタンスがVPCにデプロイされています。 ECS01およびECS02という名前の2つのElastic Compute Service (ECS) インスタンスがNLBインスタンスのサーバーグループに追加されます。 アクセス可能なアプリケーションがECSインスタンスにデプロイされます。
同社は、NLBインスタンスのマルチポートリスニングを有効にして、8090 8080のポートでリッスンすることを望んでいます。 ポートは、異なるサービスに割り当てられる。
制限事項
NLBインスタンスのマルチポートリスニングを有効にするには、マルチポートリスニングが有効になっているサーバーグループにNLBインスタンスを関連付ける必要があります。 リスナーまたはサーバーグループのマルチポートリスニングのステータスを変更することはできません。 マルチポートリスニングを有効にするには、サーバーグループとリスナーを作成し、マルチポートリスニングを有効にする必要があります。
前提条件
VPCが中国 (杭州) リージョンに作成されます。 vSwitchは2つのゾーンのそれぞれに作成されます。 詳細については、「VPC の作成と管理」をご参照ください。
各vSwitchにECSインスタンスが作成されます。 8090 8080のポートを使用するアプリケーションは、ECSインスタンスにデプロイされます。
ECS01とECS02のセキュリティグループは、8090 8080のポートへのリクエストを許可します。
インターネット接続のNLBインスタンスが作成され、VPCで実行中です。 詳細については、「NLBインスタンスの作成と管理」をご参照ください。
ドメイン名が登録され、ドメイン名のためのインターネット・コンテンツ・プロバイダ (ICP) 番号が取得される。 詳細については、「ジェネリックドメイン名の登録」および「ICP登録プロセス」をご参照ください。
手順1: マルチポートリスニングをサポートするサーバーグループの作成
NLBコンソールにログインします。
上部のナビゲーションバーで、NLBインスタンスがデプロイされているリージョンを選択します。
左側のナビゲーションウィンドウで、[NLB] > [サーバーグループ] を選択します。
[サーバーグループ] ページで、[サーバーグループの作成] をクリックします。
サーバーグループを設定します。 次の表に、いくつかのパラメーターを示します。 他のパラメータはデフォルト値を使用する。 詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
サーバーグループタイプ
作成するサーバーグループのタイプを選択します。
サーバーグループ名
サーバーグループの名前を入力します。
VPC
ドロップダウンリストからNLBインスタンスのVPCを選択します。 サーバーグループに追加できるのは、NLBインスタンスのVPC内のサーバーのみです。
マルチポート転送
マルチポート転送をオンにします。
マルチポート転送機能を有効にすると、サーバーグループにサーバーを追加するときにポートを指定する必要はありません。 NLBは、要求されたポートに基づいて、要求をバックエンドサーバーに直接転送します。
重要リスナーに対してマルチポート転送を有効にした場合、マルチポート転送が有効になっているサーバーグループにのみリスナーを関連付けることができます。
ヘルスチェックの設定
ヘルスチェックをオンにします。
ヘルスチェックポート
マルチポート転送を有効にするには、ヘルスチェックポートを指定する必要があります。
ヘルスチェックは、ポートをプローブしてバックエンドサーバーのヘルスステータスを確認します。 ポートが有効な応答を返さない場合、バックエンドサーバーは異常であると宣言されます。
この例では、ヘルスチェックポートはポート8080に設定されています。
設定が完了したら、[作成] をクリックします。 サーバーグループの作成後、表示されるメッセージの [バックエンドサーバーの追加] をクリックします。
バックエンドサーバーとしてECS01とECS02を選択します。 他のパラメータはデフォルト値を使用する。 マルチポートリスニングが有効な場合は、サーバーポートを指定する必要はありません。 [OK] をクリックします。
手順2: マルチポートリスニングをサポートするリスナーの作成
この例では、TCPリスナーが作成されます。
NLBコンソールにログインします。
上部のナビゲーションバーで、NLBインスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するNLBインスタンスを見つけ、[操作] 列の [リスナーの作成] をクリックします。
リスナーを設定します。 次の表に、いくつかのパラメーターを示します。 他のパラメータはデフォルト値を使用する。 詳細については、「TCPリスナーの追加」をご参照ください。 設定が完了したら、[送信] をクリックします。
リスナーを設定します。
パラメーター
説明
マルチポートリスニング /転送
マルチポートのリスニングと転送をオンにします。
リスナーのポート範囲
リッスンするポート範囲の最初と最後のポートを指定します。 この例では、ポート範囲はポート8080で始まり、ポート8090で終わります。
NLBは、指定されたポート範囲に該当するすべてのポートをリッスンし、そのポート宛てのリクエストをバックエンドサーバーポートに直接転送します。
重要マルチポートリスニングをサポートするリスナーを作成した後、リスナーのポート範囲を変更することはできません。
リスナーをサーバーグループに関連付ける:
パラメーター
説明
サーバーグループ
ECS01とECS02を含み、マルチポートリスニングをサポートするサーバーグループを選択します。
重要サーバーグループのマルチポート転送が有効になっていることを確認します。 それ以外の場合、サーバーグループはリスナーに関連付けられません。
ステップ3: DNSレコードを追加する
実際のビジネスシナリオでは、CNAMEレコードを使用してカスタムドメイン名をNLBインスタンスのドメイン名にマップすることを推奨します。
左側のナビゲーションウィンドウで、を選択します。
インスタンスページで、管理するNLBインスタンスのドメイン名をコピーします。
CNAMEレコードを作成するには、次の手順を実行します。
説明ドメイン名がAlibaba Cloudドメインを使用して登録されていない場合、DNSレコードを設定する前にドメイン名をAlibaba Cloud DNSに追加する必要があります。 詳細については、「ドメイン名の管理」をご参照ください。 ドメイン名がAlibaba Cloudドメインを使用して登録されている場合は、この手順をスキップします。
Alibaba Cloud DNSコンソールにログインします。
権威DNS解決ページで、ドメイン名を見つけて、アクション列のDNS設定をクリックします。
ドメイン名の詳細ページのDNS設定タブをクリックし、DNSレコードの追加をクリックします。
[DNSレコードの追加] パネルでパラメーターを設定し、[OK] をクリックします。 下表にパラメーターを示します。
パラメーター
説明
レコードタイプ
ドロップダウンリストから [CNAME] を選択します。
ホスト名
ドメイン名のプレフィックス。 この例では、@ を入力します。
説明ドメイン名がルートドメイン名の場合は、@ と入力します。
DNSリクエストソース
[デフォルト] を選択します。
レコード値
NLBインスタンスのドメイン名であるCNAMEを入力します。
TTL
DNSサーバーにキャッシュされるCNAMEレコードの有効期限 (TTL) 値を指定します。 この例では、デフォルト値が使用されます。
ステップ4: マルチポートリスニングのテスト
NLBインスタンスの可用性をテストします。
この例では、Linuxクライアントが使用されています。 CentOSを使用し、telnetがインストールされていない場合は、
yum install -y telnetコマンドを実行してtelnetをインストールします。telnet domain name portコマンドを複数回実行します。 ポート番号は8080に8090する必要があります。 を含む応答パケットを受信した場合接続先...NLBインスタンスはバックエンドサーバーにリクエストを転送できます。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'http:// domain name:8080など、ブラウザから8090するドメイン名と8080に分類されるポートにアクセスします。 次の図に示すように応答を受信すると、クライアントはアプリケーションにアクセスできます。
障害をシミュレートします。
ECS01でアプリケーションを停止します。 ECS01で
systemctl stop nginx.serviceコマンドを実行し、アプリケーションを停止します。数分待ってから、クライアントで
telnet domain name portコマンドを再度実行します。 ポート番号は8080に8090する必要があります。 を含む応答パケットを引き続き受信できます。接続先....Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'http:// domain name:8080など、ブラウザから8090するドメイン名と8080に分類されるポートにアクセスします。 次の図に示すように応答を受信すると、クライアントはアプリケーションにアクセスできます。
ECS01でアプリケーションを起動し、ECS02でアプリケーションを停止します。 ECS01で
systemctl start nginx.serviceコマンドを実行してアプリケーションを再起動し、ECS02でsystemctl stop nginx.serviceコマンドを実行してアプリケーションを停止します。数分待ってから、クライアントで
telnet domain name portコマンドを再度実行します。 ポート番号は8080に8090する必要があります。 を含む応答パケットを引き続き受信できます。接続先....Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'http:// domain name:8080など、ブラウザから8090するドメイン名と8080に分類されるポートにアクセスします。 次の図に示すように応答を受信すると、クライアントはアプリケーションにアクセスできます。
上記のテストでは、単一のサーバーによって引き起こされた単一障害点 (SPOF) がNLBインスタンスの可用性を損なうことはなく、バックエンドサーバー上のアプリケーションは、8080から8090に該当する任意のポートを介してアクセスできることが示されています。