NetScaler VPX

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

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

Una implementación activo-pasiva requiere:

  • Configuración de red independiente de HA (INC)
  • 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 falla el nodo principal.

Nota:

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

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

Alta disponibilidad de Azure

En una implementación activo-pasiva, las direcciones IP públicas flotantes (PIP) ALB se agregan 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 supervisa cada instancia VPX enviando una sonda de estado cada 5 segundos y redirige el tráfico a esa instancia solo que envía la respuesta de los sondeos de estado en intervalos regulares. Por lo tanto, en una configuración de HA, el nodo primario responde a sondeos de estado y secundario no. Si las instancias principales pierden dos sondeos de estado consecutivos, ALB no redirige el tráfico a esa instancia. En caso de conmutación por error, el nuevo primario comienza a responder a los sondeos de mantenimiento y el ALB redirige el tráfico hacia él. El tiempo de conmutación por error de alta disponibilidad VPX estándar es de tres segundos. El tiempo total de conmutación por error que puede tardar en el cambio de tráfico puede ser de 13 segundos como máximo.

Puede implementar un par VPX en la configuración de HA activa-pasiva de dos maneras mediante:

  • Plantilla de alta disponibilidad estándar de Citrix ADC VPX: Utilice esta opción para configurar un par de alta disponibilidad con la opción predeterminada de tres subredes y seis NIC.
  • Comandos de Windows PowerShell: utilice esta opción para configurar un par de HA de acuerdo con los requisitos de la subred y la NIC.

En este tema se describe cómo implementar un par VPX en la instalación de HA activo-pasiva mediante comandos de PowerShell. Si desea utilizar la plantilla HA estándar de Citrix ADC VPX, consulte Configuración de una instalación de HA con varias direcciones IP y NIC.

Configuración de nodos HA-INC mediante comandos de PowerShell

Caso: Implementación de PowerShell de HA-INC

En este caso, se implementa un par de Citrix ADC VPX mediante la topología indicada en la tabla. Cada instancia VPX contiene tres NIC, 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 IP pública 3 (pip3) La IP de administración se configura 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 se configura 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 LB y el puerto configurados son HTTP (80), SSL (443), sonda 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 caso se utilizan los parámetros siguientes.

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

$editor = “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=”HTTP entrante”

$rule2Name=”HTTPS entrante”

$rule3name=”SSH entrante”

Para completar la implementación, complete los pasos siguientes mediante 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 agregar 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

Cree 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

Cree un grupo de seguridad de red y agregue 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

Cree 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

Cree 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

Cree 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 pasos secundarios:

  • Crear objeto de configuración de máquina virtual
  • Establecer credenciales, SO e imagen
  • Agregar NIC
  • Especificar el disco del sistema operativo 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 equilibrio de carga de Azure (ALB).

Este paso incluye los siguientes pasos secundarios:

  • Crear configuración IP front-end
  • Crear sonda de salud
  • Crear grupo de direcciones de backend
  • Crear reglas de equilibrio de carga (HTTP y SSL)
  • Crear ALB con configuración IP front-end, grupo de direcciones backend y regla LB
  • Asociar configuración de 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 implementar correctamente el par Citrix ADC VPX, inicie sesión en cada instancia 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. Agregar direcciones IP privadas de NIC del lado del cliente como SNIP para VPX1 (NIC2) y VPX2 (NIC5)

    agregar nsip privateIPofNIC2 255.255.255.0 -tipo SNIP agregar nsip privateIPofNIC5 255.255.255.0 -tipo SNIP

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

    add lb virtual server v1 HTTP FrontEndIPofALB 80

Recursos relacionados:

Configuración de GSLB en la implementación de HA activa en espera en Azure

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