PowerShell コマンドを使用して複数の IP アドレスと NIC を使用して高可用性セットアップを構成する
Azureのアクティブ/パッシブ高可用性(HA)セットアップで、複数のNICを持つ一対のNetScaler 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つの方法があります。
- NetScaler VPX標準高可用性テンプレート:このオプションを使用して、3つのサブネットと6つのNICのデフォルトオプションでHAペアを構成します。
- Windows PowerShell コマンド:このオプションを使用して、サブネットと NIC の要件に応じて HA ペアを構成します。
このトピックでは、PowerShell コマンドを使用してアクティブ/パッシブHAセットアップでVPXペアを展開する方法について説明します。 NetScaler VPX Standard HA テンプレートを使用する場合は、「 複数の IP アドレスと NIC を使用した HA セットアップの構成」を参照してください。
PowerShell コマンドを使用して HA-INC ノードを構成する
シナリオ:HA-INC PowerShell の展開
このシナリオでは、表に示されているトポロジを使用してNetScaler 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) が含まれます。 | 管理 IP は IPConfig5 を使用して構成され、これには 1 つのパブリック IP (パイプ 3) と 1 つのプライベート IP (12.5.2.26) が含まれます。 |
設定された 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コマンドを使用して次の手順を完了します。
- リソースグループ、ストレージアカウント、高可用性セットの作成
- ネットワークセキュリティグループの作成と規則の追加
- 仮想ネットワークと3つのサブネットの作成
- パブリックIPアドレスの作成
- VPX1のIP構成の作成
- VPX2のIP構成の作成
- VPX1のNICの作成
- VPX2のNICの作成
- VPX1の作成
- VPX2の作成
- 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
<!--NeedCopy--> ```
NICに割り当てられたプライベートIPアドレスとパブリックIPアドレスを表示するには、次のコマンドを入力します。
```
$nic1.IPConfig
$nic2.IPConfig
$nic3.IPConfig
$nic4.IPConfig
$nic5.IPConfig
$nic6.IPConfig
<!--NeedCopy--> ```
Azure の負荷分散 (ALB) を作成します。
この手順には、次の下位手順が含まれています。
- フロントエンド IP 構成を作成する
- ヘルスプローブの作成
- バックエンドアドレスプールを作成する
- 負荷分散規則(HTTPおよびSSL)の作成
- フロントエンド IP 設定、バックエンドアドレスプール、および LB ルールを使用して ALB を作成します。
-
IP 構成をバックエンドプールに関連付ける
$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
NetScaler VPXペアを正常に展開したら、各VPXインスタンスにログオンしてHA-INC、SNIPアドレス、およびVIPアドレスを構成します。
-
次のコマンドを入力してHAノードを追加します。
add ha node 1 PeerNodeNSIP -inc Enabled
-
クライアント側NICのプライベートIPアドレスをVPX1(NIC2)およびVPX2(NIC5)のSNIPとして追加する
nsip privateIPofNIC2 255.255.255.0 -type SNIP を追加します
nsip privateIPofNIC5 255.255.255.0 -type SNIP を追加します
-
ALB のフロントエンド IP アドレス (パブリック IP) を持つプライマリノードに負荷分散仮想サーバーを追加します。
add lb virtual server v1 HTTP FrontEndIPofALB 80
関連リソース: