Configurer une configuration haute disponibilité avec plusieurs adresses IP et cartes réseau à l’aide de commandes PowerShell
Vous pouvez déployer une paire d’instances NetScaler VPX avec plusieurs cartes réseau dans une configuration de haute disponibilité (HA) active-passive sur Azure. Chaque carte réseau peut contenir plusieurs adresses IP.
Un déploiement actif-passif nécessite :
- Une configuration de réseau indépendant (INC) HA
- L’équilibreur de charge Azure (ALB) en mode Direct Server Return (DSR)
Tout le trafic passe par le nœud principal. Le nœud secondaire reste en mode veille jusqu’à la défaillance du nœud principal.
Remarque :
Pour qu’un déploiement haute disponibilité NetScaler VPX fonctionne sur un cloud Azure, vous avez besoin d’une adresse IP publique flottante (PIP) qui peut être déplacée entre les deux nœuds haute disponibilité. L’équilibreur de charge Azure (ALB) fournit cette PIP flottante, qui est automatiquement déplacée vers le deuxième nœud en cas de basculement.
Diagramme : Exemple d’architecture de déploiement actif-passif

Dans un déploiement actif-passif, les adresses IP publiques flottantes (PIP) de l’ALB sont ajoutées en tant qu’adresses VIP dans chaque nœud VPX. Dans une configuration HA-INC, les adresses VIP sont flottantes et les adresses SNIP sont spécifiques à l’instance.
L’ALB surveille chaque instance VPX en envoyant une sonde de santé toutes les 5 secondes et redirige le trafic uniquement vers l’instance qui envoie une réponse de sonde de santé à intervalles réguliers. Ainsi, dans une configuration HA, le nœud principal répond aux sondes de santé et le secondaire non. Si les instances principales manquent deux sondes de santé consécutives, l’ALB ne redirige pas le trafic vers cette instance. En cas de basculement, le nouveau nœud principal commence à répondre aux sondes de santé et l’ALB y redirige le trafic. Le temps de basculement standard de la haute disponibilité VPX est de trois secondes. Le temps de basculement total que peut prendre la commutation du trafic peut être au maximum de 13 secondes.
Vous pouvez déployer une paire VPX dans une configuration HA active-passive de deux manières en utilisant :
- Modèle de haute disponibilité standard NetScaler VPX : utilisez cette option pour configurer une paire HA avec l’option par défaut de trois sous-réseaux et six cartes réseau.
- Commandes Windows PowerShell : utilisez cette option pour configurer une paire HA en fonction de vos exigences en matière de sous-réseau et de cartes réseau.
Ce sujet décrit comment déployer une paire VPX dans une configuration HA active-passive à l’aide de commandes PowerShell. Si vous souhaitez utiliser le modèle HA standard NetScaler VPX, consultez Configuration d’une configuration HA avec plusieurs adresses IP et cartes réseau.
Configurer les nœuds HA-INC à l’aide de commandes PowerShell
Scénario : Déploiement HA-INC avec PowerShell
Dans ce scénario, vous déployez une paire NetScaler VPX en utilisant la topologie donnée dans le tableau. Chaque instance VPX contient trois cartes réseau, chaque carte réseau étant déployée dans un sous-réseau différent. Chaque carte réseau se voit attribuer une configuration IP.
| ALB | VPX1 | VPX2 |
|---|---|---|
| L’ALB est associé à l’adresse IP publique 3 (pip3) | L’IP de gestion est configurée avec IPConfig1, qui inclut une IP publique (pip1) et une IP privée (12.5.2.24) ; nic1 ; Mgmtsubnet=12.5.2.0/24 | L’IP de gestion est configurée avec IPConfig5, qui inclut une IP publique (pip3) et une IP privée (12.5.2.26) ; nic4 ; Mgmtsubnet=12.5.2.0/24 |
| Les règles et ports LB configurés sont HTTP (80), SSL (443), sonde de santé (9000) | L’IP côté client est configurée avec IPConfig3, qui inclut une IP privée (12.5.1.27) ; nic2 ; FrontEndsubet=12.5.1.0/24 | L’IP côté client est configurée avec IPConfig7, qui inclut une IP privée (12.5.1.28) ; nic5 ; FrontEndsubet=12.5.1.0/24 |
| - | L’IP côté serveur est configurée avec IPConfig4, qui inclut une IP privée (12.5.3.24) ; nic3 ; BackendSubnet=12.5.3.0/24 | L’IP côté serveur est configurée avec IPConfig8, qui inclut une IP privée (12.5.3.28) ; nic6 ; BackendSubnet=12.5.3.0/24 |
| - | Les règles et ports pour le NSG sont SSH (22), HTTP (80), HTTPS (443) | - |
Paramètres
Les paramètres suivants sont utilisés dans ce scénario :
$locName= "South 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"
<!--NeedCopy-->
Pour terminer le déploiement, suivez les étapes suivantes à l’aide de commandes PowerShell :
- Créer un groupe de ressources, un compte de stockage et un ensemble de disponibilité
- Créer un groupe de sécurité réseau et ajouter des règles
- Créer un réseau virtuel et trois sous-réseaux
- Créer des adresses IP publiques
- Créer des configurations IP pour VPX1
- Créer des configurations IP pour VPX2
- Créer des cartes réseau pour VPX1
- Créer des cartes réseau pour VPX2
- Créer VPX1
- Créer VPX2
- Créer ALB
Créer un groupe de ressources, un compte de stockage et un ensemble de disponibilité.
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
Créer un groupe de sécurité réseau et ajouter des règles.
$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
Créer un réseau virtuel et trois sous-réseaux.
$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}
Créer des adresses IP publiques.
$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
Créer des configurations IP pour VPX1.
$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
Créer des configurations IP pour VPX2.
$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
Créer des cartes réseau pour VPX1.
$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
Créer des cartes réseau pour VPX2.
$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
Créer VPX1.
Cette étape comprend les sous-étapes suivantes :
- Créer un objet de configuration de VM
- Définir les identifiants, l’OS et l’image
- Ajouter des NIC
-
Spécifier le disque OS et créer la 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
Créer 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--> ```
Pour afficher les adresses IP privées et publiques attribuées aux cartes réseau, tapez les commandes suivantes :
```
$nic1.IPConfig
$nic2.IPConfig
$nic3.IPConfig
$nic4.IPConfig
$nic5.IPConfig
$nic6.IPConfig
<!--NeedCopy--> ```
Créer un équilibreur de charge Azure (ALB).
Cette étape comprend les sous-étapes suivantes :
- Créer une configuration IP frontale
- Créer une sonde d’intégrité
- Créer un pool d’adresses de back-end
- Créer des règles d’équilibrage de charge (HTTP et SSL)
- Créer un ALB avec une configuration IP frontale, un pool d’adresses de back-end et une règle d’équilibrage de charge
-
Associer la configuration IP aux pools de back-end
$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
Après avoir déployé avec succès la paire NetScaler VPX, connectez-vous à chaque instance VPX pour configurer les adresses HA-INC, SNIP et VIP.
-
Saisissez la commande suivante pour ajouter des nœuds HA.
add ha node 1 PeerNodeNSIP -inc Enabled -
Ajoutez les adresses IP privées des cartes réseau côté client en tant que SNIP pour VPX1 (NIC2) et VPX2 (NIC5)
add nsip privateIPofNIC2 255.255.255.0 -type SNIPadd nsip privateIPofNIC5 255.255.255.0 -type SNIP -
Ajoutez un serveur virtuel d’équilibrage de charge sur le nœud principal avec l’adresse IP frontale (IP publique) d’ALB.
add lb virtual server v1 HTTP FrontEndIPofALB 80
Ressources associées :
Configuration de GSLB sur un déploiement HA actif-veille sur Azure