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サービスにアクセスできます。
制限事項
デュアルスタックNLBインスタンスが使用可能なリージョンの詳細については、「NLBインスタンスの概要」をご参照ください。
デュアルスタック機能を有効にする場合は、VPCのゾーンのvSwitchに対してIPv6を有効にする必要があります。
デュアルスタックNLBインスタンスは、IPv6クライアントからのリクエストをIPv4およびIPv6バックエンドサービスに転送できます。
既存のIPv4 NLBインスタンスをデュアルスタックNLBインスタンスにアップグレードすることはできません。 デュアルスタックNLBインスタンスのみ作成できます。
IPv4 NLBインスタンスのリスナーを作成する場合、IPv6が有効になっているサーバーグループにリスナーを関連付けることはできません。
前提条件
中国 (上海) リージョンにVPC (VPC1) が作成され、VPCに対してIPv6が有効になっています。 IPv6を有効にすると、IPv6ゲートウェイが自動的に作成されます。 詳細については、「IPv4とIPv6の両方をサポートするVPCの作成」をご参照ください。
vSwitch (vSwitch1) は中国 (上海) ゾーンEに作成され、別のvSwitch (vSwitch2) は中国 (上海) ゾーンGに作成されます。vSwitch1およびvSwitch2に対してIPv6が有効になっています。 詳細については、「IPv4とIPv6をサポートするvSwitchの作成」をご参照ください。
ドメイン名を登録し、そのドメイン名に対してICP (Internet content provider) 番号を取得する。 詳細については、「Alibaba Cloudへのドメイン名の登録」および「ICP登録プロセス」をご参照ください。
ステップ1: ECSインスタンスの作成と設定
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、vSwitchをクリックします。
vSwitchのリージョンを選択します。 この例では、中国 (上海) が選択されています。
vSwitchページで、管理するvSwitchを見つけ、アクション列の を選択します。
Elastic Compute Serviceページの [カスタム起動] タブで、ECS01という名前のIPv4 ECSインスタンスとECS02という名前のIPv6 ECSインスタンスを作成します。 ECSインスタンスが追加されるセキュリティグループは、ポート80でのトラフィックを許可する必要があります。 詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
リモートでECS01およびECS02にログオンします。 詳細については、「ECSインスタンスへの接続方法」をご参照ください。
ECS01で次のコマンドを実行し、NGINXサービスをデプロイします。
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! this is ipv4 rs." > index.html
ECS02で次のコマンドを実行し、NGINXサービスをデプロイします。
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! this is ipv6 rs." > index.html
ECS02のIPv6アドレスを設定します。 詳細については、「IPv6アドレスの管理」をご参照ください。
説明[イメージ] セクションでAlibaba Cloud Linux 3.2104 LTS 64が選択され、[IPv6] セクションで [IPv6アドレス無料の割り当て] が選択されている場合は、この手順をスキップします。
ECS02にログインします。
ECS02のIPv6アドレスを設定します。
ip addr | grep inet6
またはifconfig | grep inet6
コマンドを実行します。次の図に示すように、IPv6アドレスがECS02に設定されている場合は、この手順をスキップします。
コマンド出力にinet6に関する情報が含まれていない場合、IPv6はECS02に対して無効になります。 最初にECS02のIPv6を有効にします。
コマンド出力にinet6に関する情報が含まれている場合、ECS02に対してIPv6が有効になり、ECS02に割り当てられたIPv6アドレスを識別できます。 ECS02のIPv6アドレスを設定します。
手順2: ECS02のセキュリティグループルールの設定
ECS02のセキュリティグループルールを設定して、インバウンドIPv6トラフィックを許可します。
ECSコンソールにログインします。
上部のナビゲーションバーで、セキュリティグループのリージョンを選択します。 この例では、中国 (上海) が選択されています。
左側のナビゲーションウィンドウで、を選択します。
セキュリティグループページで、管理するセキュリティグループを見つけて、ルールの管理で、アクション列を作成します。
セキュリティグループの詳細タブをクリックし、インバウンドのタブアクセスルールセクションにアクセスします。
[ルールの追加] をクリックし、パラメーターを設定します。 次に、[操作] 列の [保存] をクリックします。 下表にパラメーターを示します。
パラメーター
説明
Action
ルールのアクションを選択します。 この例では、[許可] が選択されています。
優先度
ルールの優先度を選択します。 数字が小さいほど、優先度が高くなります。 有効な値: 1 ~ 100
この例では、デフォルト値1が使用されます。
プロトコルタイプ
許可されるリクエストのタイプを選択します。 この例では、[すべてのICMP (IPv6)] が選択されています。
ポート範囲
IPv6クライアントからの要求を受け入れるポートの範囲を指定します。
[プロトコルタイプ] パラメーターを [すべてのICMP (IPv6)] に設定すると、[宛先] ドロップダウンリストから -1/-1が自動的に選択され、変更できません。
権限付与オブジェクト
ルールが適用されるIPv6 CIDRブロックを入力します。
この例では、::/0が使用されます。これは、ルールがすべてのIPv6アドレスに適用されることを示します。
説明ビジネス要件に基づいてIPv6アドレスを指定できます。
手順3: NLBインスタンスの作成
NLBコンソールにログインします。
[インスタンス] ページで、[NLBの作成] をクリックします。
購入ページで、パラメーターを設定しますをクリックし、今すぐ購入をクリックします。
次の表に、一部のパラメーターのみを示します。 他のパラメーターはデフォルト値を使用します。 詳細については、「NLBインスタンスの作成と管理」をご参照ください。
デュアルスタックNLBインスタンスを作成すると、デフォルトでプライベートIPv6アドレスが割り当てられます。 プライベートIPv6アドレスをパブリックIPv6アドレスに変更するには、次の手順を実行します。
インスタンスページに戻り、NLBインスタンスのIDをクリックします。
インスタンスの詳細 タブで、基本情報 セクションに移動し、ネットワーク パラメーターを見つけます。 次に、[IPv6: プライベート] の横にある ネットワークタイプの変更 をクリックします。
ネットワークタイプの変更メッセージで、OKをクリックします。
上記の操作を実行すると、プライベートIPv6アドレスがパブリックIPv6アドレスに変更されます。
手順4: サーバーグループの作成
上部のナビゲーションバーで、NLBインスタンスがデプロイされています。
[サーバーグループ] ページで、[サーバーグループの作成] をクリックします。
[サーバーグループの作成] ダイアログボックスでパラメーターを設定し、[作成] をクリックします。
次の表に、主要なパラメーターのみを示します。 他のパラメータはデフォルト値を使用する。 詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
サーバーグループタイプ
サーバーグループタイプを選択します。 この例では、[サーバータイプ] が選択されています。
サーバーグループ名
サーバーグループの名前を入力します。
[VPC]
サーバーグループのVPCを選択します。
説明VPCでIPv6が有効になっており、VPCがNLBインスタンスと同じリージョンにあることを確認します。
バックエンドサーバープロトコル
バックエンドプロトコルを選択します。 この例では、TCPが選択されています。
スケジューリングアルゴリズム
スケジューリングアルゴリズムを選択します。 この例では、[重み付きラウンドロビン] が選択されています。
IPv6 のマウント
IPv6を有効にするかどうかを指定します。 この例では、IPv6が有効になっています。
ヘルスチェック
ヘルスチェック機能を有効にするかどうかを指定します。 この例では、デフォルト設定が使用されています。
[操作] 列で、バックエンドサーバーの変更 をクリックし、バックエンドサーバーの追加 をクリックします。
[バックエンドサーバーの追加] パネルで、[サーバータイプ] を [ECS/ENI] に設定し、ECS01とECS02を選択し、[IP] 列でECS01のIPv4アドレスとECS02のIPv6アドレスを選択し、[次へ] をクリックします。
ポート/重みステップで、ECS01およびECS02の重みとポートを設定し、OKをクリックします。
この例では、両方のECSインスタンスがポート80とデフォルトの重み100を使用します。
手順5: リスナーの設定
左側のナビゲーションウィンドウで、を選択します。
[インスタンス] ページで、NLBインスタンスを見つけ、[操作] 列の [リスナーの作成] をクリックします。
リスナーの設定ステップで、パラメータを設定し、次へをクリックします。
次の表に、一部のパラメーターのみを示します。 他のパラメーターはデフォルト値を使用します。 詳細については、「TCPリスナーの追加」をご参照ください。
パラメーター
説明
リスナープロトコルの選択
リスナープロトコルを選択します。 この例では、TCPが選択されています。
リスナーポート
リクエストを受信してバックエンドサーバーに転送するリスナーポートを指定します。 この例では、ポート80が選択されている。
リスナー名
リスナーの名前を入力します。
詳細設定
この例では、デフォルト設定を使用します。 [変更] をクリックして、設定を変更できます。
サーバーグループステップで、サーバータイプを選択し、サーバータイプの横にあるドロップダウンリストからサーバーグループを選択します。バックエンドサーバーを確認し、次へをクリックします。
確定ステップで、設定を確認し、送信をクリックします。
OK をクリックして [リスナー] タブに戻ります。 ヘルスチェックステータスのリスナーのステータスが [正常] に変更された後、ECS01とECS02はNLBインスタンスからリクエストを転送できます。
ステップ6: 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) 値を指定します。 この例では、デフォルト値が使用されます。
ステップ7: Verify the result
テストドメイン名を取得します。
カスタムドメイン名をNLBインスタンスのドメイン名にマップするようにCNAMEレコードを構成した場合は、カスタムドメイン名をテストドメイン名として使用します。
カスタムドメイン名を使用しない場合は、NLBコンソールにログインし、NLBインスタンスがデプロイされているリージョンを選択し、[ドメイン名] 列にNLBインスタンスのドメイン名をコピーします。 ドメイン名をテストドメイン名として使用します。
NLBインスタンスの可用性をテストします。
説明NLBインスタンスの可用性をテストするには、クライアントがIPv6をサポートしていることを確認します。
IPv6サービスにアクセスできるLinuxクライアントを使用してテストを実行します。 CentOSを使用し、telnetがインストールされていない場合は、
yum install -y telnet
コマンドを実行してtelnetをインストールします。telnet Domain name Port
コマンドを実行します。 次の応答パケットでは、nlbに接続-...は、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示します。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'
ブラウザから
http:// domain name
などのドメイン名にアクセスします。 次の図は、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。
(オプション) 障害をシミュレートします。
ECS01で
systemctl stop nginx.service
コマンドを実行し、アプリケーションを停止します。数分待ってから、
telnet Domain name Port
コマンドをもう一度実行します。 nlbに接続-...応答パケットが返されます。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'
ブラウザから
http:// domain name
などのドメイン名にアクセスします。 次の図は、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。ECS01で
systemctl start nginx.service
コマンドを実行してアプリケーションを再起動し、ECS02でsystemctl stop nginx.service
コマンドを実行してアプリケーションを停止します。数分待ってから、
telnet Domain name Port
コマンドをもう一度実行します。 nlbに接続-...エコー応答パケットが返されます。Trying *.*.*.*... Connected to www.example.com. Escape character is '^]'
ブラウザから
http:// domain name
などのドメイン名にアクセスします。 次の図は、NLBインスタンスがバックエンドサーバーにリクエストを転送できることを示しています。テスト結果は、単一のバックエンドサーバーの障害がNLBインスタンスの可用性に影響を与えないことを示しています。
リリースリソース
ECSインスタンスとセキュリティグループをリリースします。
(オプション) DNSレコードを削除します。
詳細については、「DNSレコードの削除」をご参照ください。
NLBリソースをリリースします。
VPCリソースを解放します。
VPC コンソールにログインします。 上部のナビゲーションバーで、VPCが存在するリージョンを選択します。
[操作] 列の [削除] をクリックし、[強制削除] を選択してVPCとvSwitchを削除します。
関連ドキュメント
NLBの使用シナリオとコンポーネントの詳細については、NLBとは何ですか?
NLBの機能の詳細については、「関数と機能」をご参照ください。
NLBクォータの詳細とクォータを増やす方法については、「制限」をご参照ください。
NLBが利用可能なリージョンの詳細については、「NLBが利用可能なリージョンとゾーン」をご参照ください。
NLBの課金の詳細については、「NLB課金ルール」をご参照ください。