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

Server Load Balancer:レイヤ4リスナーをCLBからNLBに手動で移行するためのベストプラクティス

最終更新日:Dec 03, 2024

Classic Load Balancer (CLB) と比較して、Network Load Balancer (NLB) は、より高性能なレイヤ4負荷分散機能をサポートします。 NLBは、多数の同時接続、TCPトラフィックのSSLオフロード、および接続スロットリングもサポートしています。 成長するビジネスで、より高いパフォーマンス、より高い安定性、およびより高いスケーラビリティを備えた機能が必要な場合は、CLBインスタンスからNLBインスタンスにレイヤー4リスナーを移行して、高並行性サービスをサポートできます。

主な機能

CLBからNLBにワークロードを移行すると、NLBは次の機能を提供します。

  • 高い同時実行性: 各NLBインスタンスは、最大100万の同時接続と100 Gbit/sの帯域幅をサポートします。 NLBは、モノのインターネット (IoT) デバイスからの多数の同時接続に耐えることができます。

  • 自動スケーリング: NLBは、インスタンス仕様を手動で変更することなく、ビジネス要件に基づいてリソースを自動的にスケールインまたはスケールアウトします。

  • マルチポートリスニング: NLBは、指定されたポート範囲内のすべてのネットワークトラフィックを処理できるマルチポートリスニング機能をサポートしています。 この機能は、多数のポートまたは動的ポートを必要とするシナリオに最適です。

  • さまざまなIPv6機能: NLBは、デュアルスタックネットワーキング、IPv6-to-IPv4転送、IPv6-to-IPv6転送など、さまざまなIPv6機能をサポートしています。

一般的なシナリオ

以下のシナリオでは、CLBからNLBにワークロードを移行できます。

  • インスタントメッセージングやIoTデバイス管理など、多数の同時接続。

  • 大きなトラフィック変動が予想されるeコマース販売促進活動など、トラフィックの急増に基づく自動リソーススケーリング。

  • オンラインゲーム、ビデオ会議システム、オンライン教育プラットフォームなど、さまざまなシナリオでデータを処理するための多数のポート。

  • IPv4-to-IPv6移行などのネットワークリソースのスケールアウト。

以下の図は一例です。 ある会社が、中国 (杭州) リージョンにインターネット向けのCLBインスタンスを作成しました。 CLBインスタンスにTCPリスナーが設定されています。 CLBインスタンスはドメイン名を使用してサービスを提供します。 クライアントがwww.example.cnにアクセスすると、リクエストはAレコードに基づいてCLBインスタンスに転送されます。 CLBインスタンスは、スケジューリングアルゴリズムに基づいて要求をECS01およびECS02に転送します。

image

ビジネスの発展に伴い、IoTサービスをサポートするために、ワークロードをCLBインスタンスからNLBインスタンスに移行する必要があります。 サービスの安定性を確保するために、会社はバックエンドサーバーのIPアドレスやサービスの提供に使用されるドメイン名を変更したくありません。 この場合、会社は中国 (杭州) リージョンにNLBインスタンスを作成し、CLBインスタンスと同じ設定をNLBインスタンスに適用できます。 次に、会社はDNSレコードの重みを指定して、CLBインスタンスからNLBインスタンスにワークロードを移行できます。

image

注意事項

  • CLBとNLBは、

    従量課金の課金方法。 CLBとNLBの请求可能なアイテムと请求ルールは异なります。 CLBからNLBにワークロードを移行すると、課金が変更される場合があります。 詳細については、以下のトピックをご参照ください。

  • CLBインスタンスのNLBインスタンスとバックエンドサーバーは、同じ仮想プライベートクラウド (VPC) にある必要があります。 NLBインスタンスとCLBインスタンスは、同じバックエンドサーバーを使用する必要があります。

  • IPv4 CLBインスタンスは、IPv4またはデュアルスタックNLBインスタンスに移行できます。 IPv6 CLBインスタンスは、デュアルスタックNLBインスタンスにのみ移行できます。

前提条件

  • TCPリスナーとバックエンドサーバーがCLBインスタンスに設定されています。 ドメイン名を使用してサービスを提供するために、CLBインスタンスにAレコードが設定されます。 詳細については、「概要」をご参照ください。

  • 2つのECS (Elastic Compute Service) インスタンスECS01とECS02がバックエンドサーバーとして作成されます。 アプリケーションはECS01およびECS02にデプロイされます。 ECSインスタンスの作成方法の詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

    説明
    • CLBインスタンスがUDPリスナーを使用する場合、ワークロードをCLBインスタンスからNLBインスタンスに移行するときに、NLBインスタンスのUDPリスナーを設定します。

    • 2つのテストサーバーを準備します。1つは移行前のトラフィックテスト用、もう1つは移行中のトラフィックテスト用です。 既存のサーバーをテストに使用することもできます。 この例では、サーバーは64ビットAlibaba Cloud Linux 3.2104 64オペレーティングシステムを実行します。

    次のコマンドは、ECS01およびECS02にアプリケーションをデプロイする方法を示しています。

    ECS01にアプリケーションをデプロイするためのコマンド

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World !  this is ESC01." > index.html

    ECS02にアプリケーションをデプロイするためのコマンド

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World !  this is ESC02." > index.html

クリックしてCLBおよびNLBパラメーター設定を表示

パラメーター

CLB

NLB

ネットワークタイプ

インターネットに接続

サービスIPアドレス: 112.XX. XX.26

インターネットに接続

ドメイン名:

nlb-h8z2851bv87 ******* .cn-hangzhou.nlb.aliyuncsslbintl.com

DNSレコードによってマッピングされたドメイン名

www.example.cn

www.example.cn

リスナープロトコル

TCP (ポート80)

TCP (ポート80)

バックエンドサーバー

ECS01およびECS02

ECS01およびECS02

手順1: NLBインスタンスの作成

  1. NLBコンソールにログインします。

  2. 上部のナビゲーションバーで、NLBインスタンスがデプロイされています。

  3. [インスタンス] ページで、[NLBの作成] をクリックします。

  4.  

    NLB (従量課金) 国際サイトページでパラメーターを設定し、[今すぐ購入] をクリックします。 次の表に、一部のパラメーターのみを示します。 他のパラメータはデフォルト値を使用する。

    パラメーター

    説明

    リージョン

    NLBインスタンスを作成するリージョンを選択します。 この例では、中国 (杭州) が選択されています。

    ネットワークタイプ

    この例では、インターネットが選択されています。

    説明

    イントラネットを選択した場合、2つの仮想IPアドレス (VIP) を使用するNLBインスタンスは、プライベート接続、100,000の新しい接続、および1.5百万の同時接続で10 Gbit/sの帯域幅をサポートします。 さらに、NLBインスタンスは自動スケーリングをサポートしており、帯域幅を最大50 Gbit/sまで増やすことができます。

    IPバージョン

    ALBインスタンスのIPバージョンを選択します。 この例では、IPv4が選択されています。

    [VPC]

    NLBインスタンスをデプロイするVPCを選択します。

    ゾーン

    ゾーンとvSwitchを選択します。 この例では、杭州ゾーンH杭州ゾーンI、および各ゾーンのvSwitchが選択されています。

    EIP帯域幅プランとの関連付け

    この例では、[EIP帯域幅プランに関連付ける] が選択され、インターネット共有帯域幅インスタンスが選択されています。 インターネット共有帯域幅インスタンスがない場合は、[EIP帯域幅プランの購入] をクリックして支払いを完了します。

    説明

    ワークロードで大量のインターネットトラフィックが予想される場合:

    • NLBインスタンスをインターネット共有帯域幅インスタンスに関連付けることができます。 NLBインスタンスの最大帯域幅は、インターネット共有帯域幅インスタンスの最大帯域幅によって決まります。

    • NLBインスタンスをインターネット共有帯域幅インスタンスに関連付けない場合、NLBインスタンスはデフォルトで従量課金EIPアドレス (EIP) を使用します。 この場合、NLBインスタンスの最大帯域幅は400 Mbit/sです。これは保証されたサービス期間ではありません。 NLBインスタンスが到達できる最大帯域幅のみを示します。

    • NLBインスタンスを購入した後、インターネット共有帯域幅インスタンスに関連付けることができます。 詳細については、「インターネット接続NLBインスタンスの最大帯域幅の変更」をご参照ください。

手順2: NLBインスタンスのサーバーグループを作成する

  1. NLBコンソールにログインします。

  2. 上部のナビゲーションバーで、NLBインスタンスがデプロイされています。

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

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

  5. [サーバーグループの作成] ダイアログボックスでパラメーターを設定し、[作成] をクリックします。 次の表に、一部のパラメーターのみを示します。 他のパラメータはデフォルト値を使用する。

    パラメーター

    説明

    サーバーグループタイプ

    作成するサーバーグループのタイプを選択します。 この例では、[サーバー] が選択されています。

    サーバーグループ名

    サーバーグループの名前を入力します。

    [VPC]

    ドロップダウンリストからNLBインスタンスのVPCを選択します。 サーバーグループに追加できるのは、NLBインスタンスのVPC内のサーバーのみです。

    バックエンドサーバープロトコル

    バックエンドプロトコルを選択します。 この例では、TCPが選択されています。

    ヘルスチェックの設定

    ヘルスチェックはデフォルトで有効です。 この例では、デフォルト設定が使用されています。

  6. サーバーグループのIDをクリックして、[バックエンドサーバー] タブに移動します。

  7. [バックエンドサーバーの追加] をクリックします。 [バックエンドサーバーの追加] パネルで、[ECS01] と [ECS02] を選択し、[次へ] をクリックします。

  8. [ポート /重み] ステップで、ポート80を入力し、デフォルトの重みのままにして、[OK] をクリックします。

ステップ3: TCPリスナーの作成

  1. NLBコンソールにログインします。

  2. 上部のナビゲーションバーで、NLBインスタンスがデプロイされています。

  3. [インスタンス] ページで、管理するNLBインスタンスのIDをクリックします。

  4. [リスナー] タブをクリックし、[リスナーのクイック作成] をクリックします。

  5. [クイック作成リスナー] ダイアログボックスでパラメーターを設定し、[OK] をクリックします。 下表に、各パラメーターを説明します。

    パラメーター

    説明

    リスナープロトコル

    この例では、TCPが選択されています。

    リスナーポート

    この例では、ポート80が指定されています。

    サーバーグループ

    この例では、サーバータイプが選択され、ステップ2で作成されたサーバーグループが選択されています。

ステップ4: ネットワークトラフィックのテスト

  1. 移行前にトラフィックテストに使用されるインターネット向けLinuxサーバーにログオンします。

  2. 次のコマンドを実行してhostsファイルを変更します。

    sudo vi /etc/hosts
    1. Iキーを押して編集モードに入ります。 NLBインスタンスのIPアドレスをドメイン名にマッピングするレコードを追加します。

    47.XX.XX.101 www.example.cn
    1. 変更が完了したら、Escキーを押して :wqと入力し、enterキーを押してファイルを保存して閉じます。

    説明

    この手順では、ドメイン名www.example.cnをNLBインスタンスの指定されたEIP (47.XX. XX.101など) にマップし、既存のDNSレコードを上書きします。 移行の前に、ドメイン名からのリクエストがNLBインスタンスにアクセスできるかどうかをテストする必要があります。

  3. 次のコマンドを実行して、ドメイン名からのリクエストがNLBインスタンスにアクセスできるかどうかをテストします。Telnetがインストールされていない場合は、yum install -y telnetコマンドを実行してTelnetをインストールします。

    telnet www.example.cn 80  # The TCP listener port 80

    を含む応答パケットを受信した場合nlbに接続-...ドメイン名からのリクエストはバックエンドサーバーに転送できます。

    测试访问流量.png

  4. NLBインスタンスの操作ログを表示します。

    1. NLBコンソールにログインします。

    2. 左側のナビゲーションウィンドウで、[NLB] > [操作ログ] を選択します。

    3. [操作ログ] ページで、[イベント名] パラメーターを [GetLoadBalancerAttribute] に設定し、[クエリ] をクリックします。

    4. イベントの左側にある+.pngアイコンをクリックし、[イベントの詳細] をクリックします。 requestParameterJsonフィールドとLoadBalancerIdフィールドを見つけて、NLBインスタンスの操作ログデータを表示できます。

手順5: ワークロードをNLBインスタンスに移行

CLBがリクエストを処理する方法を次の図に示します。 TCPリスナーはCLBインスタンスに設定されており、複数のドメイン名からアクセスできます。 この例では、ドメイン名example.cnが使用されています。

image
    警告
    • 移行を実行する前に、CLBインスタンスとNLBインスタンスの設定を比較してください。 移行中の予期しないイベントを防ぐために、CLBインスタンスとNLBインスタンスが同じ設定を使用し、設定が完全にテストされていることを確認してください。

    • オフピーク時に移行を実行することを推奨します。

サービスドメイン名をCLBインスタンスのIPアドレスにマッピングするために、CLBインスタンスのAレコードが設定されています。

image

NLBインスタンスの設定がテストされます。 この例では、Alibaba Cloud DNSを使用して、CLBインスタンスからNLBインスタンスにワークロードを移行する方法を説明します。 次の手順は、ワークロードをCLBからNLBに移行する方法を示しています。 Alibaba Cloud DNSの詳細については、「パブリック権限DNS解決」をご参照ください。

image

手順1: CLBインスタンスの一時ドメイン名の設定

NLBインスタンスのCNAMEレコードを設定することを推奨します。 異なる重みを持つDNSレコードを設定するには、一時ドメイン名にCNAMEレコードを追加して、一時ドメイン名をCLBインスタンスのサービスIPアドレスにマップします。

説明

同じドメイン名の異なるDNSレコードに重みを設定するには、DNSレコードが同じタイプで、同じホスト名とISP回線を持つ必要があります。 A、CNAME、およびAAAAのレコードタイプがサポートされています。

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

  2. [権限DNS解決] ページで、ドメイン名www.example.cnをクリックします。

  3. [DNS設定] タブで、[DNSレコードの追加] をクリックします。 [DNSレコードの追加] パネルでパラメーターを設定し、[OK] をクリックします。 下表に、各パラメーターを説明します。

    パラメーター

    説明

    レコードタイプ

    DNSレコードのタイプ。 この例では、ドロップダウンリストからCNAMEが選択されています。

    ホスト名

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

    DNSリクエストソース

    ドメイン名訪問者がいるリージョンと、ドメイン名訪問者が使用するキャリアネットワーク。 この例では、デフォルトが選択されています。

    レコード値

    一時ドメイン名を入力します。 この例では、web0.example.cnが使用されています。

    TTL

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

  4. [DNS設定] タブで、CLBインスタンスのIPアドレスを指すAレコードを見つけ、[操作] 列の [変更] をクリックします。

  5. [DNSレコードの変更] パネルで、[ホスト名] パラメーターの値を変更し、[OK] をクリックします。 この例では、Hostnameパラメーターはweb0に設定されています。 他のパラメータは変更されない。

手順2: NLBインスタンスのCNAMEの設定

説明

ドメイン名をゾーンのVIPにマップするようにAレコードを設定することもできます。

  1. NLBコンソールにログインします。

  2. 上部のナビゲーションバーで、NLBインスタンスのリージョンを選択します。 この例では、NLBインスタンスは中国 (杭州) リージョンに作成されています。

  3. NLBインスタンスを見つけて、NLBインスタンスのドメイン名をコピーします。

  4. CNAMEレコードを作成するには、次の操作を実行します。

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

    2. 管理するドメイン名を見つけて、[操作] 列の [設定] をクリックします。 この例では、ドメイン名はCLBインスタンスのドメイン名です。

    3. DNS設定ページで、レコードの追加をクリックします。

    4. [DNSレコードの追加] パネルでパラメーターを設定し、[OK] をクリックします。 下表にパラメーターを示します。

      パラメーター

      説明

      レコードタイプ

      DNSレコードのタイプ。 この例では、ドロップダウンリストからCNAMEが選択されています。

      ホスト名

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

      DNSリクエストソース

      ドメイン名訪問者がいるリージョンと、ドメイン名訪問者が使用するキャリアネットワーク。 この例では、デフォルトが選択されています。

      レコード値

      NLBインスタンスのドメイン名であるCNAMEを入力します。

      TTL

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

      説明
      • 新しいCNAMEレコードはすぐに有効になります。 CNAMEレコードの変更は、CNAMEレコードのTTLが終了すると有効になります。デフォルトでは10分です。

      • 作成するCNAMEレコードが既存のレコードと競合する場合は、別のドメイン名を指定します。

ステップ3: DNSレコードの重みを指定し、カナリアリリースを実行する

  1. 権威DNS解決ページで、管理するドメイン名のIDをクリックします。

  2. [重み設定] タブをクリックしてドメイン名を見つけ、[操作] 列の [重みの設定] をクリックします。

    同じドメイン名の異なるDNSレコードに重みを設定するには、DNSレコードが同じタイプで、同じホスト名とISP回線を持つ必要があります。 A、CNAME、およびAAAAのレコードタイプがサポートされています。

  3. [重みの設定] パネルで、CLBインスタンスとNLBインスタンスのDNSレコードの重みを指定します。 CLBインスタンスのDNSレコードの重みを100に設定します。 NLBインスタンスのDNSレコードの重みを0に設定します。

    权重设置-cn.png

  4. CLBインスタンスのDNSレコードの重みを徐々に減らし、NLBインスタンスのDNSレコードの重みを徐々に増やします。 サービスが影響を受けないようにしてください。

  5. 移行の実行に使用されるLinuxクライアントにログオンし、掘るコマンドを複数回実行して、移行後のネットワークトラフィックをテストします。

    dig www.example.cn

以下の図は結果を示す。 結果は、リクエストがDNSレコードの重みに基づいてCLBまたはNLBインスタンスに転送されることを示しています。

流量测试0.png

流量测试100.png

手順4: すべてのワークロードをCLBインスタンスからNLBインスタンスに移行

CLBインスタンスのDNSレコードの重みを0に徐々に減らし、NLBインスタンスのDNSレコードの重みを100に徐々に増やします。 次に、すべてのワークロードがCLBインスタンスからNLBインスタンスに移行されます。 CLBインスタンスのすべての永続接続が閉じられ、リクエストがCLBインスタンスに送信されなくなった後、適切な期間が経過した後にCLBインスタンスをリリースできます。 CLBインスタンスをリリースする方法の詳細については、「CLBインスタンスのリリース」をご参照ください。

次の図は、移行完了後にNLBインスタンスがリクエストを処理する方法を示しています。

image

DNSサービスプロバイダーでCNAMEレコードの重みを指定できない場合は、をクリックして別の移行ソリューションを表示します。

image

高度な機能

NLBは、CLBよりもレイヤー4で強力な負荷分散機能をサポートします。 NLBのいくつかの機能は、CLBとは異なる方法で動作し得る。 NLB、NLBクォータ、NLB制限、DDoSの軽減、およびNLBの使用を開始する方法の詳細については、次のトピックを参照してください。

次の表に、CLBとNLBの高度な機能の違いを示します。

機能

CLB

NLB

サーバーグループ管理

デフォルトのサーバーグループ、vServerグループ、およびプライマリ /セカンダリサーバーグループがサポートされています。

サーバーグループがサポートされています。

一方向認証

Alibaba Cloudによって発行された証明書とサードパーティの証明書がサポートされています。 詳細については、「HTTPSリクエストの一方向認証の設定」をご参照ください。

NLBインスタンスをingressとしてデプロイして、ネットワークトラフィックを分散し、SSL証明書を設定できます。 このようにして、NLBインスタンスのTCP/SSLリスナーは、暗号化されたトラフィックを平文トラフィックに復号化し、平文トラフィックをバックエンドサーバーに配信します。 詳細については、「NLBを使用したTCP経由のSSLオフロード (一方向認証) 」をご参照ください。

相互認証

Alibaba Cloudによって発行された証明書とサードパーティの証明書がサポートされています。 詳細については、「HTTPSリスナーの相互認証の設定」をご参照ください。

NLBインスタンスをingressとしてデプロイして、ネットワークトラフィックを分散し、SSL証明書とCA証明書を設定できます。 このようにして、NLBインスタンスのTCP/SSLリスナーは、通信を確立する前にサーバーとクライアントの両方を認証します。 詳細については、「NLBを使用したTCP経由のSSLオフローディング (相互認証) 」をご参照ください。

マルチポートリスニング

非対応

マルチポートリスニングを使用すると、単一のリスナーが複数のポートでネットワークトラフィックを転送できるため、NLBは指定されたポート範囲内のすべてのネットワークトラフィックを監視および応答できます。 これにより、設定とO&Mが簡素化され、セキュリティリスクが最小限に抑えられます。 詳細については、「NLBのマルチポートリスニングと転送の有効化」をご参照ください。

セキュリティ

ホワイトリストとブラックリストに基づくアクセス制御がサポートされています。 詳細は、「アクセス制御」をご参照ください。

セキュリティグループに基づくリスナーとポートのアクセス制御、およびホワイトリストとブラックリストに基づくアクセス制御がサポートされています。 詳細については、以下のトピックをご参照ください。

よくある質問

  1. 移行前と移行後のCLBインスタンスとNLBインスタンスの設定を変更しないでください。

    リージョン、ネットワークタイプ、リスナープロトコル、およびバックエンドサーバーは変更しないでください。 NLBインスタンスは、CLBインスタンスと同じVPCにある必要があります。 NLBインスタンスとCLBインスタンスは、異なるゾーンに配置できます。

  2. CLBで使用される証明書とNLBで使用される証明書の違いは何ですか?

    CLBはHTTPSによる暗号化送信をサポートしています。 NLBは、SSLによって暗号化されたTCP接続をサポートします。 CLBは、Alibaba Cloudによって発行された証明書とサードパーティの証明書をサポートしています。 NLBで使用される証明書は、Alibaba Cloud Certificate Management Serviceによって管理されます。

  3. CLBとNLBのアクセス制御の違いは何ですか?

    • CLBはリスナーのアクセス制御をサポートしています。 リスナーごとに異なるアクセス制御リスト (ACL) を設定できます。 詳細は、「アクセス制御」をご参照ください。

    • NLBは、セキュリティグループを使用して、プロトコル、ポート、およびIPアドレスに基づいてアクセスを制御します。 詳細については、「セキュリティグループへのNLBインスタンスの追加」をご参照ください。

  4. CLBとNLBのドメイン名解決の違いは何ですか?

    • CLBはAレコードを使用して、カスタムドメイン名をCLBインスタンスのIPアドレスに解決します。

    • NLBインスタンスの場合:

      • より便利な方法でサービスへのアクセスを許可するには、CNAMEレコードを使用してカスタムドメイン名をNLBインスタンスのドメイン名にマップすることを推奨します。

      • カスタムドメイン名を特定のIPアドレスに解決するには、aレコードを使用してカスタムドメイン名をNLBインスタンスのIPアドレスに解決することを推奨します。

関連ドキュメント