Citrix ADC

PowerShell コマンドを使用して複数の IP アドレスと NIC を使用して高可用性セットアップを構成する

Azureのアクティブ/パッシブ高可用性(HA)セットアップで、複数のNICを持つ一対のCitrix ADC VPXインスタンスを展開できます。各NICに複数のIPアドレスを設定できます。

アクティブ/パッシブ展開では以下が必要です。

  • HA Independent Network Configuration(INC)構成
  • Direct Server Return(DSR)モードのAzure Load Balancer(ALB)

すべてのトラフィックはプライマリノードを通過します。セカンダリノードは、プライマリノードが失敗するまでスタンバイモードを維持します。

Azureクラウド上のCitrix ADC VPX高可用性展開が機能するには、2つの高可用性ノード間で移動できるフローティングパブリックIP(PIP)が必要です。Azure ロードバランサー (ALB) は、フローティング PIP を提供します。このフローティング PIP は、フェールオーバーが発生した場合に自動的に第 2 ノードに移動されます。

: アクティブ-パッシブ展開アーキテクチャの例

ローカライズされた画像

アクティブ/パッシブ展開では、ALBフローティングパブリックIP(PIP)アドレスが各VPXノードにVIPアドレスとして追加されます。HA-INC構成では、これらのVIPアドレスはフローティングされ、SNIPアドレスはインスタンス固有のアドレスとなります。

ALBは、5秒ごとにヘルスプローブを送信して各VPXインスタンスを監視し、一定間隔でヘルスプローブ応答を送信するインスタンスにのみトラフィックをリダイレクトします。そのため、HAセットアップでは、プライマリノードがヘルスプローブに応答し、セカンダリノードは応答しません。プライマリインスタンスが2回連続してヘルスプローブに応答しなかった場合は、ALBはそのインスタンスにトラフィックをリダイレクトしません。フェイルオーバー時は、新しいプライマリがヘルスプローブへの応答を開始し、ALBはそのプライマリにトラフィックをリダイレクトします。標準のVPX高可用性フェイルオーバー時間は3秒です。トラフィック切り替えにかかる合計フェイルオーバー時間は、最大で13秒になる可能性があります。

VPXペアをアクティブ-パッシブHAセットアップで展開するには、次の2つの方法があります。

  • Citrix ADC VPX標準高可用性テンプレート:3つのサブネットと6つのNICのデフォルトオプションを使用してHAペアを構成するには、このオプションを使用します。
  • Windows PowerShell コマンド: サブネットと NIC の要件に従って HA ペアを構成するには、このオプションを使用します。

このトピックでは、PowerShell コマンドを使用してアクティブ/パッシブHAセットアップでVPXペアを展開する方法について説明します。Citrix ADC VPX標準HAテンプレートを使用する場合は、複数の IP アドレスおよび NIC を使用した HA セットアップの設定を参照してください。

PowerShell コマンドを使用して HA-INC ノードを構成する

シナリオ:HA-INC PowerShell の展開

このシナリオでは、表に示されているトポロジを使用して、Citrix ADC VPXペアを展開します。各VPXインスタンスには3つのNICがあり、各NICは異なるサブネットに展開されます。各 NIC には IP 構成 が割り当てられます。

ALB VPX1 VPX2
ALB はパブリック IP 3 (pip3) に関連付けられています。 管理 IP は IPConfig1 を使用して構成され、これには 1 つのパブリック IP (パイプ 1) と 1 つのプライベート IP (12.5.2.24) が含まれます。nic1、Mgmtサブネット = 12.5.2.0/24 管理 IP は IPConfig5 を使用して構成され、これには 1 つのパブリック IP (パイプ 3) と 1 つのプライベート IP (12.5.2.26) が含まれます。nic4、Mgmtサブネット = 12.5.2.0/24
設定された LB ルールおよびポートは、HTTP(80)、SSL(443)、ヘルスプローブ(9000)です。 クライアント側の IP は IPConfig3 を使用して構成され、これには 1 つのプライベート IP (12.5.1.27) が含まれます。 クライアント側の IP は IPConfig7 で構成され、これには 1 つのプライベート IP (12.5.1.28) が含まれます。
- サーバー側の IP は IPConfig4 を使用して構成され、これには 1 つのプライベート IP (12.5.3.24)、nic3、バックエンドサブネット = 12.5.3.0/24 が含まれます。 サーバー側の IP は IPConfig8 を使用して構成され、これには 1 つのプライベート IP (12.5.3.28)、nic6、バックエンドサブネット = 12.5.3.0/24 が含まれます。
- NSG のルールとポートは、SSH (22)、HTTP (80)、HTTPS (443) -

パラメータ設定

このシナリオでは、次のパラメータ設定が使用されます。

$locName = “East Asia”

$rgName = “MulitIP-MultiNIC-RG”

$nicName1= “VM1-NIC1”

$nicName2 = “VM1-NIC2”

$nicName3= “VM1-NIC3”

$nicName4 = “VM2-NIC1”

$nicName5= “VM2-NIC2”

$nicName6 = “VM2-NIC3”

$vNetName = “Azure-MultiIP-ALB-vnet”

$vNetAddressRange= “12.5.0.0/16”

$frontEndSubnetName= “frontEndSubnet”

$frontEndSubnetRange= “12.5.1.0/24”

$mgmtSubnetName= “mgmtSubnet”

$mgmtSubnetRange= “12.5.2.0/24”

$backEndSubnetName = “backEndSubnet”

$backEndSubnetRange = “12.5.3.0/24”

$prmStorageAccountName = “multiipmultinicbstorage”

$avSetName = “multiple-avSet”

$vmSize= “Standard_DS4_V2”

$publisher = “citrix”

$offer = “netscalervpx-120”

$sku = “netscalerbyol”

$version=”latest”

$pubIPName1=”VPX1MGMT”

$pubIPName2=”VPX2MGMT”

$pubIPName3=”ALBPIP”

$domName1=”vpx1dns”

$domName2=”vpx2dns”

$domName3=”vpxalbdns”

$vmNamePrefix=”VPXMultiIPALB”

$osDiskSuffix1=”osmultiipalbdiskdb1”

$osDiskSuffix2=”osmultiipalbdiskdb2”

$lbName= “MultiIPALB”

$frontEndConfigName1= “FrontEndIP”

$backendPoolName1= “BackendPoolHttp”

$lbRuleName1= “LBRuleHttp”

$healthProbeName= “HealthProbe”

$nsgName=”NSG-MultiIP-ALB”

$rule1Name=”Inbound-HTTP”

$rule2Name=”Inbound-HTTPS”

$rule3Name=”Inbound-SSH”

展開を完了するには、PowerShellコマンドを使用して次の手順を完了します。

  1. リソースグループ、ストレージアカウント、高可用性セットの作成
  2. ネットワークセキュリティグループの作成と規則の追加
  3. 仮想ネットワークと3つのサブネットの作成
  4. パブリックIPアドレスの作成
  5. VPX1のIP構成の作成
  6. VPX2 の IP 構成を作成する
  7. VPX1のNICの作成
  8. VPX2のNICの作成
  9. VPX1の作成
  10. VPX2の作成
  11. ALBの作成

リソースグループ、ストレージアカウント、および可用性セットを作成します

New-AzureRmResourceGroup -Name $rgName -Location $locName


$prmStorageAccount=New-AzureRMStorageAccount -Name $prmStorageAccountName -ResourceGroupName $rgName -Type Standard_LRS -Location $locName


$avSet=New-AzureRMAvailabilitySet -Name $avSetName -ResourceGroupName $rgName -Location $locName

ネットワークセキュリティグループを作成し、ルールを追加します

$rule1 = New-AzureRmNetworkSecurityRuleConfig -Name $rule1Name -Description "Allow HTTP" -Access Allow -Protocol Tcp -Direction Inbound -Priority 101


-SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 80


$rule2 = New-AzureRmNetworkSecurityRuleConfig -Name $rule2Name -Description "Allow HTTPS" -Access Allow -Protocol Tcp -Direction Inbound -Priority 110


-SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 443


$rule3 = New-AzureRmNetworkSecurityRuleConfig -Name $rule3Name -Description "Allow SSH" -Access Allow -Protocol Tcp -Direction Inbound -Priority 120


-SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 22


$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $locName -Name $nsgName -SecurityRules $rule1,$rule2,$rule3

仮想ネットワークと 3 つのサブネットを作成します

$frontendSubnet=New-AzureRmVirtualNetworkSubnetConfig -Name $frontEndSubnetName -AddressPrefix $frontEndSubnetRange (this parameter value should be as per your requirement)


$mgmtSubnet=New-AzureRmVirtualNetworkSubnetConfig -Name $mgmtSubnetName -AddressPrefix $mgmtSubnetRange


$backendSubnet=New-AzureRmVirtualNetworkSubnetConfig -Name $backEndSubnetName -AddressPrefix $backEndSubnetRange


$vnet =New-AzureRmVirtualNetwork -Name $vNetName -ResourceGroupName $rgName -Location $locName -AddressPrefix $vNetAddressRange -Subnet $frontendSubnet,$backendSubnet, $mgmtSubnet


$subnetName ="frontEndSubnet"


$subnet1=$vnet.Subnets|?{$_.Name -eq $subnetName}


$subnetName="backEndSubnet"


$subnet2=$vnet.Subnets|?{$_.Name -eq $subnetName}


$subnetName="mgmtSubnet"


$subnet3=$vnet.Subnets|?{$_.Name -eq $subnetName}

パブリック IP アドレスを作成します

$pip1=New-AzureRmPublicIpAddress -Name $pubIPName1 -ResourceGroupName $rgName -DomainNameLabel $domName1 -Location $locName -AllocationMethod Dynamic

$pip2=New-AzureRmPublicIpAddress -Name $pubIPName2 -ResourceGroupName $rgName -DomainNameLabel $domName2 -Location $locName -AllocationMethod Dynamic

$pip3=New-AzureRmPublicIpAddress -Name $pubIPName3 -ResourceGroupName $rgName -DomainNameLabel $domName3 -Location $locName -AllocationMethod Dynamic

VPX1 の IP 構成を作成します

$IpConfigName1 = "IPConfig1"


$IPAddress = "12.5.2.24"


$IPConfig1=New-AzureRmNetworkInterfaceIpConfig -Name $IPConfigName1 -Subnet $subnet3 -PrivateIpAddress $IPAddress -PublicIpAddress $pip1 -Primary


$IPConfigName3="IPConfig-3"


$IPAddress="12.5.1.27"


$IPConfig3=New-AzureRmNetworkInterfaceIpConfig -Name $IPConfigName3 -Subnet $subnet1 -PrivateIpAddress $IPAddress -Primary


$IPConfigName4 = "IPConfig-4"


$IPAddress = "12.5.3.24"


$IPConfig4 = New-AzureRmNetworkInterfaceIpConfig -Name $IPConfigName4 -Subnet $subnet2 -PrivateIpAddress $IPAddress -Primary

VPX2 の IP 構成を作成します

$IpConfigName5 = "IPConfig5"


$IPAddress="12.5.2.26"


$IPConfig5=New-AzureRmNetworkInterfaceIpConfig -Name $IPConfigName5 -Subnet $subnet3 -PrivateIpAddress $IPAddress -PublicIpAddress $pip2 -Primary


$IPConfigName7="IPConfig-7"


$IPAddress="12.5.1.28"


$IPConfig7=New-AzureRmNetworkInterfaceIpConfig -Name $IPConfigName7 -Subnet $subnet1 -PrivateIpAddress $IPAddress -Primary


$IPConfigName8="IPConfig-8"


$IPAddress="12.5.3.28"


$IPConfig8=New-AzureRmNetworkInterfaceIpConfig -Name $IPConfigName8 -Subnet $subnet2 -PrivateIpAddress $IPAddress -Primary

VPX1用のNICを作成します

$nic1=New-AzureRmNetworkInterface -Name $nicName1 -ResourceGroupName $rgName -Location $locName -IpConfiguration $IpConfig1 -NetworkSecurityGroupId $nsg.Id


$nic2=New-AzureRmNetworkInterface -Name $nicName2 -ResourceGroupName $rgName -Location $locName -IpConfiguration $IpConfig3 -NetworkSecurityGroupId $nsg.Id


$nic3=New-AzureRmNetworkInterface -Name $nicName3 -ResourceGroupName $rgName -Location $locName -IpConfiguration $IpConfig4 -NetworkSecurityGroupId $nsg.Id

VPX2用のNICを作成します

$nic4=New-AzureRmNetworkInterface -Name $nicName4 -ResourceGroupName $rgName -Location $locName -IpConfiguration $IpConfig5 -NetworkSecurityGroupId $nsg.Id


$nic5=New-AzureRmNetworkInterface -Name $nicName5 -ResourceGroupName $rgName -Location $locName -IpConfiguration $IpConfig7 -NetworkSecurityGroupId $nsg.Id


$nic6=New-AzureRmNetworkInterface -Name $nicName6 -ResourceGroupName $rgName -Location $locName -IpConfiguration $IpConfig8 -NetworkSecurityGroupId $nsg.Id

VPX1 を作成します

この手順には、次の下位手順が含まれています。

  • VM 設定オブジェクトの作成
  • 資格情報、OS、イメージの設定
  • NICの追加
  • OSディスクの指定とVMの作成

    $suffixNumber = 1
    
    $vmName=$vmNamePrefix + $suffixNumber
    
    $vmConfig=New-AzureRMVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $avSet.Id
    
    $cred=Get-Credential -Message "Type the name and password for VPX login."
    
    $vmConfig=Set-AzureRMVMOperatingSystem -VM $vmConfig -Linux -ComputerName $vmName -Credential $cred
    
    $vmConfig=Set-AzureRMVMSourceImage -VM $vmConfig -PublisherName $publisher -Offer $offer -Skus $sku -Version $version
    
    $vmConfig=Add-AzureRMVMNetworkInterface -VM $vmConfig -Id $nic1.Id -Primary
    
    $vmConfig=Add-AzureRMVMNetworkInterface -VM $vmConfig -Id $nic2.Id
    
    $vmConfig=Add-AzureRMVMNetworkInterface -VM $vmConfig -Id $nic3.Id
    
    $osDiskName=$vmName + "-" + $osDiskSuffix1
    
    $osVhdUri=$prmStorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $osDiskName + ".vhd"
    
    $vmConfig=Set-AzureRMVMOSDisk -VM $vmConfig -Name $osDiskName -VhdUri $osVhdUri -CreateOption fromImage
    
    Set-AzureRmVMPlan -VM $vmConfig -Publisher $publisher -Product $offer -Name $sku
    
    New-AzureRMVM -VM $vmConfig -ResourceGroupName $rgName -Location $locName
    

VPX2 を作成します

```
$suffixNumber=2


$vmName=$vmNamePrefix + $suffixNumber


$vmConfig=New-AzureRMVMConfig -VMName $vmName -VMSize $vmSize -AvailabilitySetId $avSet.Id


$cred=Get-Credential -Message "Type the name and password for VPX login."


$vmConfig=Set-AzureRMVMOperatingSystem -VM $vmConfig -Linux -ComputerName $vmName -Credential $cred


$vmConfig=Set-AzureRMVMSourceImage -VM $vmConfig -PublisherName $publisher -Offer $offer -Skus $sku -Version $version


$vmConfig=Add-AzureRMVMNetworkInterface -VM $vmConfig -Id $nic4.Id -Primary


$vmConfig=Add-AzureRMVMNetworkInterface -VM $vmConfig -Id $nic5.Id


$vmConfig=Add-AzureRMVMNetworkInterface -VM $vmConfig -Id $nic6.Id


$osDiskName=$vmName + "-" + $osDiskSuffix2


$osVhdUri=$prmStorageAccount.PrimaryEndpoints.Blob.ToString() + "vhds/" + $osDiskName + ".vhd"


$vmConfig=Set-AzureRMVMOSDisk -VM $vmConfig -Name $osDiskName -VhdUri $osVhdUri -CreateOption fromImage


Set-AzureRmVMPlan -VM $vmConfig -Publisher $publisher -Product $offer -Name $sku


New-AzureRMVM -VM $vmConfig -ResourceGroupName $rgName -Location $locName
```

NICに割り当てられたプライベートIPアドレスとパブリックIPアドレスを表示するには、次のコマンドを入力します。

```
$nic1.IPConfig


$nic2.IPConfig


$nic3.IPConfig


$nic4.IPConfig


$nic5.IPConfig


$nic6.IPConfig
```

Azure の負荷分散 (ALB) を作成します

この手順には、次の下位手順が含まれています。

  • フロントエンドIP configの作成
  • ヘルスプローブの作成
  • バックエンドアドレスプールの作成
  • 負荷分散規則(HTTPおよびSSL)の作成
  • フロントエンドIP config、バックエンドアドレスプール、およびLB規則によるALBの作成
  • IP configとバックエンドプールの関連付け

    $frontEndIP1=New-AzureRmLoadBalancerFrontendIpConfig -Name $frontEndConfigName1 -PublicIpAddress $pip3

    $healthProbe=New-AzureRmLoadBalancerProbeConfig -Name $healthProbeName -Protocol Tcp -Port 9000 –IntervalInSeconds 5 -ProbeCount 2

    $beAddressPool1=New-AzureRmLoadBalancerBackendAddressPoolConfig -Name $backendPoolName1

    $lbRule1=New-AzureRmLoadBalancerRuleConfig -Name $lbRuleName1 -FrontendIpConfiguration $frontEndIP1 -BackendAddressPool $beAddressPool1 -Probe $healthProbe -Protocol Tcp -FrontendPort 80 -BackendPort 80 -EnableFloatingIP

    $lb=New-AzureRmLoadBalancer -ResourceGroupName $rgName -Name $lbName -Location $locName -FrontendIpConfiguration $frontEndIP1 -LoadBalancingRule $lbRule1 -BackendAddressPool $beAddressPool1 -Probe $healthProbe

    $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools.Add($lb.BackendAddressPools[0])

    $nic5.IpConfigurations[0].LoadBalancerBackendAddressPools.Add($lb.BackendAddressPools[0])

    $lb=$lb Set-AzureRmLoadBalancer
    $nic2=$nic2 Set-AzureRmNetworkInterface
    $nic5=$nic5 Set-AzureRmNetworkInterface

Citrix ADC VPXペアを正常に展開したら、各VPXインスタンスにログオンしてHA-INC、SNIPアドレス、VIPアドレスを構成します。

  1. 次のコマンドを入力してHAノードを追加します。

    add ha node 1 PeerNodeNSIP -inc Enabled

  2. クライアント側NICのプライベートIPアドレスをVPX1(NIC2)およびVPX2(NIC5)のSNIPとして追加する

    add nsip privateIPofNIC2 255.255.255.0 -type SNIP add nsip privateIPofNIC5 255.255.255.0 -type SNIP

  3. ALBのフロントエンドIPアドレス(パブリックIP)を使用して負荷分散vserverをプライマリノードに追加します。

    lb vserver v1 HTTP フロントテンディポファルブ 80

関連リソース:

Azure でのアクティブスタンバイ HA デプロイメントでの GSLB の構成

PowerShell コマンドを使用して複数の IP アドレスと NIC を使用して高可用性セットアップを構成する