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

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

最終更新日:Nov 08, 2024

Network Load Balancer (NLB) はIPv6リクエストを転送できます。 このトピックでは、IPv4およびIPv6 Elastic Compute Service (ECS) インスタンスをデュアルスタックNLBインスタンスに追加する方法について説明します。 これにより、IPv6クライアントは、NLBインスタンスのバックエンドサーバーにデプロイされたIPv4およびIPv6サービスにアクセスできます。

例:

次の図は、このトピックの例を示しています。 企業は、NLBがIPv6クライアントからの要求を転送して、IPv6クライアントが仮想プライベートクラウド (VPC) のIPv4およびIPv6サービスにアクセスできるようにすることを望んでいます。 この要件を満たすには、会社はIPv4 ECSインスタンスとIPv4 ECSインスタンスを作成する必要があります。 また、同社はデュアルスタックNLBインスタンスを作成し、IPv6をサポートするサーバーグループを作成する必要があります。 これにより、IPv6クライアントは、NLBインスタンスのバックエンドサーバーとして機能するECSインスタンス上のIPv4およびIPv6サービスにアクセスできます。

image

制限事項

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

  • デュアルスタック機能を有効にする場合は、VPCのゾーンのvSwitchに対してIPv6を有効にする必要があります。

  • デュアルスタックNLBインスタンスは、IPv6クライアントからのリクエストをIPv4およびIPv6バックエンドサービスに転送できます。

  • 既存のIPv4 NLBインスタンスをデュアルスタックNLBインスタンスにアップグレードすることはできません。 デュアルスタックNLBインスタンスのみ作成できます。

  • IPv4 NLBインスタンスのリスナーを作成する場合、IPv6が有効になっているサーバーグループにリスナーを関連付けることはできません。

前提条件

  • 中国 (上海) リージョンにVPC (VPC1) が作成され、VPCに対してIPv6が有効になっています。 IPv6を有効にすると、IPv6ゲートウェイが自動的に作成されます。 IPv6ゲートウェイのインターネット帯域幅が有効になっていることを確認します。

  • vSwitch (vSwitch1) は中国 (上海) ゾーンEに作成され、別のvSwitch (vSwitch2) は中国 (上海) ゾーンGに作成されます。vSwitch1およびvSwitch2に対してIPv6が有効になっています。 詳細については、「IPv4とIPv6をサポートするvSwitchの作成」をご参照ください。

  • ドメイン名を登録し、そのドメイン名に対してICP (Internet content provider) 番号を取得する。 詳細については、「Alibaba Cloudへのドメイン名の登録」および「ICP登録プロセス」をご参照ください。

ステップ1: ECSインスタンスの作成と設定

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

  2. 左側のナビゲーションウィンドウで、vSwitchをクリックします。

  3. vSwitchのリージョンを選択します。 この例では、中国 (上海) が選択されています。

  4. vSwitchページで、管理するvSwitchを見つけ、アクション列のクラウドサービスの追加 > ECSインスタンスを選択します。

  5. Elastic Compute Serviceページの [カスタム起動] タブで、ECS01という名前のIPv4 ECSインスタンスとECS02という名前のIPv6 ECSインスタンスを作成します。 ECSインスタンスが追加されるセキュリティグループは、ポート80でのトラフィックを許可する必要があります。 詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。

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

    ECS インスタンス

    リージョン

    [VPC]

    vSwitch

    IPバージョン

    [イメージ]

    ECS01

    中国 (上海)

    VPC1

    ゾーンEのvSwitch1

    IPv4

    Alibaba Cloud Linux

    ECS02

    中国 (上海)

    VPC1

    ゾーンGのvSwitch2

    IPv6

    説明

    IPv6 ECSインスタンスを作成するときは、IPv6セクションの [IPv6アドレスを無料で割り当てる] を選択します。

    Alibaba Cloud Linux

  6. リモートでECS01およびECS02にログオンします。 詳細については、「ECSインスタンスへの接続方法」をご参照ください。

  7. ECS01で次のコマンドを実行し、NGINXサービスをデプロイします。

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! this is ipv4 rs." > index.html
  8. ECS02で次のコマンドを実行し、NGINXサービスをデプロイします。

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! this is ipv6 rs." > index.html
  9. 静的IPv6アドレスをECS02に割り当てます。

    説明

    IPv6セクションで [IPv6アドレス無料の割り当て] が選択されている場合は、この手順をスキップします。

    この例では、IPv6アドレスが手動でECS02に割り当てられる。 詳細については、「手順4: IPv6アドレスの設定」をご参照ください。

    1. vi /etc/sysconfig/network-scripts/ifcfg-eth0コマンドを実行して、ネットワークインターフェイスコントローラー (NIC) の構成ファイルを開きます。 コマンドのeth0をNICの実際の識別子に置き換えます。 ファイルに次の設定を追加します。

      DHCPV6C=yes
      IPV6INIT=yes
    2. 設定を追加した後、Escキーを押し、:wqと入力し、enterキーを押してファイルを保存して終了します。

    3. ECS02を再起動します。

      reboot
    4. ECS02を再起動して、IPv6がECS02に対して有効かどうかを確認します。

      ip addr | grep inet6またはifconfig | grep inet6コマンドを実行します。

      • コマンド出力にinet6に関する情報が含まれている場合、IPv6はECS02に対して有効です。

      • コマンド出力にinet6に関する情報が含まれていない場合、IPv6はECS02に対して無効になります。

    次の図は、IPv6がECS02に対して有効になっていることを示しています。ipv6

手順2: ECS02のセキュリティグループルールの設定

ECS02のセキュリティグループルールを設定して、インバウンドIPv6トラフィックを許可します。

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

  2. 上部のナビゲーションバーで、セキュリティグループのリージョンを選択します。 この例では、中国 (上海) が選択されています。

  3. 左側のナビゲーションウィンドウで、ネットワーク&セキュリティ > セキュリティグループを選択します。

  4. セキュリティグループページで、管理するセキュリティグループを見つけ、アクション列のルールの管理をクリックします。

  5. セキュリティグループの詳細タブで、アクセスルールセクションのインバウンドタブをクリックします。

  6. [ルールの追加] をクリックし、パラメーターを設定します。 次に、[操作] 列の [保存] をクリックします。 下表にパラメーターを示します。

    パラメーター

    説明

    Action

    ルールのアクションを選択します。 この例では、[許可] が選択されています。

    優先度

    ルールの優先度を選択します。 数字が小さいほど、優先度が高くなります。 有効な値: 1 ~ 100

    この例では、デフォルト値1が使用されます。

    プロトコルタイプ

    許可されるリクエストのタイプを選択します。 この例では、[すべてのICMP (IPv6)] が選択されています。

    ポート範囲

    IPv6クライアントからの要求を受け入れるポートの範囲を指定します。

    [プロトコルタイプ] パラメーターを [すべてのICMP (IPv6)] に設定すると、[宛先] ドロップダウンリストから -1/-1が自動的に選択され、変更できません。

    権限付与オブジェクト

    ルールが適用されるIPv6 CIDRブロックを入力します。

    この例では、::/0が使用されます。これは、ルールがすべてのIPv6アドレスに適用されることを示します。

    説明

    ビジネス要件に基づいてIPv6アドレスを指定できます。

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

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

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

  3. 購入ページで、パラメーターを設定し、今すぐ購入をクリックします。

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

    設定例

    パラメーター

    説明

    リージョン

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

    ネットワークタイプ

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

    説明

    インターネットネットワークタイプは、IPv4 NLBインスタンスでのみサポートされています。 デフォルトでは、IPv6 NLBインスタンスは内部対応です。 この例では、インターネットに接続するIPv6 NLBインスタンスが必要です。 IPv6アドレスをパブリックIPv6アドレスに変更するには、手順4を実行します。

    [VPC]

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

    説明

    VPCでIPv6機能が有効になっていることを確認します。

    ゾーン

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

    IPバージョン

    NLBインスタンスのIPバージョンを選択します。 この例では、デュアルスタックネットワーキングが選択されています。

    [インスタンス名]

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

    リソースグループ

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

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

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

  4. デュアルスタックNLBインスタンスを作成すると、デフォルトでプライベートIPv6アドレスが割り当てられます。 プライベートIPv6アドレスをパブリックIPv6アドレスに変更するには、次の手順を実行します。

    1. インスタンスページに戻り、NLBインスタンスのIDをクリックします

    2. インスタンスの詳細 タブで、基本情報 セクションに移動し、ネットワーク パラメーターを見つけます。 次に、[IPv6: プライベート] の横にある ネットワークタイプの変更 をクリックします。

    3. ネットワークタイプの変更メッセージで、OKをクリックします。

      上記の操作を完了すると、プライベートIPv6アドレスがパブリックIPv6アドレスに変更されます。

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

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

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

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

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

    パラメーター

    説明

    サーバーグループタイプ

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

    サーバーグループ名

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

    [VPC]

    サーバーグループのVPCを選択します。

    説明

    VPCでIPv6が有効になっており、VPCがNLBインスタンスと同じリージョンにあることを確認します。

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

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

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

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

    IPv6 のマウント

    IPv6を有効にするかどうかを指定します。 この例では、IPv6が有効になっています。

    ヘルスチェック

    ヘルスチェック機能を有効にするかどうかを指定します。 この例では、デフォルト設定が使用されています。

  4. [操作] 列で、バックエンドサーバーの変更 をクリックし、バックエンドサーバーの追加 をクリックします。

  5. [バックエンドサーバーの追加] パネルで、[サーバータイプ][ECS/ENI] に設定し、ECS01とECS02を選択し、[IP] 列でECS01のIPv4アドレスとECS02のIPv6アドレスを選択し、[次へ] をクリックします。

  6. ポート/重みステップで、ECS01およびECS02の重みとポートを設定し、OKをクリックします。

    この例では、両方のECSインスタンスがポート80とデフォルトの重み100を使用します。

手順5: リスナーの設定

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

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

  3. リスナーの設定ステップ、パラメータを設定し、次へをクリックします。

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

    パラメーター

    説明

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

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

    リスナーポート

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

    リスナー名

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

    詳細設定

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

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

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

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

ステップ6: 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) 値を選択します。 この例では、デフォルト値が使用されます。

ステップ7: Verify the result

  1. テストドメイン名を取得します。

    1. カスタムドメイン名をNLBインスタンスのドメイン名にマップするようにCNAMEレコードを構成した場合は、カスタムドメイン名をテストドメイン名として使用します。

    2. カスタムドメイン名を使用しない場合は、NLBコンソールにログインし、NLBインスタンスがデプロイされているリージョンを選択し、[ドメイン名] 列にNLBインスタンスのドメイン名をコピーします。 ドメイン名をテストドメイン名として使用します。

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

    説明

    NLBインスタンスの可用性をテストするには、クライアントがIPv6をサポートしていることを確認します。

    1. IPv6サービスにアクセスできる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

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

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

    2. 数分待ってから、telnet Domain name Portコマンドをもう一度実行します。 nlbに接続-...応答パケットが返されます。

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

      ブラウザからhttp:// domain nameなどのドメイン名にアクセスします。 次の図は、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。

      image

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

    4. 数分待ってから、telnet Domain name Portコマンドをもう一度実行します。 nlbに接続-...エコー応答パケットが返されます。

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

      ブラウザからhttp:// domain nameなどのドメイン名にアクセスします。 次の図は、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。

      image

    5. テスト結果は、単一のバックエンドサーバーの障害が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を削除します。

関連ドキュメント