異なるAWSゾーン間でプライベートIPアドレスを持つVPX高可用性ペアを展開する
INCモードでプライベートIPアドレスを使用して、2つの異なるサブネットまたは2つの異なるAWSアベイラビリティゾーンに2つのNetScaler VPXインスタンスを構成できます。このソリューションは、既存のマルチゾーン(/ja-jp/vpx/current-release/deploy-aws/vpx-ha-eip-different-aws-zones.html)と簡単に統合できます。したがって、両方のソリューションを一緒に使用できます。
高可用性の詳細については、(/ja-jp/citrix-adc/current-release/system/high-availability-introduction.html)を参照してください。INCの詳細については、(/ja-jp/citrix-adc/current-release/system/high-availability-introduction/configuring-high-availability-nodes-different-subnets.html)を参照してください。
注:
このデプロイは、NetScalerリリース13.0ビルド67.39以降でサポートされています。このデプロイはAWS Transit Gatewayと互換性があります。
AWS非共有VPCを使用したプライベートIPアドレスによる高可用性ペア
前提条件
AWSアカウントに関連付けられているIAMロールに、次のIAM権限があることを確認してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeAddresses",
"ec2:AssociateAddress",
"ec2:DisassociateAddress",
"ec2:DescribeRouteTables",
"ec2:DeleteRoute",
"ec2:CreateRoute",
"ec2:ModifyNetworkInterfaceAttribute",
"iam:SimulatePrincipalPolicy",
"iam:GetRole"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
<!--NeedCopy-->
AWS非共有VPCを使用してプライベートIPアドレスを持つVPX HAペアを展開する
以下は、プライベートIPアドレスを使用して、2つの異なるサブネットまたは2つの異なるAWSアベイラビリティゾーンにVPXペアを展開する手順の概要です。
- Amazon仮想プライベートクラウドを作成します。
- 2つの異なるアベイラビリティゾーンに2つのVPXインスタンスを展開します。
- 高可用性を構成します
- 両方のインスタンスでINCモードの高可用性を設定します。
- クライアントインターフェイスを指すVPCにそれぞれのルートテーブルを追加します。
- プライマリインスタンスに仮想サーバーを追加します。
ステップ1、2、3bについては、AWSコンソールを使用します。ステップ3aと3cについては、NetScaler VPX GUIまたはCLIを使用します。
ステップ1. Amazon仮想プライベートクラウド (VPC) を作成します。
ステップ2. 2つの異なるアベイラビリティーゾーンに、同じ数のENI (ネットワークインターフェース) を持つ2つのVPXインスタンスをデプロイします。
AWSでVPCを作成し、VPXインスタンスをデプロイする方法の詳細については、AWSにNetScaler VPXスタンドアロンインスタンスをデプロイする および シナリオ: スタンドアロンインスタンス を参照してください。
ステップ3. Amazon VPCサブネットと重複しないサブネットを選択して、ADC VIPアドレスを設定します。VPCが192.168.0.0/16の場合、ADC VIPアドレスを設定するには、次のIPアドレス範囲から任意のサブネットを選択できます。
- 0.0.0.0 - 192.167.0.0
- 192.169.0.0 - 254.255.255.0
この例では、10.10.10.0/24サブネットが選択され、このサブネットにVIPが作成されています。VPCサブネット (192.168.0.0/16) 以外の任意のサブネットを選択できます。
ステップ4. VPCルートテーブルから、プライマリノードのクライアントインターフェース (VIP) を指すルートを追加します。
AWS CLIから、次のコマンドを入力します。
aws ec2 create-route --route-table-id rtb-2272532 --destination-cidr-block 10.10.10.0/24 --gateway-id <eni-client-primary>
<!--NeedCopy-->
AWS GUIから、ルートを追加するには、次の手順を実行します。
- Amazon EC2コンソール を開きます。
- ナビゲーションペインで、[ルートテーブル] を選択し、ルートテーブルを選択します。
- [アクション] を選択し、[ルートを編集] をクリックします。
- ルートを追加するには、Add route を選択します。Destination には、宛先 CIDR ブロック、単一の IP アドレス、またはプレフィックスリストの ID を入力します。ゲートウェイ ID には、プライマリノードのクライアントインターフェースの ENI を選択します。

注:
プライマリインスタンスのクライアント ENI で Source/Dest Check を無効にする必要があります。
コンソールを使用してネットワークインターフェースの送信元/送信先チェックを無効にするには、次の手順を実行します。
- Amazon EC2 コンソール を開きます。
- ナビゲーションペインで、Network Interfaces を選択します。
- プライマリクライアントインターフェースのネットワークインターフェースを選択し、Actions を選択して、Change Source/Dest. Check をクリックします。
- ダイアログボックスで、Disabled を選択し、Save をクリックします。

ステップ 5. 高可用性を構成します。NetScaler VPX CLI または GUI を使用して高可用性を設定できます。
CLI を使用して高可用性を構成する
-
両方のインスタンスで INC モードで高可用性を設定します。
プライマリノードで:
add ha node 1 \<sec\_ip\> -inc ENABLED <!--NeedCopy-->セカンダリノードで:
add ha node 1 \<prim\_ip\> -inc ENABLED <!--NeedCopy--><sec_ip> はセカンダリノードの管理NICのプライベートIPアドレスを指します。
<prim_ip> はプライマリノードの管理NICのプライベートIPアドレスを指します。
-
プライマリインスタンスに仮想サーバーを追加します。選択したサブネット(例: 10.10.10.0/24)から追加する必要があります。
次のコマンドを入力します。
add \<server\_type\> vserver \<vserver\_name\> \<protocol\> \<primary\_vip\> \<port\> <!--NeedCopy-->
GUIを使用して高可用性を構成する
-
両方のインスタンスでINCモードの高可用性を設定します
-
ユーザー名
nsrootとインスタンスIDをパスワードとして使用して、プライマリノードにログオンします。 -
構成 > システム > 高可用性 に移動し、追加 をクリックします。
-
Remote Node IP address フィールドに、セカンダリノードの管理NICのプライベートIPアドレスを追加します。
-
自己ノードで、NIC (独立ネットワーク構成) を有効にする モードを選択します。
-
Remote System Login Credential で、セカンダリノードのユーザー名とパスワードを追加し、Create をクリックします。
-
セカンダリノードで手順を繰り返します。
-
プライマリインスタンスに仮想サーバーを追加する
設定 > トラフィック管理 > 仮想サーバー > 追加 に移動します。
仮想サーバーを追加する(/ja-jp/vpx/media/lb-vserver-pip.png)
AWS共有VPCを使用してプライベートIPアドレスを持つVPX HAペアをデプロイする
AWS共有VPCモデルでは、VPCを所有するアカウント(所有者)が1つ以上のサブネットを他のアカウント(参加者)と共有します。したがって、VPC所有者アカウントと参加者アカウントが存在します。サブネットが共有されると、参加者は共有されたサブネット内で自身のアプリケーションリソースを表示、作成、変更、削除できます。参加者は、他の参加者またはVPC所有者に属するリソースを表示、変更、削除することはできません。
AWS共有VPCの詳細については、AWSドキュメントを参照してください。
注:
AWS共有VPCを使用してプライベートIPアドレスを持つVPX HAペアをデプロイするための構成手順は、AWS非共有VPCを使用してプライベートIPアドレスを持つVPX HAペアをデプロイすると同じですが、次の例外があります。
- クライアントインターフェースを指すVPC内のルートテーブルは、VPC所有者アカウントから追加する必要があります。
前提条件
-
AWS参加者アカウントのNetScaler VPXインスタンスに関連付けられたIAMロールに、次のIAM権限があることを確認してください。
"Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:DisassociateAddress", "iam:GetRole", "iam:SimulatePrincipalPolicy", "ec2:DescribeInstances", "ec2:DescribeAddresses", "ec2:ModifyNetworkInterfaceAttribute", “ec2:AssociateAddress”, "sts:AssumeRole" ], "Resource": "*" } ] } <!--NeedCopy-->注:
AssumeRoleにより、NetScaler VPXインスタンスは、VPC所有者アカウントによって作成されたクロスアカウントIAMロールを引き受けることができます。
-
VPC所有者アカウントが、クロスアカウントIAMロールを使用して参加者アカウントに次のIAM権限を提供することを確認してください。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:DescribeRouteTables" ], "Resource": "*" } ] } <!--NeedCopy-->
クロスアカウントIAMロールを作成する
- AWSウェブコンソールにログインします。
- IAMタブで、ロールに移動し、ロールの作成を選択します。
-
別のAWSアカウントを選択します。
共有VPCのロールを作成(/ja-jp/vpx/media/shared-vpc-create-role.png)
- 管理者アクセスを許可する参加者アカウントの12桁のアカウントID番号を入力します。
NetScaler CLIを使用してクロスアカウントIAMロールを設定する
次のコマンドにより、NetScaler VPXインスタンスは、VPC所有者アカウントに存在するクロスアカウントIAMロールを引き受けることができます。
set cloud awsParam -roleARN <string>
<!--NeedCopy-->
NetScaler GUIを使用してクロスアカウントIAMロールを設定する
-
NetScalerアプライアンスにサインインし、設定 > AWS > クラウドパラメータの変更 に移動します。
クラウドパラメータの変更(/ja-jp/vpx/media/shared-vpc-change-cloud-parameters.png)
-
「AWSクラウドパラメータの設定」ページで、「RoleARN」フィールドの値を入力します。
AWSクラウドパラメータの設定(/ja-jp/vpx/media/configure-aws-cloud-parameters.png)
シナリオ
このシナリオでは、単一のVPCが作成されます。そのVPC内に、2つのアベイラビリティーゾーンに2つのVPXインスタンスが作成されます。各インスタンスには、管理用、クライアント用、バックエンドサーバー用の3つのサブネットがあります。
次の図は、AWS上のINCモードでのNetScaler VPX高可用性セットアップを示しています。VPCの一部ではないカスタムサブネット10.10.10.10がVIPとして使用されます。したがって、10.10.10.10サブネットはアベイラビリティーゾーン間で使用できます。
フェイルオーバー前のINCモードでの高可用性セットアップ(/ja-jp/vpx/media/before-failover-ha-pip.png)
フェイルオーバー後のINCモードでの高可用性セットアップ(/ja-jp/vpx/media/after-failover-ha-pip.png)
このシナリオでは、CLIを使用して高可用性を構成します。
-
両方のインスタンスでINCモードの高可用性を設定します。
プライマリノードとセカンダリノードで次のコマンドを入力します。
プライマリノードで:
add ha node 1 192.168.4.10 -inc enabled <!--NeedCopy-->ここで、192.168.4.10 はセカンダリノードの管理NICのプライベートIPアドレスを指します。
セカンダリノードで:
add ha node 1 192.168.1.10 -inc enabled <!--NeedCopy-->ここで、192.168.1.10 はプライマリノードの管理NICのプライベートIPアドレスを指します。
-
プライマリインスタンスに仮想サーバーを追加します。
次のコマンドを入力します:
add lbvserver vserver1 http 10.10.10.10 80 <!--NeedCopy--> -
設定を保存します。
-
強制フェイルオーバー後:
- セカンダリインスタンスが新しいプライマリインスタンスになります。
- プライマリENIを指すVPCルートは、セカンダリクライアントENIに移行します。
- クライアントトラフィックは新しいプライマリインスタンスに再開されます。
HAプライベートIPソリューションのためのAWS Transit Gateway設定
プライベートVIPサブネットを内部ネットワーク、AWS VPC、リージョン、およびオンプレミスネットワーク全体でルーティング可能にするには、AWS Transit Gatewayが必要です。VPCはAWS Transit Gatewayに接続する必要があります。AWS Transit Gatewayルートテーブル内にVIPサブネットまたはIPプールへの静的ルートが作成され、VPCに向けられます。
AWS トランジットゲートウェイ(/ja-jp/vpx/media/aws-transit-gateway.png)
AWS Transit Gateway を設定するには、次の手順に従います。
- Amazon VPC コンソールを開きます。
- ナビゲーションペインで、Transit Gateway ルートテーブルを選択します。
-
ルートタブを選択し、静的ルートの作成をクリックします。
AWS トランジットゲートウェイ ルートテーブル(/ja-jp/vpx/media/aws-transit-gateway-route-table.png)
-
CIDR がプライベート VIPS サブネットを指し、アタッチメントが NetScaler VPX を持つ VPC を指す静的ルートを作成します。
静的ルートの作成(/ja-jp/vpx/media/tg-create-static-route.png)
- 静的ルートの作成をクリックし、閉じるを選択します。
トラブルシューティング
マルチゾーン HA で HA プライベート IP ソリューションを設定する際に問題が発生した場合は、トラブルシューティングのために次の重要な点を確認してください。
- プライマリノードとセカンダリノードの両方に同じ IAM 権限セットがあること。
- プライマリノードとセカンダリノードの両方で INC モードが有効になっていること。
- プライマリノードとセカンダリノードの両方に同じ数のインターフェイスがあること。
- インスタンスを作成する際は、デバイスインデックス番号に基づいて、プライマリノードとセカンダリノードの両方でインターフェイスをアタッチする同じ順序に従ってください。たとえば、プライマリノードでクライアントインターフェイスが最初にアタッチされ、サーバーインターフェイスが2番目にアタッチされたとします。セカンダリノードでも同じ順序に従ってください。不一致がある場合は、インターフェイスをデタッチして正しい順序で再アタッチしてください。
- インターフェースのシーケンスは、次のナビゲーションパスで確認できます: AWS コンソール > ネットワーク & セキュリティ > ENI > デバイスインデックス番号。
デフォルトでは、次のデバイスインデックス番号がこれらのインターフェースに割り当てられます:
- 管理インターフェース – 0
- クライアントインターフェース – 1
- サーバーインターフェース – 2
-
プライマリ ENI のデバイスインデックス番号のシーケンスが 0, 1, 2 の場合、セカンダリ ENI も同じデバイスインデックス番号のシーケンス 0, 1, 2 に従う必要があります。
デバイスインデックス番号のシーケンスに不一致がある場合、ルートの損失を防ぐために、不一致のすべてのルートはインデックス 0 の管理インターフェースに転送されます。ただし、トラフィックの輻輳を引き起こす可能性があるため、ルートが管理インターフェースに移動するのを避けるために、インターフェースをデタッチして正しいシーケンスで再度アタッチする必要があります。
- トラフィックが流れない場合は、初回にプライマリノードのクライアントインターフェースで「Source/dest. Check」が無効になっていることを確認してください。
-
cloudhadaemonコマンド (ps -aux | grep cloudha) がシェルで実行されていることを確認してください。 - NetScaler ファームウェアのバージョンが 13.0 ビルド 70.x 以降であることを確認してください。
- フェイルオーバープロセスに関する問題については、
/var/log/cloud-ha-daemon.logで利用可能なログファイルを確認してください。