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 equilibrador de carga de Azure (ALB) en modo de devolución directa del servidor (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 la 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

Imagen localizada

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 un sondeo de estado cada 5 segundos y redirige el tráfico a esa instancia solo que envía la respuesta de sondeos de estado a 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 primarias no tienen dos sondeos de mantenimiento 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 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 quiere utilizar la plantilla Citrix ADC VPX Standard HA, consulte Configuración de una configuración de alta disponibilidad con varias direcciones IP y NIC.

Configurar nodos HA-INC mediante PowerShell Ccmmands

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
- Reglas y puertos para NSG AreSH (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”

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

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 -Nombre $rule1Name -Descripción "Permitir HTTP" -Acceso Permitir -Protocolo Tcp -Dirección Entrante -Prioridad 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 VM
  • Establecer credenciales, SO e imagen
  • Agregar NIC
  • Especificar el disco del sistema operativo y crear VM

    ``` $SufijoNumber = 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
```

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

Crear equilibrio de carga de Azure (ALB).

Este paso incluye los siguientes pasos secundarios:

  • Crear configuración de IP de frontend
  • Crear sondeo de estado
  • Crear grupo de direcciones back-end
  • Crear reglas de equilibrio de carga (HTTP y SSL)
  • Crear ALB con configuración de IP frontend, grupo de direcciones de back-end y regla LB
  • Asociar la configuración de IP con grupos de back-end

    ``` $frontenDip1=New-AzurermLoadBalancerFrontEndipConfig -Nombre $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)

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

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

add lb vserver 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