すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:NLB フルポートリスナーによる複数ポート間のトラフィック転送

最終更新日:Jul 18, 2026

Network Load Balancer (NLB) のフルポートリスナー機能は、指定されたポート範囲内のすべてのトラフィックを単一のリスナーでモニターおよび転送するため、各ポートごとに個別にリスナーを構成する必要がなくなります。

フルポートリスナー

フルポートリスナーにより、NLB は単一の固定ポートではなく、指定された範囲内のすべてのポートでトラフィックをモニターおよび処理できます。

この機能を有効にすると、NLB は指定されたポート範囲全体をモニターし、受信リクエストをバックエンドサーバー上の対応するポートに転送します。

これにより、多数または動的ポートを必要とするシナリオにおいて、構成が簡素化され、メンテナンスのオーバーヘッドが削減されます。

主な特徴

  1. ポート範囲のカバー:連続したポート範囲(例:1000-2000)を指定すると、NLB はその範囲内のすべてのポートでリッスンします。

  2. 構成の簡素化:個別のリスナーを構成する必要がなくなります。ポートはバックエンドサービスポートに 1 対 1 でマッピングされ、新しいポートを追加してもリスナー構成を更新する必要はありません。

ユースケース

多数または動的ポートでのリッスンが必要なシナリオ:

  • オンラインゲーム:RPG、PvE ゲーム、シミュレーションゲームでは、異なるシーンや個別のゲームルームごとに幅広いポート範囲を使用します。

  • Real-Time Communication (RTC):ビデオ会議やオンライン教育プラットフォームでは、リアルタイムメディアストリームおよびシグナリングデータ用に幅広いポート範囲を使用します。

ある企業が中国 (杭州) リージョンの VPC 内に NLB インスタンスをデプロイしています。バックエンドサーバーグループには、アプリケーションサービスを実行している 2 台の ECS インスタンス(ECS01 および ECS02)が含まれています。

この企業はフルポートリスナーを使用してポート範囲 8080–8090 をリッスンし、異なるポート経由で異なるバックエンドサービスにアクセスできるようにしています。

制限事項

フルポートリスナーは、「全ポート転送」が有効になっているサーバーグループに関連付ける必要があります。既存のリスナーまたはサーバーグループに対してこれらの機能を有効化または無効化することはできません。これらの機能を有効にして新しいリスナーまたはサーバーグループを作成する必要があります。

前提条件

  • 中国 (杭州) リージョンの 2 つの異なる可用性ゾーン内に、VPC および 2 つの vSwitch(VSW1 および VSW2)が作成済みです。VPC および vSwitch の作成をご参照ください。

  • ECS01 および ECS02 はそれぞれ VSW1 および VSW2 に作成されており、ポート 8080–8090 でアプリケーションサービスにアクセスできます。

    テストサービスのデプロイ用参考コマンド

    以下の例では CentOS 7.9 および Nginx 1.20.1 を使用しています。次のスクリプトを使用して、ポート 8080 ~ 8090 でリッスンするテストサービスをデプロイできます。

    1. ECS01 にログインし、以下の手順を実行します。

      1. vi ECS01_server_install.sh を実行し、i キーを押して編集モードに入ります。

      2. 以下のスクリプトをコピーして貼り付けます。

        #!/bin/bash
        
        # Install Nginx
        yum install -y nginx
        
        # Directory for Nginx server block configurations
        NGINX_CONF_DIR=/etc/nginx/conf.d
        
        # Directory to store index.html files
        HTML_DIR=/usr/share/nginx/html
        
        # Create configs and HTML files in a loop
        for PORT in $(seq 8080 8090); do
          CONF_FILE=${NGINX_CONF_DIR}/app_${PORT}.conf
          HTML_FILE=${HTML_DIR}/index_app${PORT}.html
          
          # Create HTML content
          echo "Hello World! This is ECS01, server port is ${PORT}." > ${HTML_FILE}
          
          # Create Nginx server block configuration
          cat > ${CONF_FILE} << EOF
        server {
            listen ${PORT};
            server_name localhost;
        
            location / {
                root ${HTML_DIR};
                index index_app${PORT}.html;
            }
        }
        EOF
        
        done
        
        # Test the Nginx configuration and start Nginx
        nginx -t && systemctl start nginx
        
        echo "Nginx has been configured to listen on ports 8080 to 8090."
        
        # Access localhost ports 8080 to 8090 by using curl
        for PORT in $(seq 8080 8090); do
          echo "Accessing http://localhost:${PORT}"
          curl http://localhost:${PORT}
        done
        
      3. Esc キーを押し、:wq と入力して変更を保存します。

      4. sudo sh ECS01_server_install.sh コマンドを実行してスクリプトを実行します。

      5. 以下の出力が表示された場合、ポート 8080 ~ 8090 のサービスにアクセスできます。

        ...
        Nginx has been configured to listen on ports 8080 to 8090.
        Accessing http://localhost:8080
        Hello World! This is ECS01, server port is 8080.
        Accessing http://localhost:8081
        Hello World! This is ECS01, server port is 8081.
        Accessing http://localhost:8082
        Hello World! This is ECS01, server port is 8082.
        Accessing http://localhost:8083
        Hello World! This is ECS01, server port is 8083.
        Accessing http://localhost:8084
        Hello World! This is ECS01, server port is 8084.
        Accessing http://localhost:8085
        Hello World! This is ECS01, server port is 8085.
        Accessing http://localhost:8086
        Hello World! This is ECS01, server port is 8086.
        Accessing http://localhost:8087
        Hello World! This is ECS01, server port is 8087.
        Accessing http://localhost:8088
        Hello World! This is ECS01, server port is 8088.
        Accessing http://localhost:8089
        Hello World! This is ECS01, server port is 8089.
        Accessing http://localhost:8090
        Hello World! This is ECS01, server port is 8090.

        curl コマンドが失敗した場合は、ポートがすでに使用中であるか、コマンドにエラーがないか確認してください。

    2. ECS02 にログインし、以下の手順を実行します。

      1. vi ECS02_server_install.sh を実行し、i キーを押して編集モードに入ります。

      2. 以下のスクリプトをコピーして貼り付けます。

        #!/bin/bash
        
        # Install Nginx
        yum install -y nginx
        
        # Directory for Nginx server block configurations
        NGINX_CONF_DIR=/etc/nginx/conf.d
        
        # Directory to store index.html files
        HTML_DIR=/usr/share/nginx/html
        
        # Create configs and HTML files in a loop
        for PORT in $(seq 8080 8090); do
          CONF_FILE=${NGINX_CONF_DIR}/app_${PORT}.conf
          HTML_FILE=${HTML_DIR}/index_app${PORT}.html
          
          # Create HTML content
          echo "Hello World! This is ECS02, server port is ${PORT}." > ${HTML_FILE}
          
          # Create Nginx server block configuration
          cat > ${CONF_FILE} << EOF
        server {
            listen ${PORT};
            server_name localhost;
        
            location / {
                root ${HTML_DIR};
                index index_app${PORT}.html;
            }
        }
        EOF
        
        done
        
        # Test the Nginx configuration and start Nginx
        nginx -t && systemctl start nginx
        
        echo "Nginx has been configured to listen on ports 8080 to 8090."
        
        # Access localhost ports 8080 to 8090 by using curl
        for PORT in $(seq 8080 8090); do
          echo "Accessing http://localhost:${PORT}"
          curl http://localhost:${PORT}
        done
        
      3. Esc を押し、その後 :wq と入力して変更を保存します。

      4. sudo sh ECS02_server_install.sh コマンドを実行してスクリプトを実行します。

      5. 以下の出力が表示された場合、ポート 8080 ~ 8090 のサービスにアクセスできます。

        ...
        Nginx has been configured to listen on ports 8080 to 8090.
        Accessing http://localhost:8080
        Hello World! This is ECS02, server port is 8080.
        Accessing http://localhost:8081
        Hello World! This is ECS02, server port is 8081.
        Accessing http://localhost:8082
        Hello World! This is ECS02, server port is 8082.
        Accessing http://localhost:8083
        Hello World! This is ECS02, server port is 8083.
        Accessing http://localhost:8084
        Hello World! This is ECS02, server port is 8084.
        Accessing http://localhost:8085
        Hello World! This is ECS02, server port is 8085.
        Accessing http://localhost:8086
        Hello World! This is ECS02, server port is 8086.
        Accessing http://localhost:8087
        Hello World! This is ECS02, server port is 8087.
        Accessing http://localhost:8088
        Hello World! This is ECS02, server port is 8088.
        Accessing http://localhost:8089
        Hello World! This is ECS02, server port is 8089.
        Accessing http://localhost:8090
        Hello World! This is ECS02, server port is 8090.

        curl コマンドが失敗した場合は、ポートがすでに使用中であるか、コマンドにエラーがないか確認してください。

  • ECS01 および ECS02 のセキュリティグループは、ポート 8080-8090 のインバウンドトラフィックを許可しています。

  • ご利用の VPC 内にインターネット向け NLB インスタンスが実行中の状態で存在します。NLB インスタンスの作成および管理をご参照ください。

  • ICP 登録が完了したドメイン名が登録されています。Alibaba Cloud ドメイン名の登録ICP 登録プロセスをご参照ください。

ステップ 1:全ポート転送を有効にしたサーバーグループの作成

  1. Network Load Balancer (NLB) コンソールにログインします。

  2. 上部ナビゲーションバーで、NLB インスタンスがデプロイされているリージョンを選択します。

  3. 左側のナビゲーションウィンドウで、NLB > サーバーグループを選択します。

  4. サーバーグループページで、サーバーグループの作成をクリックします。

  5. 以下の主要設定項目でサーバーグループを構成します。詳細については、「NLB サーバーグループ」をご参照ください。

    パラメーター

    説明

    サーバーグループタイプ

    サーバータイプを選択します。

    サーバーグループ名

    サーバーグループのカスタム名を入力します。

    VPC

    NLB インスタンスが存在する VPC を選択します。この VPC 内のサーバーのみを追加できます。

    フルポート転送

    「全ポート転送」を有効にします。

    この機能を有効にすると、バックエンドサーバーを追加する際にポートを指定する必要がなくなります。NLB は、各バックエンドサーバーの対応するポートにトラフィックを転送します。

    重要

    フルポートリスナーは、「全ポート転送」が有効になっているサーバーグループにのみ関連付けることができます。

    ヘルスチェックの設定

    ヘルスチェックを有効にします。

    ヘルスチェックポート

    「全ポート転送」を有効にしている場合、ヘルスチェックポートを指定する必要があります。

    ヘルスチェックは、バックエンドサーバーのこのポートをプローブします。サーバーは有効な応答を返す必要があります。そうでない場合、チェックは失敗します。

    この例では、ポートを8080に設定します。

  6. サーバーグループの構成が完了したら、作成をクリックします。表示されるダイアログボックスで、バックエンドサーバーの追加をクリックします。

  7. ECS01 および ECS02 を選択します。「全ポート転送」が有効になっているため、サーバーポートを構成する必要はありません。他のパラメーターはデフォルト値のままにして、OKをクリックします。

ステップ 2:フルポートリスナーの作成

説明

この例では TCP リスナーを使用します。

  1. Network Load Balancer (NLB) コンソールにログインします。

  2. 上部ナビゲーションバーで、NLB インスタンスがデプロイされているリージョンを選択します。

  3. インスタンスページで、NLB インスタンスを検索し、操作列のリスナーの作成をクリックします。

  4. 以下の主要設定項目でリスナーを構成します。詳細については、「TCP リスナーの追加」をご参照ください。構成後、送信をクリックします。

    以下の表はリスナーのパラメーターについて説明しています。

    パラメーター

    説明

    ポート範囲ごとにリッスン

    「全ポート機能」を有効にします。

    リスナーポート範囲

    開始ポートと終了ポートを指定します。この例では、範囲を8080から8090に設定します。

    NLB はこの範囲内のすべてのポートでリッスンし、リクエストをバックエンドサーバーポートに転送します。

    重要

    リスナーの作成後は、リスナーポート範囲を変更できません。

    以下の表はサーバーグループのパラメーターについて説明しています。

    パラメーター

    説明

    サーバーグループ

    ステップ 1 で作成したサーバーグループ(「全ポート転送」が有効になっている ECS01 および ECS02 を含む)を選択します。

    重要

    フルポートリスナーに追加するサーバーグループは、「全ポート転送」が有効になっている必要があります。有効になっていない場合、追加できません。

ステップ 3:DNS 解決の構成

CNAME レコードを使用して、カスタムドメイン名を NLB インスタンスのドメイン名にマッピングします。

  1. Network Load Balancer (NLB) コンソールにログインします。

  2. インスタンスページで、管理対象の NLB インスタンスのドメイン名をコピーします。

  3. CNAME レコードを作成するには、以下の手順を実行します。

    説明

    ご利用のドメイン名が Alibaba Cloud Domains 経由で登録されていない場合は、DNS レコードを構成する前に Alibaba Cloud DNS にドメイン名を追加する必要があります。ドメイン名の追加をご参照ください。Alibaba Cloud Domains 経由で登録済みの場合は、この手順をスキップしてください。

    1. Alibaba Cloud DNS コンソールにログインします。

    2. インターネットの権威ある DNS 解決ページで、ご利用のドメイン名を検索し、Actions列の解決設定をクリックします。

    3. ドメイン名詳細ページの解決設定タブで、Add Recordをクリックします。

    4. Add Recordパネルで、パラメーターを構成し、OKをクリックします。以下の表はパラメーターについて説明しています。

      パラメーター

      説明

      レコードタイプ

      ドロップダウンリストからCNAMEを選択します。

      ホストレコード

      ドメイン名のプレフィックスです。この例では、@を入力します。

      説明

      ドメイン名がルートドメインの場合、@ を入力します。

      Query Source

      デフォルトを選択します。

      レコード値

      CNAME(NLB インスタンスのドメイン名)を入力します。

      TTL

      DNS サーバーにキャッシュされる CNAME レコードの TTL 値です。この例では、デフォルト値を使用します。

ステップ 4:フルポートリスナーのテスト

  1. NLB インスタンスがすべてのポート間で正しくトラフィックを転送することを確認します。

    1. この例では、パブリックネットワークアクセス可能な Linux クライアントを使用します。telnet がインストールされていない場合は、yum install -y telnetを実行します。

    2. ポート 8080 ~ 8090 のいずれかを使用して、telnet domain_name portを実行します。Connected to ...という応答が表示された場合、NLB がバックエンドサーバーにリクエストを転送していることを確認できます。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'

      ブラウザでドメイン名にポート 8080 ~ 8090 のいずれかを使用してアクセスします(例:http://domain_name:8080)。以下のようなページが表示された場合、クライアントがアプリケーションにアクセスできることを確認できます。

      Hello World! This is ECS01, server port is 8080.
  2. バックエンドサーバーの障害をシミュレートして、高可用性を検証します。

    1. ECS01 上のサービスを停止します。ECS01 で、systemctl stop nginx.serviceを実行してアプリケーションを停止します。

    2. 数分後に、ポート 8080 ~ 8090 のいずれかを使用して再度telnet domain_name portを実行します。Connected to ...という応答が引き続き表示されるはずです。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'

      ブラウザでドメイン名にポート 8080 ~ 8090 のいずれかを使用してアクセスします(例:http://domain_name:8080)。以下のようなページが表示された場合、クライアントがアプリケーションにアクセスできることを確認できます。

      Hello World! This is ECS02, server port is 8080.
    3. ECS01 上のサービスを起動し、ECS02 上のサービスを停止します。ECS01 で、systemctl start nginx.serviceを実行してアプリケーションを再起動し、ECS02 で、systemctl stop nginx.serviceを実行してアプリケーションを停止します。

    4. 数分後に、ポート 8080 ~ 8090 のいずれかを使用して再度telnet domain_name portを実行します(portは 8080 ~ 8090 のいずれか)。引き続きConnected to ...という応答が表示されるはずです。

      Trying *.*.*.*...
      Connected to www.example.com.
      Escape character is '^]'

      ブラウザでドメイン名にポート 8080 ~ 8090 のいずれかを使用してアクセスします(例:http://domain_name:8080)。以下のようなページが表示された場合、クライアントがアプリケーションにアクセスできることを確認できます。

      Hello World! This is ECS01, server port is 8080.
  3. このテストにより、単一のバックエンドサーバーが障害となっても NLB の可用性に影響がなく、ポート 8080 ~ 8090 のすべてに引き続きアクセス可能であることが確認できます。