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 ゲートウェイが自動的に作成されます。
VSW1 および VSW2 に ALB インスタンスをデプロイする場合、アップグレードされた 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 の購入ページで、[カスタム起動] タブをクリックします。ECS インスタンスを 2 台作成します。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-bit イメージを使用しており、インスタンス作成時に IPv6 パラメーターで [Assign IPv6 Address Free of Charge] を選択した場合は、この手順をスキップできます。
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セキュリティグループルールの設定
IPv6 クライアントからのインバウンドリクエストを許可するため、ECS02 インスタンスに IPv6 セキュリティグループルールを設定する必要があります。
ECS コンソールにログインします。
左側メニューで、 を選択します。
上部のナビゲーションバーで、セキュリティグループのリージョンを選択します。この例では、[中国 (上海)] を選択します。
[セキュリティグループ] ページで対象のセキュリティグループを見つけ、[操作] 列の ルールの管理 をクリックします。
セキュリティグループの詳細ページで、アクセスルール セクションの インバウンド タブをクリックします。
ルールを追加 をクリックし、次の情報に基づいて IPv6 セキュリティグループルールを設定してから、[保存] をクリックします。
パラメーター
説明
[ポリシー]
セキュリティグループルールのアクションです。この例では、許可 を選択してください。
[優先順位]
セキュリティグループルールの優先度です。値が小さいほど優先度が高くなります。有効な値:1~100。
この例では、デフォルト値の 1 を使用してください。
プロトコルタイプ
セキュリティグループルールで許可されるインバウンドトラフィックのプロトコルタイプです。この例では、[All ICMP (IPv6)] を選択してください。
ソース
アクセスを許可する IPv6 CIDR ブロックです。
この例では、すべての IPv6 アドレスにアクセスを許可するために ::/0 を入力してください。
説明このトピックで指定しているソースは例です。ビジネス要件に基づき、特定の IPv6 CIDR ブロックにアクセスを許可できます。
宛先 (このインスタンス)
セキュリティグループルールで許可されるインバウンドトラフィックのポート範囲です。
プロトコルタイプを [All ICMP (IPv6)] に設定した場合、宛先ポートは [Any (-1/-1)] のみに設定でき、変更できません。
説明
任意の説明を入力してください。
手順3:ALBインスタンスの作成
- ALBコンソールにログインします。
インスタンス ページで、ALB の作成 をクリックします。
購入ページで次のパラメーターを設定し、今すぐ購入 をクリックします。その後、画面の指示に従ってインスタンスを作成します。
このセクションでは、このトピックに関連するパラメーターのみを説明します。その他のパラメーターはデフォルト値を使用してください。詳細については、「ALBインスタンスの作成」をご参照ください。
パラメーター
説明
[リージョン]
インスタンスをデプロイするリージョンを選択します。この例では、[中国 (上海)] を選択してください。
[インスタンスのネットワークタイプ]
インスタンスのネットワークタイプを選択します。システムは選択内容に基づいてプライベート IP アドレスまたはパブリック IP アドレスを割り当てます。この例では、パブリック を選択してください。
説明インスタンスのネットワークタイプ に パブリック を選択した場合、その設定は IPv4 にのみ適用されます。 IPv6 のデフォルトのネットワークタイプは パブリック です。 本トピックでは、パブリック IPv6 アドレスを使用します。 IPv6 ネットワークタイプをパブリックに変更するには、この手順の最後の部分で説明されている操作を実行する必要があります。
VPC
インスタンスをデプロイする VPC を選択します。
説明VPC で IPv6 が有効になっていることを確認してください。
[ゾーン ID]
少なくとも 2 つのゾーンを選択します。この例では、[上海ゾーンE] と [上海ゾーンG] を選択します。
選択した各ゾーンで vSwitch を選択します。この例では、ゾーンE の VSW1 とゾーンG の VSW2 を選択します。
[IP バージョン]
インスタンスの IP バージョンを選択します。この例では、デュアルスタック を選択してください。
[エディション (インスタンス料金)]
インスタンスのエディションを選択します。この例では、Standard を選択してください。
[インスタンス名]
任意のインスタンス名を入力してください。
[サービスにリンクされたロール]
ALB インスタンスを初めて作成する場合は、[Create Service-Linked Role] をクリックして、AliyunServiceRoleForAlb という名前のロールを作成します。システムはこのロールに AliyunServiceRolePolicyForAlb ポリシーをアタッチし、ALB が他のクラウドサービスにアクセスするための権限を付与します。詳細については、「ALBのシステムポリシー」をご参照ください。
パブリックなデュアルスタック ALB インスタンスを作成した後、このトピックの手順を実行するにはパブリック IPv6 アドレスが必要です。次の手順を実行して、ALB インスタンスの IPv6 アドレスをパブリックアドレスに変更します。詳細については、「Protocol Version」をご参照ください。
インスタンス ページに戻り、対象の ALB インスタンスを見つけて、インスタンス ID をクリックします。
インスタンスの詳細 タブの 基本情報 セクションで ネットワーク を見つけます。次に、IPv6: private の右側にある ネットワークタイプの変更 をクリックします。
ネットワークタイプの変更 ダイアログボックスで、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.com -v * Rebuilt URL to: http://xxx.com/ * Trying 2408:40xxx:df22:bc09... * TCP_NODELAY set * Connected to xxx.com (2408:xxx:22: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: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 レコードを削除します。詳細については、「DNSレコードの削除」をご参照ください。
ALB リソースをクリーンアップします:
Application Load Balancer コンソールにログインします。上部のナビゲーションバーで、インスタンスがデプロイされているリージョンを選択します。対象インスタンスを見つけ、リリース 列の
アイコンをクリックして、[リリース] を選択し、操作を確認します。バックエンドサーバーを削除します。詳細については、「バックエンドサーバーの管理」をご参照ください。
サーバーグループを削除します。詳細については、「サーバーグループの作成と管理」をご参照ください。
VPC リソースをクリーンアップします:
VPC コンソールにログインし、インスタンスがデプロイされているリージョンを選択します。
対象インスタンスを見つけ、[操作] 列の [削除] をクリックします。システムは、削除されていないクラウドリソースまたは関連リソースが存在するかどうかを確認します。依存リソースが存在する場合は、VPC と vSwitch を削除する前にすべてリリースする必要があります。
関連トピック
ALB のユースケースとコンポーネントの詳細については、「Application Load Balancerとは」をご参照ください。
ALB の機能の詳細については、「機能」をご参照ください。
ALB のクォータとクォータの増加方法の詳細については、「クォータ」をご参照ください。
ALB がサポートされるリージョンの詳細については、「ALBをサポートするリージョンとゾーン」をご参照ください。
ALB の課金方法、課金項目、および料金の詳細については、「ALBの課金概要」をご参照ください。