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

Server Load Balancer:NLBを使用してIPv4サービスの負荷を分散する

最終更新日:Nov 08, 2024

Alibaba Cloud Network Load Balancer (NLB) は、TCP、UDP、およびSSL over TCPをサポートし、高性能なレイヤ4負荷分散機能を提供します。 このトピックでは、NLBインスタンスを作成してクライアント要求をバックエンドIPv4サービスに転送する方法について説明します。

前提条件

  • 仮想プライベートクラウド (VPC) は中国 (上海) リージョンに作成され、vSwitchはゾーンEとゾーンGのそれぞれに作成されます。この例では、VPCの名前はVPC1で、vSwitchの名前はVSW1とVSW2です。 詳細については、「VPCとvSwitchの作成」をご参照ください。

  • Elastic Compute Service (ECS) インスタンス (ECS01) がVSW1にデプロイされ、別のECSインスタンス (ECS02) がVSW2にデプロイされています。

    • ECSインスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。

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

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

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

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

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! this is ECS02." > index.html
  • ドメイン名を登録し、そのドメイン名に対してICP (Internet content provider) 番号を取得する。 詳細については、「Alibaba Cloudへのドメイン名の登録」および「概要」をご参照ください。

次の表に、VPC1の設定を示します。 構成は参照だけのためです。

クリックしてVPC設定を表示

パラメーター

説明

名前

VPC1

リージョン

中国 (上海)

IPv4 CIDRブロック

192.168.0.0/12

vSwitch

名前: VSW1

ゾーン: ゾーンE

IPv4 CIDRブロック: 192.168.5.0/24

名前: VSW2

ゾーン: ゾーンG

IPv4 CIDRブロック: 192.168.6.0/24

次の表に、ECS01およびECS02の設定を示します。 構成は参照だけのためです。

クリックしてECSインスタンス設定を表示

ECS インスタンス

リージョン

[VPC]

ゾーンとvSwitch

ECS設定

ECS01

中国 (上海)

VPC1

ゾーンE | VSW1

イメージ: Alibaba Cloud Linux 3.2104 LTS 64ビット

ECS02

ゾーンG | VSW2

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

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

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

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

  4. NLB (従量課金) 国際サイトページで、パラメーターを設定します。 今すぐ購入をクリックします。

    次の表に、一部のパラメーターのみを示します。 他のパラメーターはデフォルト値を使用します。 詳細については、「NLBインスタンスの作成と管理」をご参照ください。

    パラメーター

    説明

    リージョン

    NLBインスタンスを作成するリージョンを選択します。

    ネットワークタイプ

    NLBインスタンスのネットワークタイプを選択します。 システムは、選択したネットワークタイプに基づいて、NLBインスタンスにパブリックまたはプライベートIPアドレスを割り当てます。 この例では、インターネットが選択されています。

    [VPC]

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

    ゾーンID

    少なくとも2つのゾーンを選択します。 この例では、上海ゾーンE上海ゾーンGが選択され、各ゾーンのvSwitchが選択されています。

    IPバージョン

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

    [インスタンス名]

    NLBインスタンスの名前を入力します。

    リソースグループ

    NLBインスタンスのリソースグループを選択します。

    サービスにリンクされたロール

    NLBインスタンスを初めて作成するときに、[サービスにリンクされたロールの作成] をクリックして、AliyunServiceRoleForNlbサービスにリンクされたロールを作成します。 ロールにはAliyunServiceRolePolicyForNlbポリシーが割り当てられ、NLBが他のクラウドサービスにアクセスできるようにします。 詳細については、「NLBのシステムポリシー」をご参照ください。

手順2: サーバーグループの作成

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

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

  3. [サーバーグループの作成] ダイアログボックスでパラメーターを設定し、[作成] をクリックします。 下表にパラメーターを示します。

    次の表に、主要なパラメーターのみを示します。 他のパラメータはデフォルト値を使用する。 詳細については、「サーバーグループの作成と管理」をご参照ください。

    パラメーター

    説明

    サーバーグループタイプ

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

    サーバーグループ名

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

    VPC

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

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

    バックエンドプロトコルを選択します。 有効な値: TCP、UDP、SSL over TCP。 この例では、TCPが選択されています。

    スケジューリングアルゴリズム

    スケジューリングアルゴリズムを選択します。 この例では、[加重ラウンドロビン] が選択されています。

    ヘルスチェック

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

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

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

  6. [ポート /重み] ステップで、ポート80を指定し、デフォルトの重み100を使用して、[OK] をクリックします。

手順3: リスナーの設定

  1. 左側のナビゲーションウィンドウで、NLB > インスタンスを選択します。

  2. [インスタンス] ページで、管理するNLBインスタンスを見つけ、[リスナーの作成] をクリックします。

  3. Server Load Balancerの設定ページで、パラメーターを設定し、次へをクリックします。

    次の表に、一部のパラメーターのみを示します。 他のパラメーターはデフォルト値を使用します。 詳細については、「TCPリスナーの追加」をご参照ください。

    パラメーター

    説明

    リスナープロトコルの選択

    リスナープロトコルを選択します。 この例では、TCPが選択されています。

    リスナーポート

    リクエストを受信してバックエンドサーバーに転送するリスナーポートを指定します。 この例では、ポート80が選択されている。

    リスナー名

    リスナーの名前を入力します。

    詳細設定

    この例では、デフォルト設定を使用します。 [変更] をクリックして、設定を変更できます。

  4. サーバーグループステップで、サーバータイプを選択し、サーバータイプの横にあるドロップダウンリストからサーバーグループを選択します。サーバータイプバックエンドサーバーを表示し、次へをクリックします。

  5. 確定ステップで、設定を確認し、送信をクリックします。

  6. OK をクリックして [リスナー] タブに戻ります。 ヘルスチェックステータスのリスナーのステータスが [正常] に変更された後、ECS01とECS02はNLBインスタンスからリクエストを転送できます。

ステップ4: DNSレコードを作成する

実際のビジネスシナリオでは、CNAMEレコードを使用してカスタムドメイン名をNLBインスタンスのドメイン名にマップすることを推奨します。

  1. 左側のナビゲーションウィンドウで、NLB > インスタンスを選択します。

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

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

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

    2. ドメイン名の解決ページで、ドメイン名の追加をクリックします。

    3. ドメイン名の追加ダイアログボックスでドメイン名を入力し、OKをクリックします。

      重要

      CNAMEレコードを作成する前に、TXTレコードを使用してドメイン名の所有権を確認する必要があります。

    4. 管理するドメイン名を見つけて、アクション列のDNS設定をクリックします。

    5. ドメイン名の詳細ページのDNS設定タブで、DNSレコードの追加をクリックします。

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

      パラメーター

      説明

      レコードタイプ

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

      ホスト名

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

      説明

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

      DNSリクエストソース

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

      レコード値

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

      TTL

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

ステップ5: 結果を確認する

  1. NLBインスタンスの可用性をテストします。

    1. この例では、インターネットにアクセスできるLinuxクライアントが使用されています。 CentOSを使用し、telnetがインストールされていない場合は、yum install -y telnetコマンドを実行してtelnetをインストールします。

    2. telnet Domain name Portコマンドを実行します。 応答パケットに含まれるnlbに接続-...NLBインスタンスはバックエンドサーバーにリクエストを転送できます。

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

      http:// domain nameなど、ブラウザからドメイン名にアクセスします。 次の図に示すように応答パケットを受信できる場合、NLBインスタンスはバックエンドサーバーにリクエストを転送できます。

      image

  2. (オプション) 障害をシミュレートします。

    1. ECS01でアプリケーションを停止します。 ECS01でsystemctl stop nginx.serviceコマンドを実行し、アプリケーションを停止します。

    2. クライアントでtelnet Domain name Portコマンドをもう一度実行して、Connected to nlb-... を含む応答パケットを受信できるかどうかをテストします。

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

      http:// domain nameなど、ブラウザからドメイン名にアクセスします。 次の図に示すように応答パケットを受信できる場合、NLBインスタンスはバックエンドサーバーにリクエストを転送できます。

      image

    3. ECS01でアプリケーションを起動し、ECS02でアプリケーションを停止します。 ECS01でsystemctl start nginx.serviceコマンドを実行してアプリケーションを再起動し、ECS02でsystemctl stop nginx.serviceコマンドを実行してアプリケーションを停止します。

    4. クライアントでtelnet Domain name Portを再度実行して、Connected to nlb-... を含む応答パケットを受信できるかどうかをテストします。

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

      http:// domain nameなど、ブラウザからドメイン名にアクセスします。 次の図に示すように応答パケットを受信できる場合、NLBインスタンスはバックエンドサーバーにリクエストを転送できます。

      image

    5. 上記のテストでは、単一のサーバーによって引き起こされた単一障害点 (SPOF) がNLBインスタンスの可用性を損なうことはないことが示されています。

リリースリソース

  1. ECSインスタンスとセキュリティグループをリリースします。

    1. ECS01とそのセキュリティグループを削除します。

      1. ECS コンソールにログインします。 上部のナビゲーションバーで、ECS01インスタンスが存在するリージョンを選択し、ECS01の右側にあるimage.pngアイコンをクリックします。 表示されるダイアログボックスで、[リリース] を選択して、インスタンスをすぐにリリースします。

      2. ECS コンソールにログインします。 上部のナビゲーションバーで、ECS01が存在するリージョンを選択し、ECS01のセキュリティグループを選択し、[削除] をクリックしてセキュリティグループを削除します。

    2. 上記の手順を繰り返して、ECS02とそのセキュリティグループを削除します。

  2. DNSレコードを削除します。

    詳細については、「DNSレコードの削除」をご参照ください。

  3. NLBリソースをリリースします。

    1. ECS コンソールにログインします。 上部のナビゲーションバーで、NLBインスタンスが存在するリージョンを選択し、NLBインスタンスの右側にあるimage.pngアイコンをクリックします。 表示されるダイアログボックスで、[リリース] を選択し、[OK] をクリックします。

    2. NLBコンソールにログインします。 上部のナビゲーションバーで、NLBインスタンスが存在するリージョンを選択します。 [サーバーグループ] ページで、サーバーグループの右側にあるimage.pngアイコンをクリックします。 表示されるダイアログボックスで、[削除] を選択し、[OK] をクリックします。

  4. VPCリソースを解放します。

    1. VPCコンソールにログインします。 上部のナビゲーションバーで、VPCが存在するリージョンを選択します。

    2. [操作] 列の [削除] をクリックし、[強制削除] を選択してVPCとvSwitchを削除します。

関連ドキュメント

  • NLBの使用シナリオとコンポーネントの詳細については、NLBとは何ですか?

  • NLBの機能の詳細については、「関数と機能」をご参照ください。

  • NLBクォータの詳細とクォータを増やす方法については、「制限」をご参照ください。

  • NLBが使用可能なリージョンの詳細については、「NLBをサポートするリージョン」をご参照ください。

  • NLBの課金の詳細については、「NLB課金」をご参照ください。