NetScaler VPX 14.1

Configurar una configuración de alta disponibilidad con múltiples direcciones IP y NIC mediante comandos de PowerShell

Puede implementar un par de instancias de NetScaler VPX con varias NIC en una configuración de alta disponibilidad (HA) activa-pasiva en Azure. Cada NIC puede contener varias direcciones IP.

Una implementación activa-pasiva requiere:

  • Una configuración de red independiente (INC) de HA
  • El Azure Load Balancer (ALB) en modo Direct Server Return (DSR)

Todo el tráfico pasa por el nodo principal. El nodo secundario permanece en modo de espera hasta que el nodo principal falla.

Nota:

Para que funcione una implementación de alta disponibilidad de NetScaler VPX en una nube de Azure, necesita una IP pública flotante (PIP) que pueda moverse entre los dos nodos de alta disponibilidad. El Azure Load Balancer (ALB) proporciona esa PIP flotante, que se mueve automáticamente al segundo nodo en caso de conmutación por error.

Diagrama: Ejemplo de una arquitectura de implementación activa-pasiva

Alta disponibilidad de Azure

En una implementación activa-pasiva, las direcciones IP públicas flotantes (PIP) de ALB se añaden como direcciones VIP en cada nodo VPX. En la configuración HA-INC, las direcciones VIP son flotantes y las direcciones SNIP son específicas de la instancia.

ALB monitoriza cada instancia VPX enviando una sonda de estado cada 5 segundos y redirige el tráfico solo a la instancia que envía una respuesta a las sondas de estado a intervalos regulares. Así, en una configuración HA, el nodo principal responde a las sondas de estado y el secundario no. Si las instancias principales pierden dos sondas de estado consecutivas, ALB no redirige el tráfico a esa instancia. En caso de conmutación por error, el nuevo nodo principal comienza a responder a las sondas de estado y el ALB redirige el tráfico a él. El tiempo de conmutación por error estándar de alta disponibilidad de VPX es de tres segundos. El tiempo total de conmutación por error que puede tardar el cambio de tráfico puede ser de un máximo de 13 segundos.

Puede implementar un par de VPX en una configuración HA activa-pasiva de dos maneras, utilizando:

  • Plantilla de alta disponibilidad estándar de NetScaler VPX: utilice esta opción para configurar un par HA con la opción predeterminada de tres subredes y seis NIC.
  • Comandos de Windows PowerShell: utilice esta opción para configurar un par HA según sus requisitos de subred y NIC.

Este tema describe cómo implementar un par VPX en una configuración HA activo-pasivo utilizando comandos de PowerShell. Si desea utilizar la plantilla HA estándar de NetScaler VPX, consulte Configuración de una configuración HA con múltiples direcciones IP y NIC.

Configurar nodos HA-INC mediante comandos de PowerShell

Escenario: Implementación de HA-INC con PowerShell

En este escenario, implementará un par de NetScaler VPX utilizando la topología que se muestra en la tabla. Cada instancia de VPX contiene tres NIC, y cada NIC se implementa en una subred diferente. A cada NIC se le asigna una configuración IP.

ALB VPX1 VPX2
ALB está asociado con la IP pública 3 (pip3) La IP de administración está configurada con IPConfig1, que incluye una IP pública (pip1) y una IP privada (12.5.2.24); nic1; Mgmtsubnet=12.5.2.0/24 La IP de administración está configurada con IPConfig5, que incluye una IP pública (pip3) y una IP privada (12.5.2.26);nic4;Mgmtsubnet=12.5.2.0/24
Las reglas de LB y el puerto configurado son HTTP (80), SSL (443), sondeo de estado (9000) La IP del lado del cliente está configurada con IPConfig3, que incluye una IP privada (12.5.1.27);nic2; FrontEndsubet=12.5.1.0/24 La IP del lado del cliente está configurada con IPConfig7, que incluye una IP privada (12.5.1.28);nic5;FrontEndsubet=12.5.1.0/24
- La IP del lado del servidor está configurada con IPConfig4, que incluye una IP privada (12.5.3.24); nic3;BackendSubnet=12.5.3.0/24 La IP del lado del servidor está configurada con IPConfig8, que incluye una IP privada (12.5.3.28);nic6;BackendSubnet=12.5.3.0/24
- Las reglas y puertos para NSG son SSH (22), HTTP (80), HTTPS (443) -

Configuración de parámetros

En este escenario se utilizan las siguientes configuraciones de parámetros:


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

Para completar la implementación, siga los pasos siguientes utilizando comandos de PowerShell:

  1. Crear un grupo de recursos, una cuenta de almacenamiento y un conjunto de disponibilidad
  2. Crear un grupo de seguridad de red y añadir reglas
  3. Crear una red virtual y tres subredes
  4. Crear direcciones IP públicas
  5. Crear configuraciones IP para VPX1
  6. Crear configuraciones IP para VPX2
  7. Crear NIC para VPX1
  8. Crear NIC para VPX2
  9. Crear VPX1
  10. Crear VPX2
  11. Crear ALB

Crear un grupo de recursos, una cuenta de almacenamiento y un conjunto de disponibilidad.

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

Crear un grupo de seguridad de red y añadir reglas.

$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

Crear una red virtual y tres subredes.

$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}

Crear direcciones IP públicas.

$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

Crear configuraciones IP para 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

Crear configuraciones IP para 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

Crear NIC para 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

Crear NIC para 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

Crear VPX1.

Este paso incluye los siguientes subpasos:

  • Crear objeto de configuración de VM
  • Establecer credenciales, SO e imagen
  • Añadir NICs
  • Especificar disco del SO y crear 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
    

Crear 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--> ```

Para ver las direcciones IP privadas y públicas asignadas a las NIC, escriba los siguientes comandos:

```
$nic1.IPConfig


$nic2.IPConfig


$nic3.IPConfig


$nic4.IPConfig


$nic5.IPConfig


$nic6.IPConfig
<!--NeedCopy--> ```

Crear Azure Load Balancer (ALB).

Este paso incluye los siguientes subpasos:

  • Crear configuración IP de front-end
  • Crear sondeo de estado
  • Crear grupo de direcciones de back-end
  • Crear reglas de equilibrio de carga (HTTP y SSL)
  • Crear ALB con configuración IP de front-end, grupo de direcciones de back-end y regla de LB
  • Asociar configuración IP con grupos 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

Después de haber implementado correctamente el par NetScaler VPX, inicie sesión en cada instancia de VPX para configurar HA-INC y las direcciones SNIP y VIP.

  1. Escriba el siguiente comando para agregar nodos HA.

    add ha node 1 PeerNodeNSIP -inc Enabled

  2. Agregue las direcciones IP privadas de las NIC del lado del cliente como SNIP para VPX1 (NIC2) y VPX2 (NIC5)

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

  3. Agregue un servidor virtual de equilibrio de carga en el nodo principal con la dirección IP de front-end (IP pública) de ALB.

    add lb virtual server v1 HTTP FrontEndIPofALB 80

Recursos relacionados:

Configuración de GSLB en una implementación HA activa-en espera en Azure

Configurar una configuración de alta disponibilidad con múltiples direcciones IP y NIC mediante comandos de PowerShell