Configurer une configuration haute disponibilité avec plusieurs adresses IP et cartes réseau à l’aide des commandes PowerShell
Vous pouvez déployer deux 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 :
- Configuration de réseau indépendant HA (Independent Network Configuration)
- Azure Load Balancer (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’à ce que le nœud principal tombe en panne.
Remarque :
Pour qu’un déploiement de haute disponibilité de NetScaler VPX sur un cloud Azure fonctionne, vous avez besoin d’une adresse IP publique flottante (PIP) qui peut être déplacée entre les deux nœuds de haute disponibilité. L’équilibrage de charge Azure (ALB) fournit ce PIP flottant, qui est déplacé automatiquement vers le deuxième nœud en cas de basculement.
Schéma : Exemple d’architecture de déploiement actif-passif
Dans un déploiement actif-passif, les adresses IP publiques flottantes (PIP) ALB sont ajoutées en tant qu’adresses VIP dans chaque nœud VPX. Dans la configuration HA-INC, les adresses VIP sont flottantes et les adresses SNIP sont spécifiques à l’instance.
ALB surveille chaque instance VPX en envoyant une sonde de santé toutes les 5 secondes et redirige le trafic vers cette instance uniquement qui envoie la réponse des sondes de santé à intervalles réguliers. Ainsi, dans une configuration HA, le nœud principal répond aux sondes d’intégrité et le nœud secondaire ne le fait pas. Si les instances principales manquent deux sondes de santé consécutives, ALB ne redirige pas le trafic vers cette instance. Lors du basculement, la nouvelle base commence à répondre aux sondes d’intégrité et l’ALB redirige le trafic vers elle. Le temps de basculement standard VPX haute disponibilité est de trois secondes. Le temps de basculement total qui peut prendre pour la commutation de trafic peut être de 13 secondes maximum.
Vous pouvez déployer une paire VPX dans une configuration HA actif-passif de deux façons à l’aide de :
- 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 des exigences de votre sous-réseau et de votre carte réseau.
Cette rubrique décrit comment déployer une paire VPX dans une configuration HA active-passive à l’aide des commandes PowerShell. Si vous souhaitez utiliser le modèle NetScaler VPX Standard HA, consultez Configuration d’une configuration HA avec plusieurs adresses IP et cartes réseau.
Configurer les nœuds HA-INC à l’aide des commandes PowerShell
Scénario : déploiement PowerShell HA-INC
Dans ce scénario, vous déployez une paire NetScaler VPX en utilisant la topologie indiqué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. Une configuration IP est attribuée à chaque carte réseau.
ALB | VPX1 | VPX2 |
---|---|---|
ALB est associé à l’IP publique 3 (pip3) | L’adresse IP de gestion est configurée avec IPConfig1, qui inclut une adresse IP publique (pip1) et une adresse IP privée (12.5.2.24) ; nic1 ; Mgmtsubnet=12.5.2.0/24 | L’adresse IP de gestion est configurée avec IPConfig5, qui inclut une adresse IP publique (pip3) et une adresse IP privée (12.5.2.26) ; nic4 ; Mgmtsubnet=12.5.2.0/24 |
Les règles LB et le port configurés sont HTTP (80), SSL (443), sonde d’intégrité (9000) | L’adresse IP côté client est configurée avec IPConfig3, qui inclut une adresse IP privée (12.5.1.27) ; nic2 ; FrontendSubet=12.5.1.0/24 | L’adresse IP côté client est configurée avec IPConfig7, qui inclut une adresse IP privée (12.5.1.28) ; nic5 ; FrontendSubet=12.5.1.0/24 |
- | L’adresse IP côté serveur est configurée avec IPConfig4, qui inclut une adresse IP privée (12.5.3.24) ; nic3 ; BackEndSubnet=12.5.3.0/24 | L’adresse IP côté serveur est configurée avec IPConfig8, qui inclut une adresse IP privée (12.5.3.28) ; nic6 ; BackEndSubnet=12.5.3.0/24 |
- | Les règles et les ports pour NSG sont SSH (22), HTTP (80), HTTPS (443) | - |
Paramètres des 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=”dernière »
$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”
Pour terminer le déploiement, procédez comme suit à l’aide des commandes PowerShell :
- Créer un groupe de ressources, un compte de stockage et un jeu 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éez un groupe de ressources, un compte de stockage et un jeu 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éez un groupe de sécurité réseau et ajoutez 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éez 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éez 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éez 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éez 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éez 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éez 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éez VPX1.
Cette étape comprend les sous-étapes suivantes :
- Créer un objet de configuration de machine virtuelle
- Définir les informations d’identification, le système d’exploitation et l’image
- Ajouter des cartes réseau
-
Spécifier le disque du système d’exploitation et créer une machine virtuelle
$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éez 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 affecté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 équilibrage de charge Azure (ALB).
Cette étape comprend les sous-étapes suivantes :
- Création d’une configuration IP frontale
- Créer une sonde de santé
- Créer un pool d’adresses back-end
- Créer des règles d’équilibrage de charge (HTTP et SSL)
- Créer un ALB avec la configuration IP frontale, le pool d’adresses backend et la règle LB
-
Associer la configuration IP à des pools dorsaux
$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
Une fois que vous avez déployé avec succès la paire NetScaler VPX, connectez-vous à chaque instance VPX pour configurer les adresses HA-INC, SNIP et VIP.
-
Tapez la commande suivante pour ajouter des nœuds HA.
add ha node 1 PeerNodeNSIP -inc Enabled
-
Ajouter des adresses IP privées de cartes réseau côté client en tant que SNIP pour VPX1 (NIC2) et VPX2 (NIC5)
ajouter nsip privateIPofNIC2 255.255.255.0 -type SNIP
ajouter 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 connexes :
Configuration de GSLB sur un déploiement HA actif de secours sur Azure