Actualización de un equilibrador de carga básico con PowerShell
Importante
El 30 de septiembre de 2025, se retirará Basic Load Balancer. Para obtener más información, consulte el anuncio oficial. Si actualmente usa Basic Load Balancer, asegúrese de actualizar a Standard Load Balancer antes de la fecha de retirada.
Azure Standard Load Balancer ofrece un amplio conjunto de funcionalidades y alta disponibilidad gracias a la redundancia de zona. Para más información acerca de la SKU de Load Balancer, consulte la tabla de comparación.
En este artículo se presenta un módulo de PowerShell que crea un Standard Load Balancer con la misma configuración que el Basic Load Balancer y, a continuación, asocia el miembro del grupo de back-end de Virtual Machines o de Virtual Machine Scale Sets con el nuevo Load Balancer.
Para ver un tutorial detallado del módulo y el proceso de actualización, vea el vídeo siguiente:
- 03:06: paso a paso
- 32:54: recuperación
- 40:55: escenarios avanzados
- 57:54: recursos
Información general sobre la actualización
El módulo de PowerShell realiza las siguientes funciones:
- Comprueba que se admite el escenario de equilibrador de carga básico proporcionado para la actualización.
- Realiza una copia de seguridad de la configuración del equilibrador de carga básico y del conjunto de escalado de máquinas virtuales, lo que habilita el reintento en caso de error o si se producen errores.
- En el caso de los equilibradores de carga públicos, actualiza las direcciones IP públicas de front-end a la SKU estándar y la asignación estática
- Actualice la configuración del equilibrador de carga básico a un nuevo equilibrador de carga estándar, lo que garantiza la paridad de configuración y características.
- Migra los miembros del grupo de back-end de Virtual Machine Scale Sets o de Virtual Machines de Basic Load Balancer a Standard Load Balancer.
- Crea y asocia un grupo de seguridad de red con Virtual Machine Scale Sets o Virtual Machines para asegurarse de que el tráfico con equilibrio de carga alcanza a los miembros del grupo de back-end. Va después de Standard Load Balancer a una directiva de red de denegación predeterminada.
- Actualiza las direcciones IP públicas de nivel de instancia asociadas a las instancias de Virtual Machine Scale Sets o Virtual Machines.
- Actualiza los grupos NAT de entrada a regla NAT de entrada para backends de conjuntos de escalado de máquinas virtuales, creando un nuevo grupo de backends para cada grupo NAT migrado. Especifique
-skipUpgradeNATPoolsToNATRules
que desea omitir esta actualización y utilizar el módulo de migración de grupo NAT independiente más adelante para obtener más opciones de grupo backend. - Registra la operación de actualización para facilitar la auditoría y la recuperación de errores.
Advertencia
La migración interna de equilibradores de carga básicos en los que las máquinas virtuales de back-end o las instancias de VMSS no tengan direcciones IP públicas requerirá pasos adicionales para la conectividad de back-end a Internet. Revise ¿Cómo se debería configurar el tráfico saliente del equilibrador de carga?
Nota:
Si el conjunto de escalado de máquinas virtuales del grupo de back-end de Load Balancer tiene direcciones IP públicas en su configuración de red, las direcciones IP públicas asociadas a cada instancia del conjunto de escalado de máquinas virtuales cambiarán cuando se actualicen a la SKU estándar. Esto se debe a que no se pueden actualizar las direcciones IP públicas de nivel de instancia del conjunto de escalado, solo se reemplazan por una nueva dirección IP pública de SKU estándar. Todas las demás direcciones IP públicas se conservarán a través de la migración.
Nota:
Si el conjunto de escalado de máquinas virtuales detrás de Load Balancer es un Clúster de Service Fabric, la migración con este script tardará más tiempo, es mayor riesgo para la aplicación y provocará tiempo de inactividad. Revise Guía de actualización del equilibrador de carga del clúster de Service Fabric para ver las opciones de migración.
Escenarios no admitidos
- Equilibradores de carga básicos con configuraciones IP de front-end IPv6
- Equilibradores de carga básicos para clústeres de Azure Kubernetes Services (AKS)
- Equilibradores de carga básicos con un miembro del grupo de back-end del conjunto de escalado de máquinas virtuales en el que una o varias instancias de conjunto de escalado de máquinas virtuales tienen habilitadas las directivas de protección de instancias ProtectFromScaleSetActions
- Migración de un equilibrador de carga básico a un equilibrador de carga estándar existente
Instale el módulo "AzureBasicLoadBalancerUpgrade"
Requisitos previos
- PowerShell: se recomienda una versión admitida de PowerShell 7 o superior para usarla con el módulo AzureBasicLoadBalancerUpgrade en todas las plataformas, incluidas Windows, Linux y macOS. Pero se admite PowerShell 5.1 en Windows.
Instalación del módulo
Instale el módulo desde la Galería PowerShell
Install-Module -Name AzureBasicLoadBalancerUpgrade -Scope CurrentUser -Repository PSGallery -Force
Pasos anteriores y posteriores a la migración
Pasos previos a la migración
- Validación de la compatibilidad con el escenario
- Planificación de tiempo de inactividad de la aplicación durante la migración
- Desarrollo de pruebas de conectividad entrantes y salientes para el tráfico
- Planificación de cambios de IP pública de nivel de instancia en instancias de conjunto de escalado de máquinas virtuales (consulte la nota)
- [Recomendado] cree grupos de seguridad de red o agregue reglas de seguridad a un grupo de seguridad de red existente para los miembros del grupo de back-end. Permita el tráfico a través de Load Balancer, así como cualquier otro tráfico que se permita explícitamente en los recursos públicos de la SKU Estándar.
- [Recomendado] prepare la conectividad saliente tomando uno de los siguientes enfoques descritos en ¿Cómo se debería configurar el tráfico saliente del equilibrador de carga?
Pasos posteriores a la migración
- Comprobación de que la migración se ha realizado correctamente
- Prueba de la conectividad entrante de la aplicación a través de Load Balancer
- Prueba de la conectividad saliente de los miembros del grupo de back-end a Internet
- Para equilibradores de carga públicos con varios grupos de back-end, creación de reglas de salida para cada grupo de back-end
Uso del módulo
Asegúrese de haber seleccionado el id. de suscripción de Load Balancer Basic, para lo que debe ejecutar
Select-AzSubscription
.Select-AzSubscription -Subscription <SubscriptionId>
Busque el Load Balancer que desea actualizar. Registre su nombre y el nombre del grupo de recursos.
Examine los parámetros básicos del módulo:
- BasicLoadBalancerName [cadena] Obligatorio: este parámetro es el nombre del equilibrador de carga básico existente que desea actualizar
- ResourceGroupName [cadena] Obligatorio: este parámetro es el nombre del grupo de recursos que contiene el equilibrador de carga básico
- StandardLoadBalancerName [cadena] Opcional: use este parámetro para configurar opcionalmente un nuevo nombre para Standard Load Balancer. Si no se especifica, se reutiliza el nombre de Basic Load Balancer.
- RecoveryBackupPath [cadena] Opcional: este parámetro permite especificar una ruta de acceso alternativa en la que almacenar el archivo de copia de seguridad de plantillas de ARM del equilibrador de carga básico (el valor predeterminado es el directorio de trabajo actual)
Sugerencia
Se pueden ver parámetros adicionales para escenarios avanzados y de recuperación mediante la ejecución de
Get-Help Start-AzBasicLoadBalancerUpgrade -Detailed
.Ejecute el comando
Start-AzBasicLoadBalancerUpgrade
, utilizando los siguientes ejemplos como guía.
Ejemplo: validación de un escenario
Compruebe que se admite una instancia de Basic Load Balancer para la actualización
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -validateScenarioOnly
Ejemplo: actualización por nombre
Actualice una instancia de Basic Load Balancer a Standard Load Balancer con el mismo nombre, y proporcione el nombre de la instancia de Basic Load Balancer y el grupo de recursos
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName>
Ejemplo: actualización, cambio de nombre y representación de registros
Actualice una instancia de Load Balancer Basic a la versión Standard Load Balancer con el nombre especificado y muestre la salida registrada en pantalla
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -FollowLog
Ejemplo: actualización con una ruta de acceso alternativa de copia de seguridad
Actualice una instancia de Basic Load Balancer a Standard Load Balancer con el nombre especificado y almacene el archivo de copia de seguridad de la instancia de Basic Load Balancer en la ruta de acceso especificada
Start-AzBasicLoadBalancerUpgrade -ResourceGroupName <loadBalancerRGName> -BasicLoadBalancerName <basicLBName> -StandardLoadBalancerName <newStandardLBName> -RecoveryBackupPath C:\BasicLBRecovery
Ejemplo: validación de la migración completada
Valide una migración completada y pase la copia de seguridad del archivo de estado de la instancia de Basic Load Balancer y el nombre de la instancia de Standard Load Balancer
Start-AzBasicLoadBalancerUpgrade -validateCompletedMigration -StandardLoadBalancerName <newStandardLBName> -basicLoadBalancerStatePath C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json
Ejemplo: migración de varios equilibradores de carga relacionados
Migre varios equilibradores de carga con miembros de back-end compartidos al mismo tiempo, normalmente cuando una aplicación tiene un equilibrador de carga interno y externo
# build array of multiple basic load balancers
$multiLBConfig = @(
@{
'standardLoadBalancerName' = 'myStandardInternalLB01' # specifying the standard load balancer name is optional
'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName myRG -Name myBasicInternalLB01)
},
@{
'standardLoadBalancerName' = 'myStandardExternalLB02'
'basicLoadBalancer' = (Get-AzLoadBalancer -ResourceGroupName myRG -Name myBasicExternalLB02)
}
)
# pass the array of load balancer configurations to the -MultiLBConfig parameter
Start-AzBasicLoadBalancerUpgrade -MultiLBConfig $multiLBConfig
Ejemplo: error de reintento de migración del conjunto de escalado de máquinas virtuales
Reintente una actualización con errores para un equilibrador de carga del conjunto de escalado de máquinas virtuales (debido a un error o terminación del script); para ello, proporcione el archivo de estado de copia de seguridad de la instancia de Basic Load Balancer y del conjunto de escalado de máquinas virtuales
Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json -FailedMigrationRetryFilePathVMSS C:\RecoveryBackups\VMSS_myVMSS_rg-basiclbrg_20220912T1740032148.json
Ejemplo: reintento del error de migración de máquinas virtuales
Reintente una actualización con errores para un equilibrador de carga de VM (debido a un error o terminación del script); para ello, proporcione el archivo de estado de copia de seguridad de la instancia de Basic Load Balancer
Start-AzBasicLoadBalancerUpgrade -FailedMigrationRetryFilePathLB C:\RecoveryBackups\State_mybasiclb_rg-basiclbrg_20220912T1740032148.json
Preguntas frecuentes
¿Cómo puedo enumerar los equilibradores de carga básicos que se van a migrar en mi entorno?
Una manera de obtener una lista de los equilibradores de carga básicos que deben migrarse en su entorno es usar una consulta de Azure Resource Graph. En la siguiente consulta se enumeran todos los equilibradores de carga básicos a los que tiene acceso para verlos:
Resources
| where type == 'microsoft.network/loadbalancers' and sku.name == 'Basic'
"Hemos escrito una consulta compleja que evalúa la preparación de cada Basic Load Balancer para la migración en la mayoría de los criterios que comprueba este módulo durante validación. La consulta de Resource Graph se puede encontrar en nuestro proyecto de GitHub o abrirla en Azure Resource Graph Explorer.
¿Esta migración provocará tiempo de inactividad en mi aplicación?
Sí, dado que Load Balancer Básico debe quitarse para poder crear Standard Load Balancer, hay un tiempo de inactividad en la aplicación. Consulte ¿Cuánto tarda la actualización?
¿Migrará el módulo mi dirección IP de front-end al nuevo equilibrador de carga estándar?
Sí, tanto para equilibradores de carga públicos como internos, el módulo garantiza que se mantengan las direcciones IP de front-end. En el caso de las direcciones IP públicas, la dirección IP se convierte en una dirección IP estática antes de la migración. En el caso de los front-end internos, el módulo intentará reasignar la misma dirección IP que se liberó cuando se eliminó el equilibrador de carga básico. Si la dirección IP privada no estuviera disponible, se producirá un error en el script (consulte ¿Qué ocurriría al producirse un error en la actualización a mitad de la migración?).
¿Cuánto tarda la actualización?
La actualización normalmente tarda unos minutos en finalizar el script. Los siguientes factores pueden provocar tiempos de actualización más largos:
- Complejidad de la configuración del equilibrador de carga
- Número de miembros del grupo de back-end
- Recuento de instancias de Virtual Machine Scale Sets o Virtual Machines asociadas
- Clúster de Service Fabric: las actualizaciones de los clústeres de Service Fabric tardan alrededor de una hora en realizar pruebas.
Tenga en cuenta el tiempo de inactividad y planifique la conmutación por error si es necesario.
¿Puede el script de Azure PowerShell cambiar el tráfico de mi equilibrador de carga básico al nuevo equilibrador de carga estándar?
Sí. El script de Azure PowerShell migra Virtual Machine Scale Sets y Virtual Machines a los grupos de back-end de Standard Load Balancer recién creados.
¿Qué componentes del equilibrador de carga se migran?
El script migra lo siguiente desde el equilibrador de carga básico al equilibrador de carga estándar:
Equilibradores de carga públicos y privados:
- Sondeos de estado:
- Todos los sondeos se migran al nuevo Standard Load Balancer
- Reglas de equilibrio de carga:
- Todas las reglas de equilibrio de carga se migran al nuevo Standard Load Balancer
- Reglas NAT de entrada:
- Todas las reglas NAT creadas por el usuario se migran al nuevo Standard Load Balancer
- Grupos NAT de entrada:
- De forma predeterminada, los grupos NAT se actualizan a las reglas NAT
- Para migrar grupos NAT en su lugar, especifique el parámetro
-skipUpgradeNATPoolsToNATRules
al actualizar
- Grupos de back-end:
- Todos los grupos de back-end se migran al nuevo Standard Load Balancer
- Todas las interfaces de red de Virtual Machine Scale Sets o Virtual Machines, así como las configuraciones de IP, se migran al nuevo Standard Load Balancer
- Si un conjunto de escalado de máquinas virtuales usa una directiva de actualización gradual, el script actualizará la directiva de actualización del conjunto de escalado de máquinas virtuales a "Manual" durante el proceso de migración y la revertirá a "Gradual" una vez completada la migración.
- Direcciones IP públicas de nivel de instancia
- En el caso de Virtual Machines y Virtual Machine Scale Sets, convierte las direcciones IP públicas conectadas de la SKU básica a la estándar. Tenga en cuenta que las IP públicas de la instancia del conjunto de escalado cambiarán durante la actualización, mientras que las IP de máquina virtual, no lo harán.
- Etiquetas de Basic Load Balancer a Standard Load Balancer
Equilibrador de carga público:
- Configuración IP de front-end pública
- Convierte la dirección IP pública en una dirección IP estática, si es dinámica
- Actualiza la SKU de IP pública a Estándar, si es Básica
- Actualiza todas las direcciones IP públicas asociadas al nuevo equilibrador de carga estándar
- Reglas de salida:
- Los equilibradores de carga básicos no admiten reglas de salida configuradas. El script crea una regla de salida en el Standard Load Balancer para conservar el comportamiento de salida del Basic Load Balancer. Para obtener más información sobre las reglas de salida, consulte Reglas de salida.
- Grupo de seguridad de red
- El equilibrador de carga básico no requiere un grupo de seguridad de red para permitir la conectividad saliente. En caso de que no haya ningún grupo de seguridad de red asociado al conjunto de escalado de máquinas virtuales, se crea un nuevo grupo de seguridad de red para conservar la misma funcionalidad. Este nuevo grupo de seguridad de red se asocia a las interfaces de red del grupo de back-end del conjunto de escalado de máquinas virtuales. Permite las mismas reglas de equilibrio de carga de puertos y protocolos, además de preservar la conectividad de salida.
Equilibrador de carga interno:
- Configuración IP de front-end privada
Nota:
Los grupos de seguridad de red no están configurados como parte de la actualización interna del equilibrador de carga. Para obtener más información sobre los grupos de seguridad de red, consulte Grupos de seguridad de red
¿Cómo puedo migrar cuando mis miembros del grupo de back-end pertenecen a varios equilibradores de carga?
En un escenario en el que los miembros del grupo de back-end también son miembros de grupos de back-end en otra instancia de Load Balancer, como cuando tiene equilibradores de carga internos y externos para la misma aplicación, es necesario migrar las instancias de Basic Load Balancer al mismo tiempo. Al intentar migrar las instancias de Load Balancer una a una, se intentarían mezclar recursos de SKU básica y estándar, lo cual no se permite. El script de migración admite esto pasando varias instancias de Basic Load Balancer en la misma ejecución de script mediante el parámetro -MultiLBConfig
.
¿Cómo se valida que una migración se realizó correctamente?
Al final de su ejecución, el módulo de actualización realiza las siguientes validaciones, comparando Basic Load Balancer con el nuevo Standard Load Balancer. En una migración con errores, se puede llamar a esta misma operación mediante los parámetros -validateCompletedMigration
y -basicLoadBalancerStatePath
para determinar el estado de configuración de Standard Load Balancer (si se creó uno). El archivo de registro creado durante la migración también proporciona detalles exhaustivos sobre la operación de migración y los errores.
- Standard Load Balancer existe y su SKU es "Estándar".
- El recuento de configuraciones de IP de front-end coincide y las direcciones IP son las mismas.
- El recuento de coincidencias de grupos de back-end y sus pertenencias
- El recuento de coincidencias de reglas de equilibrio de carga
- El recuento de coincidencias de sondeos de estado
- El recuento de coincidencias de reglas NAT de entrada
- El recuento de coincidencias de reglas NAT de salida
- Los equilibradores de carga estándar externos tienen una regla de salida configurada
- Los miembros del grupo de back-end de Standard Load Balancer externos tienen grupos de seguridad de red asociados
¿Cómo se debería configurar el tráfico saliente del equilibrador de carga?
Los equilibradores de carga de SKU estándar no permiten el acceso de salida predeterminado para sus miembros de grupo de back-end. Permitir el acceso saliente a Internet requiere más pasos.
En el caso de los equilibradores de carga externos, use reglas de salida para habilitar explícitamente el tráfico saliente para los miembros del grupo. Si tiene un único grupo de back-end, configuraremos automáticamente una regla de salida durante la migración. Si tiene más de un grupo de back-end, debe crear manualmente las reglas de salida para especificar asignaciones de puertos.
En el caso de los equilibradores de carga internos, no se pueden usar reglas de salida, ya que no hay ninguna dirección IP pública a SNAT. Esto deja un par de opciones que se deben tener en cuenta:
- NAT Gateway: las puertas de enlace NAT Gateway son el enfoque recomendado de Azure para el tráfico saliente en la mayoría de los casos. Sin embargo, las puertas de enlace NAT requieren que la subred adjunta no tenga recursos de red de SKU básicos, lo que significa que debe haber migrado todos los equilibradores de carga y direcciones IP públicas antes de poder usarlos. Por este motivo, se recomienda usar un enfoque de dos pasos en el que primero se use uno de los métodos siguientes para la conectividad saliente y, a continuación, cambiar a NAT Gateway una vez que se completen las migraciones básicas de SKU.
- Aplicación virtual de red: enrute el tráfico a través de una aplicación virtual de red, como Azure Firewall, para enruta el tráfico a Internet. Esta opción resulta ideal en caso de tener ya configurada una aplicación virtual de red.
- Equilibrador de carga externo secundario: si se agrega un equilibrador de carga externo secundario a los recursos de back-end, use el equilibrador de carga externo para el tráfico saliente mediante la configuración de reglas de salida. Si este equilibrador de carga externo no tiene configuradas reglas de equilibrio de carga, reglas NAT o grupos NAT de entrada, los recursos de back-end permanecen aislados en la red interna para el tráfico entrante. Consulte Configuración del equilibrador de carga de solo salida. Con esta opción, el equilibrador de carga externo se puede configurar antes de migrar de la SKU básica a la estándar y migrar al mismo tiempo que el equilibrador de carga interno mediante el parámetro
-MultiLBConfig
- Direcciones IP públicas: por último, las direcciones IP públicas se pueden agregar directamente a las máquinas virtuales o instancias del conjunto de escalado de máquinas virtuales. Sin embargo, esta opción no se recomienda debido a que hay una mayor superficie de seguridad y al gasto que supone de agregar direcciones IP públicas.
¿Qué ocurre si se produce un error en la actualización durante la migración?
El módulo está diseñado para tener en cuenta la posibilidad de que se produzcan errores, ya sea debido a errores no controladas o a la finalización inesperada del script. El diseño del error es un enfoque de "conmutación por error", donde en lugar de intentar volver al equilibrador de carga básico, debe corregir el problema que provoca el error (consulte el archivo de registro o la salida del error) y vuelva a intentar la migración, especificando los parámetros -FailedMigrationRetryFilePathLB <BasicLoadBalancerBackupFilePath> -FailedMigrationRetryFilePathVMSS <VMSSBackupFile>
. En el caso de los equilibradores de carga públicos, dado que la SKU de dirección IP pública se actualiza a la versión Estándar, no será posible volver a mover la misma dirección IP a un la versión Básico.
Vea un vídeo del proceso de recuperación:
Si la migración con errores tenía como destino varios equilibradores de carga al mismo tiempo, utilice el parámetro -MultiLBConfig
para recuperar cada instancia de Load Balancer individualmente mediante el proceso que se indica a continuación:
- Solucione la causa del error de migración. Compruebe el archivo de registro
Start-AzBasicLoadBalancerUpgrade.log
para obtener más información. - Quite el nuevo equilibrador de carga estándar (si se ha creado). En función de la fase de la migración con errores, es posible que tenga que quitar la referencia de Standard Load Balancer de las interfaces de red (configuraciones de IP) de Virtual Machine Scale Sets o Virtual Machines o sondeos de mantenimiento para quitar Standard Load Balancer.
- Busque el archivo de copia de seguridad de estado del equilibrador de carga básico. Este archivo está en el directorio donde se ejecutó el script o en la ruta de acceso especificada con el parámetro
-RecoveryBackupPath
durante la ejecución con error. El archivo se denomina:State_<basicLBName>_<basicLBRGName>_<timestamp>.json
- Vuelva a ejecutar el script de migración, especificando los parámetros
-FailedMigrationRetryFilePathLB <BasicLoadBalancerbackupFilePath>
y-FailedMigrationRetryFilePathVMSS <VMSSBackupFile>
(para back-end de Virtual Machine Scale Sets) en lugar de -BasicLoadBalancerName o pasando Basic Load Balancer a través de la canalización