Application Load Balancer (ALB) は、IPv6 リクエストの転送をサポートします。このトピックでは、デュアルスタック ALB インスタンスで IPv6 を有効にする方法について説明します。これにより、インスタンスは IPv4 と IPv6 の両方の Elastic Compute Service (ECS) インスタンスをバックエンドサーバーとして使用でき、IPv6 クライアントはそれらのサーバーにデプロイされた IPv4 および IPv6 サービスにアクセスできます。
シナリオ例
このトピックでは、次の図に示すシナリオを使用します。ある企業が ALB インスタンスを使用して、IPv6 クライアントからのインターネットリクエストを Virtual Private Cloud (VPC) 内の IPv4 および IPv6 サービスに転送したいと考えています。これを実現するには、IPv4 と IPv6 の両方のアドレスを持つ ECS インスタンス、VPC 内にデュアルスタック ALB インスタンス、および IPv6 が有効なサーバーグループを作成する必要があります。設定が完了すると、ALB インスタンスは IPv6 クライアントからのリクエストを、バックエンドの IPv4 および IPv6 の ECS インスタンス上のサービスにルーティングできます。
制限事項
デュアルスタック ALB インスタンスをサポートするリージョンについては、「デュアルスタック ALB インスタンスをサポートするリージョン」をご参照ください。
デュアルスタック機能を使用するには、対象の VPC ゾーンにある vSwitch で IPv6 を有効にする必要があります。
デュアルスタック ALB インスタンスは、IPv4 および IPv6 クライアントからのリクエストを IPv4 および IPv6 バックエンドサービスに転送できます。詳細については、「ALB インスタンスの概要」をご参照ください。
既存の IPv4 インスタンスをデュアルスタックインスタンスにアップグレードすることはできません。新しいデュアルスタックインスタンスのみを作成できます。
IP バージョン が IPv4/IPv6 デュアルスタック に設定されているサーバーグループは、デュアルスタック ALB インスタンスのリスナーまたは転送ルールにのみ追加できます。
前提条件
中国 (上海) リージョンに VPC1 という名前の VPC、ゾーン E に VSW1 という名前の vSwitch、ゾーン G に VSW2 という名前の vSwitch を作成済みであること。VPC1 で IPv6 CIDR ブロックが有効になっており、VSW1 と VSW2 の両方で IPv6 が有効になっていること。VPC で IPv6 CIDR ブロックを有効にすると、システムは自動的に IPv6 ゲートウェイを作成します。
ALB インスタンスを VSW1 と VSW2 にデプロイする予定の場合、アップグレードされた ALB インスタンス は、指定された各 vSwitch から 3 つの IP アドレス (サービスを提供するための仮想 IP アドレス (VIP) 1 つと、バックエンドサーバーと通信するためのローカル IP アドレス 2 つ) を予約することにご注意ください。 vSwitch の利用可能な IP アドレスが不足している場合、インスタンスの作成は失敗します。 VSW1 と VSW2 に十分な利用可能な IP アドレスがあることを確認してください。 この制限は、アップグレードされていない ALB インスタンスには適用されません。
説明アップグレードされた ALB インスタンスのすべての弾力性機能を確実に利用できるようにするために、ALB インスタンスがデプロイされている各 vSwitch で少なくとも 8 つの IP アドレスを予約することを推奨します。
アップグレードされた ALB インスタンスとバックエンドサーバー間の接続性を確保するために、バックエンドサービスにアクセス ポリシー (iptables やその他のサードパーティ製セキュリティポリシーソフトウェアなど) を設定している場合は、ALB インスタンスがデプロイされている vSwitch の CIDR ブロックからのトラフィックを許可してください。
ステップ 1:ECS インスタンスの作成と設定
- VPC コンソールにログインします。
左側メニューで、vSwitch をクリックします。
vSwitch のリージョンを選択します。この例では、[中国 (上海)] が選択されています。
vSwitch ページで、対象の vSwitch を見つけます。操作 列で、 を選択します。
[Elastic Compute Service] 購入ページで、[カスタム購入] タブをクリックします。2 つの ECS インスタンスを作成します。IPv4 インスタンスを ECS01、IPv6 インスタンスを ECS02 とします。両方の ECS インスタンスに関連付けられているセキュリティグループは、ポート 80 でのトラフィックを許可する必要があります。詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
ECS01 および ECS02 インスタンスにリモートで接続します。詳細については、「接続方法」をご参照ください。
ECS01 で、次のコマンドを実行して NGINX サービスをデプロイします。
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! this is ipv4 rs." > index.htmlECS02 で、次のコマンドを実行して NGINX サービスをデプロイします。
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! this is ipv6 rs." > index.htmlECS02 インスタンスに IPv6 アドレスを設定します。詳細については、「IPv6 通信」をご参照ください。
説明ECS02 インスタンスが Alibaba Cloud Linux 3.2104 LTS 64 ビットイメージを使用し、インスタンス作成時に [IPv6] パラメーターで [IPv6 アドレスを無料で割り当てる] を選択した場合、このステップはスキップできます。
VPC 内の ECS02 インスタンスにリモートで接続します。
IPv6 アドレスを設定します。
ip addr | grep inet6またはifconfig | grep inet6コマンドを実行します。出力が次のようであれば、IPv6 アドレスはすでに設定されており、このステップはスキップできます。
[root@iZbpxxx fxe4Z ~]# ip addr | grep inet6 inet6 ::1/128 scope host inet6 2408:4005:xxx:xxx:7cd5:aa9c/128 scope global dynamic noprefixroute inet6 fe80::xxx:cc1c/64 scope link noprefixrouteコマンド出力に
inet6情報が含まれていない場合、インスタンスで IPv6 は無効です。IPv6 サービスを有効にする必要があります。コマンド出力に
inet6情報が含まれている場合、ECS02 インスタンスで IPv6 サービスが有効で、IPv6 アドレスが割り当てられています。IPv6 アドレスの設定に進むことができます。
ステップ 2:IPv6 セキュリティグループルールの設定
ECS02 インスタンスに対して、IPv6 クライアントからのインバウンドリクエストを許可するための IPv6 セキュリティグループルールを設定する必要があります。
ECS コンソールにログインします。
左側メニューで、 を選択します。
上部メニューで、セキュリティグループのリージョンを選択します。この例では、[中国 (上海)] が選択されています。
[セキュリティグループ] ページで、対象のセキュリティグループを見つけ、[操作] 列の ルールの管理 をクリックします。
セキュリティグループの詳細ページで、アクセスルール セクションの インバウンド タブをクリックします。
ルールを追加 をクリックし、以下の情報に基づいて IPv6 セキュリティグループルールを設定し、[保存] をクリックします。
パラメーター
説明
[ポリシー]
セキュリティグループルールのアクション。この例では、許可 を選択します。
[優先順位]
セキュリティグループルールの優先度。値が小さいほど、優先度が高くなります。有効な値:1 から 100。
この例では、デフォルト値の 1 が使用されます。
プロトコルタイプ
セキュリティグループルールで許可されるインバウンドトラフィックのプロトコルタイプ。この例では、[ALL ICMP (IPv6)] を選択します。
ソース
アクセスを許可する IPv6 CIDR ブロック。
この例では、::/0 と入力して、すべての IPv6 アドレスからのアクセスを許可します。
説明このトピックで指定されているソースは一例です。ビジネス要件に基づいて、特定の IPv6 CIDR ブロックへのアクセスを許可できます。
宛先 (このインスタンス)
セキュリティグループルールで許可されるインバウンドトラフィックのポート範囲。
[プロトコルタイプ] を [ALL ICMP (IPv6)] に設定した場合、宛先ポートは [任意 (-1/-1)] にしか設定できず、変更できません。
説明
カスタムの説明を入力します。
ステップ 3:ALB インスタンスの作成
- ALBコンソールにログインします。
インスタンス ページで、ALB の作成 をクリックします。
購入ページで、次のパラメーターを指定し、今すぐ購入 をクリックし、画面の指示に従ってインスタンスを作成します。
このセクションでは、このトピックに関連するパラメーターのみを説明します。その他のパラメーターにはデフォルト値を使用します。詳細については、「ALB インスタンスの作成」をご参照ください。
パラメーター
説明
[リージョン]
インスタンスをデプロイするリージョンを選択します。この例では、[中国 (上海)] が選択されています。
[インスタンスのネットワークタイプ]
インスタンスのネットワークタイプを選択します。システムは、選択に基づいてプライベートまたはパブリック IP アドレスを割り当てます。この例では、パブリック が選択されています。
説明インスタンスのネットワークタイプ で パブリック を選択することは、IPv4 にのみ適用されます。このトピックではパブリック IPv6 アドレスが必要なため、このステップの最後の手順で、IPv6 ネットワークタイプをパブリックに変更する必要があります。
VPC
インスタンスをデプロイする VPC を選択します。
説明VPC で IPv6 が有効になっていることを確認してください。
[ゾーン ID]
少なくとも 2 つのゾーンを選択します。この例では、[上海 ゾーン E] と [上海 ゾーン G] が選択されています。
選択した各ゾーンで vSwitch を選択します。この例では、ゾーン E の VSW1 とゾーン G の VSW2 が選択されています。
[IP バージョン]
インスタンスの IP バージョンを選択します。この例では、デュアルスタック が選択されています。
[エディション (インスタンス料金)]
インスタンスのエディションを選択します。この例では、Standard が選択されています。
[インスタンス名]
インスタンスのカスタム名を入力します。
[サービスにリンクされたロール]
初めて ALB インスタンスを作成する場合、[サービスリンクロールの作成] をクリックして、AliyunServiceRoleForAlb という名前のロールを作成します。システムは AliyunServiceRolePolicyForAlb ポリシーをこのロールにアタッチし、ALB に他のクラウドサービスへのアクセス権を付与します。詳細については、「ALB のシステムポリシー」をご参照ください。
パブリックデュアルスタック ALB インスタンスを作成した後、このトピックの手順にはパブリック IPv6 アドレスが必要です。次の手順を実行して、ALB インスタンスの IPv6 アドレスをパブリックアドレスに変更します。詳細については、「プロトコルバージョン」をご参照ください。
インスタンス ページに戻り、対象の ALB インスタンスを見つけ、インスタンス ID をクリックします。
インスタンスの詳細 タブの 基本情報 セクションで、ネットワーク を見つけ、[IPv6: プライベート] の右側にある ネットワークタイプの変更 をクリックします。
ネットワークタイプの変更 ダイアログボックスで、OK をクリックします。
ネットワークタイプが変更されると、IPv6 ネットワークタイプはパブリックになります。
ステップ 4:サーバーグループの作成
左側メニューで、 を選択します。
サーバーグループ ページで、サーバーグループの作成 をクリックします。
サーバーグループの作成 ダイアログボックスで、次のパラメーターを設定し、作成 をクリックします。
このセクションでは、このトピックに関連するパラメーターのみを説明します。その他のパラメーターにはデフォルト値を使用します。詳細については、「サーバーグループの作成と管理」をご参照ください。
パラメーター
説明
[サーバーグループタイプ]
バックエンドタイプを選択します。この例では、サーバータイプ が選択されています。
[サーバーグループ名]
サーバーグループの名前を入力します。
VPC
選択した VPC のサーバーのみをサーバーグループに追加できます。
説明選択した VPC で IPv6 が有効になっており、その VPC が ALB インスタンス作成時に選択したものであることを確認してください。
[バックエンドサーバープロトコル]
バックエンドプロトコルを選択します。この例では、[HTTP] が選択されています。
[スケジューリングアルゴリズム]
スケジューリングアルゴリズムを選択します。この例では、重み付きラウンドロビン が選択されています。
[IP バージョン]
IPv4/IPv6 デュアルスタック を選択します。
[セッション維持]
セッション維持を有効または無効にします。この例では、デフォルト設定 (無効) が使用されます。
[ヘルスチェック]
ヘルスチェックを有効または無効にします。この例では、ヘルスチェックが有効になっています。
[ヘルスチェック]
ヘルスチェックを有効にした後、編集 をクリックして詳細な設定を指定できます。
サーバーグループ ページで、作成したサーバーグループを見つけ、その ID をクリックします。
バックエンドサーバー タブをクリックし、バックエンドサーバーの追加 をクリックします。
バックエンドサーバーの追加 パネルで、ECS01 および ECS02 インスタンスを選択します。IP アドレス 列で、ECS01 インスタンスの IPv4 アドレスと ECS02 インスタンスの IPv6 アドレスを選択します。次に、次へ をクリックします。
ポート/重み ステップで、ECS01 および ECS02 インスタンスのポートと重みを設定し、OK をクリックします。
この例では、ECS インスタンスのポートは 80 に設定され、重みはデフォルト値の 100 に設定されています。
ステップ 5:リスナーの設定
インスタンス ページで、対象のインスタンスを見つけ、その ID をクリックします。
リスナー タブをクリックし、リスナーの作成 をクリックします。
リスナーの設定 ウィザードで、次のパラメーターを指定し、次へ をクリックします。
このセクションでは、このトピックに関連するパラメーターのみを説明します。その他のパラメーターにはデフォルト値を使用します。詳細については、「HTTP リスナーの追加」をご参照ください。
パラメーター
説明
[リスナープロトコルの選択]
リスナーのプロトコルを選択します。この例では、[HTTP] が選択されています。
[リスナーポート]
バックエンドサーバーへのリクエストを受信して転送するリスナーポート。この例では、80 と入力します。
[リスナー名]
リスナーの名前を入力します。
[詳細設定]
この例ではデフォルト設定が使用されます。変更 をクリックして設定を変更できます。
サーバーグループ 設定ウィザードで、サーバータイプ と サーバータイプ の下にある対象のサーバーグループを選択し、バックエンドサーバー情報を表示して、次へ をクリックします。
確定 ステップで、設定を確認し 送信 をクリックします。
OK をクリックして リスナー タブに戻ります。対象リスナーの ヘルスチェックステータス 列が 正常 になると、バックエンドサーバー ECS01 および ECS02 が ALB インスタンスから転送されたリクエストを処理できることを示します。
ステップ 6:DNS 解決の設定
本番環境では、CNAME レコードを作成して、カスタムドメイン名を ALB インスタンスのドメイン名にマッピングすることを推奨します。
-
左側のナビゲーションペインで、を選択します。
-
インスタンス ページで、作成した ALB インスタンスの DNS 名をコピーします。
-
次の手順に従って、CNAME レコードを追加します。
説明ドメイン名が Alibaba Cloud 以外のプロバイダーによって登録されている場合は、DNS 名前解決を設定する前に、ドメイン名を Alibaba Cloud DNS コンソールに追加する必要があります。 詳細については、「ドメイン名の管理」をご参照ください。 ドメイン名が Alibaba Cloud に登録されている場合は、次の手順に進んでください。
-
Alibaba Cloud DNS コンソールにログインします。
-
権威 DNS 名前解決 ページで、対象のドメイン名を見つけ、操作 列の 解決設定 をクリックします。
-
解決設定 ページで、Add Record をクリックします。
-
Add Record パネルで、次のパラメーターを設定して CNAME レコードを構成し、OK をクリックします。
パラメーター
説明
[レコードタイプ]
ドロップダウンリストから [CNAME] を選択します。
[ホストレコード]
ドメイン名のプレフィックス。 このチュートリアルでは、@ を使用します。
説明ルートドメインを使用するには、ホスト名を
@に設定します。[Query Source]
デフォルトを選択します。
[レコード値]
コピーした ALB インスタンスの DNS 名を入力します。
TTL
Time to Live (TTL) は、DNS レコードが DNS サーバーにキャッシュされる期間です。 デフォルト値を使用してください。
-
ステップ 7:接続性のテスト
接続性テストを実行する前に、クライアントが IPv6 をサポートしていることを確認してください。ブラウザのアドレスバーに http://test-ipv6.com/ と入力して、クライアントが IPv6 をサポートしているかどうかを確認できます。
IPv6 ネットワークにアクセスできるクライアントを使用して、ECS01 および ECS02 インスタンスへの接続性をテストします。
お使いのコンピューターでコマンドラインインターフェイス (CLI) を開きます。
次のコマンドを複数回実行して、IPv6 クライアントが ALB を介してラウンドロビン方式で IPv4 ECS インスタンスと IPv6 ECS インスタンスにアクセスできるかどうかをテストします。
curl -6 http://<ドメイン名> -v次のようなレスポンスが返された場合、IPv6 クライアントは IPv4 ECS インスタンスにアクセスできます。
C:\Users\w***g>curl -6 http://xxx.com -v * Rebuilt URL to: http://xxx.com/ * Trying 2408:xxx:d3:c2b:df22:bc09... * TCP_NODELAY set * Connected to xxx.com (2408:xxx:f22:bc09) port 80 (#0) > GET / HTTP/1.1 > Host: xxx.com > User-Agent: curl/7.55.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Wed, 07 Sep 2022 06:52:47 GMT < Content-Type: text/html < Content-Length: 31 < Connection: keep-alive < Last-Modified: Wed, 07 Sep 2022 03:13:10 GMT < ETag: "63180c46-1f" < Accept-Ranges: bytes < Hello World ! this is ipv4 rs.次のようなレスポンスが返された場合、IPv6 クライアントは IPv6 ECS インスタンスにアクセスできます。
C:\Users\wxxx>curl -6 http://xxx.s.com -v * Rebuilt URL to: http://xxx.s.com/ * Trying 2408:40xxx:df22:bc09... * TCP_NODELAY set * Connected to xxx.s.com (2408:xxx:22:bc09) port 80 (#0) > GET / HTTP/1.1 > Host: xxx.s.com > User-Agent: curl/7.55.1 > Accept: */* > < HTTP/1.1 200 OK < Date: Wed, 07 Sep 2022 06:53:04 GMT < Content-Type: text/html < Content-Length: 31 < Connection: keep-alive < Last-Modified: Wed, 07 Sep 2022 03:13:50 GMT < ETag: "63180c6e-1f" < Accept-Ranges: bytes < Hello World ! this is ipv6 rs.
上記の手順を完了すると、IPv6 クライアントは ALB を介して VPC にデプロイされた IPv4 および IPv6 サービスにラウンドロビン方式でアクセスできます。
リソースのクリーンアップ
ECS インスタンス、セキュリティグループ、および関連リソースをクリーンアップします。
ECS01 インスタンスとそのセキュリティグループを削除します。
ECS コンソールにログインします。上部メニューで、インスタンスがデプロイされているリージョンを選択します。ECS01 インスタンスを見つけ、[操作] 列の
アイコンをクリックし、[リリース] を選択します。表示されるダイアログボックスで、インスタンスを即時リリースし、操作を確定します。セキュリティグループコンソールにログインします。上部メニューで、セキュリティグループがデプロイされているリージョンを選択します。ECS01 インスタンスのカスタムセキュリティグループを選択し、[削除] をクリックします。
上記の手順に従って、ECS02 インスタンスとそのセキュリティグループを削除します。
DNS レコードを削除します。
詳細については、「DNS レコードの削除」をご参照ください。
ALB リソースをクリーンアップします。
Application Load Balancer コンソールにログインします。上部メニューで、インスタンスがデプロイされているリージョンを選択します。対象のインスタンスを見つけ、[操作] 列の
アイコンをクリックし、リリース を選択して操作を確定します。バックエンドサーバーを削除します。詳細については、「バックエンドサーバーの管理」をご参照ください。
サーバーグループを削除します。詳細については、「サーバーグループの作成と管理」をご参照ください。
VPC リソースをクリーンアップします。
VPC コンソールにログインし、インスタンスがデプロイされているリージョンを選択します。
対象のインスタンスを見つけ、[操作] 列の [削除] をクリックします。システムは、削除されていないクラウドリソースまたは関連リソースが存在するかどうかを確認します。依存リソースが存在する場合、VPC と vSwitch を削除する前に、すべての依存リソースをリリースする必要があります。
関連トピック
ALB のユースケースとコンポーネントの詳細については、「Application Load Balancer とは」をご参照ください。
ALB の機能の詳細については、「機能」をご参照ください。
ALB のクォータとクォータの引き上げ方法の詳細については、「クォータ」をご参照ください。
ALB がサポートするリージョンの詳細については、「ALB をサポートするリージョンとゾーン」をご参照ください。
ALB の課金方法、課金項目、および料金の詳細については、「ALB の課金の概要」をご参照ください。