NetScaler VPX 14.1

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 de 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 de 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

Haute disponibilité Azure

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 ne redirige le trafic que 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 haute disponibilité VPX est de trois secondes. Le temps de basculement total qui peut être nécessaire pour le changement de 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é NetScaler VPX Standard : 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.

Cette rubrique 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 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. 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 d’équilibrage de charge et les ports configurés sont HTTP (80), SSL (443), sonde d’intégrité (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 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 :

  1. Créer un groupe de ressources, un compte de stockage et un groupe à haute disponibilité
  2. Créer un groupe de sécurité réseau et ajouter des règles
  3. Créer un réseau virtuel et trois sous-réseaux
  4. Créer des adresses IP publiques
  5. Créer des configurations IP pour VPX1
  6. Créer des configurations IP pour VPX2
  7. Créer des cartes réseau pour VPX1
  8. Créer des cartes réseau pour VPX2
  9. Créer VPX1
  10. Créer VPX2
  11. Créer ALB

Créer un groupe de ressources, un compte de stockage et un groupe à haute 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 machine virtuelle
  • 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 HA-INC, ainsi que les adresses SNIP et VIP.

  1. Saisissez la commande suivante pour ajouter des nœuds HA.

    add ha node 1 PeerNodeNSIP -inc Enabled

  2. 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 SNIP add nsip privateIPofNIC5 255.255.255.0 -type SNIP

  3. 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

Configurer une configuration haute disponibilité avec plusieurs adresses IP et cartes réseau à l’aide de commandes PowerShell