Convertir un balanceador de carga de aplicación a IPv6

En este documento se explica cómo convertir recursos y back-ends de balanceadores de carga de aplicaciones de solo IPv4 (pila única) a IPv4 e IPv6 (pila dual). La principal ventaja de usar IPv6 es que se puede asignar un conjunto de direcciones IP mucho mayor. Puedes configurar el balanceador de carga para que finalice el tráfico IPv6 de entrada y lo envíe a tus back-ends a través de una conexión IPv4 o IPv6, según tus preferencias. Para obtener más información, consulta IPv6 para balanceadores de carga de aplicación y balanceadores de carga de red de proxy.

En este documento, "solo IPv4 (pila única)" hace referencia a los recursos que solo usan direcciones IPv4, mientras que "IPv4 e IPv6 (pila dual)" hace referencia a los recursos que usan direcciones IPv4 e IPv6.

Antes de empezar

Ten en cuenta las siguientes condiciones antes de iniciar el proceso de conversión:

  • Debes usar uno de los siguientes tipos de Application Load Balancers:

    • Balanceador de carga de aplicación externo global
    • Balanceador de carga de aplicación externo regional
    • Balanceador de carga de aplicación interno entre regiones
    • Balanceador de carga de aplicación interno regional

    Los balanceadores de carga de aplicaciones clásicos no admiten back-ends ni subredes de pila dual. Para obtener más información sobre la compatibilidad con IPv6, consulta IPv6 para balanceadores de carga de aplicaciones y balanceadores de carga de red de proxy.

  • Tu balanceador de carga debe tener backends de grupos de instancias de VM o backends de grupos de puntos de conexión de red (NEG) zonales con GCE_VM_IP_PORT puntos finales. Otros tipos de backend no admiten el doble stack.

Además, el proceso de conversión varía en función del tipo de balanceador de carga.

  • En el caso de los balanceadores de carga de aplicaciones externos globales, puedes convertir los backends a doble pila y crear una regla de reenvío IPv6 que pueda gestionar el tráfico IPv6 entrante.

  • En el caso de los balanceadores de carga de aplicación internos entre regiones, los balanceadores de carga de aplicación externos regionales y los balanceadores de carga de aplicación internos regionales, solo tienes que convertir los backends a pila dual. Las reglas de reenvío IPv6 no se admiten en estos balanceadores de carga.

Para obtener información sobre cómo configurar balanceadores de carga de aplicaciones, consulta la siguiente documentación:

Identificar los recursos que se van a convertir

Anota los nombres de los recursos con los que está asociado tu balanceador de carga. Deberás proporcionar estos nombres más adelante.

  1. Para enumerar todas las subredes, usa el comando gcloud compute networks subnets list:

    gcloud compute networks subnets list
    

    Anota el nombre de la subred con direcciones solo IPv4 que quieras convertir a pila dual. Más adelante se utilizará SUBNET para hacer referencia a este nombre. Más adelante se hará referencia a la red de VPC como NETWORK.

  2. Para enumerar todos los servicios de backend, usa el comando gcloud compute backend-services list:

    gcloud compute backend-services list
    

    Anota el nombre del servicio backend que quieres convertir a dual-stack. Más adelante se utilizará BACKEND_SERVICE para hacer referencia a este nombre.

  3. Para ver una lista de todos los mapas de URLs, usa el comando gcloud compute url-maps list:

    gcloud compute url-maps list
    

    Anota el nombre del mapa de URLs asociado a tu balanceador de carga. Más adelante se utilizará URL_MAP para hacer referencia a este nombre.

  4. Si ya tienes un balanceador de carga, para ver el tipo de pila de IP de tus back-ends, usa el comando gcloud compute instances list:

    gcloud compute instances list \
        --format= \
        "table(
        name,
        zone.basename(),
        networkInterfaces[].stackType.notnull().list(),
        networkInterfaces[].ipv6AccessConfigs[0].externalIpv6.notnull().list():label=EXTERNAL_IPV6,
        networkInterfaces[].ipv6Address.notnull().list():label=INTERNAL_IPV6)"
    
  5. Para enumerar todas las instancias de VM y las plantillas de instancia, usa el comando gcloud compute instances list y el comando gcloud compute instance-templates list:

    gcloud compute instances list
    
    gcloud compute instance-templates list
    

    Anota los nombres de las instancias y las plantillas de instancia que quieras convertir a pila dual. Más adelante, se hará referencia a este nombre como VM_INSTANCE y INSTANCE_TEMPLATES.

  6. Para enumerar todos los grupos de instancias, usa el comando gcloud compute instance-groups list:

    gcloud compute instance-groups list
    

    Anota el nombre de los grupos de endpoints de red que quieras convertir a pila dual. Más adelante se utilizará INSTANCE_GROUP para hacer referencia a este nombre.

  7. Para enumerar todos los grupos de puntos finales de red (NEG) por zonas, usa el comando gcloud compute network-endpoint-groups list:

    gcloud compute network-endpoint-groups list
    

    Anota los nombres de los backends de NEG zonales que quieras convertir a dual-stack. Más adelante se utilizará ZONAL_NEG para hacer referencia a este nombre.

  8. Para ver una lista de todos los proxies de destino, usa el comando gcloud compute target-http-proxies list:

    gcloud compute target-http-proxies list
    

    Anota el nombre del proxy de destino asociado a tu balanceador de carga. Más adelante se utilizará TARGET_PROXY para hacer referencia a este nombre.

Convertir de back-ends de pila única a pila dual

En esta sección se explica cómo convertir los recursos y los back-ends de balanceador de carga que solo usan direcciones IPv4 (de pila única) a direcciones IPv4 e IPv6 (de doble pila).

Actualizar la subred

Las subredes de pila dual solo se admiten en redes de VPC en modo personalizado. Las subredes de pila dual no se admiten en redes de VPC en modo automático ni en redes antiguas. Aunque las redes en modo automático pueden ser útiles para las primeras exploraciones, las VPCs en modo personalizado son más adecuadas para la mayoría de los entornos de producción. Te recomendamos que utilices VPCs en modo personalizado.

Para actualizar la VPC a la configuración de doble pila, sigue estos pasos:

  1. Si utilizas una red de VPC de modo automático, primero debes convertirla a modo personalizado.

    Si utilizas la red default, debes convertirla en una red de VPC de modo personalizado.

  2. Para habilitar IPv6, consulta Cambiar el tipo de pila de una subred a pila dual.

    Asegúrate de que el tipo de acceso IPv6 de la subred esté configurado como External.

  3. Opcional: Si quieres configurar intervalos de direcciones IPv6 internas en subredes de esta red, sigue estos pasos:

    1. En Intervalo IPv6 interno ULA de la red VPC, selecciona Habilitado.
    2. En Asignar intervalo de IPv6 interno, selecciona Automáticamente o Manualmente.

      Si selecciona Manualmente, introduzca un intervalo /48 dentro del intervalo fd20::/20. Si el intervalo está en uso, se te pedirá que proporciones otro.

Actualizar la subred de solo proxy

Si utilizas un balanceador de carga basado en Envoy, te recomendamos que cambies el tipo de pila de subred solo proxy a pila dual. Para obtener información sobre los balanceadores de carga que admiten subredes de solo proxy, consulta Balanceadores de carga admitidos.

No puedes actualizar el tipo de pila de una subred de solo proxy (purpose=REGIONAL_MANAGED_PROXY) de la misma forma que lo harías con una subred normal (con subnets update command). En su lugar, debes crear una subred de solo proxy de copia de seguridad con un tipo de pila de doble pila y, a continuación, asignarle el rol activo. Esto se debe a que solo puede haber una subred solo de proxy activa por región y por red de VPC.

Después de asignar un intervalo IPv6 interno en la red de VPC, haz lo siguiente para cambiar el tipo de pila de la subred solo proxy a pila dual.

Consola

  1. Crea una subred de solo proxy de copia de seguridad en la misma región que la subred de solo proxy activa y especifica el tipo de pila de IP como de doble pila.

    1. En la Google Cloud consola, ve a la página Redes de VPC.
      Ir a la página Redes de VPC
    2. Haga clic en el nombre de la red VPC a la que quiere añadir una subred solo proxy.
    3. Haz clic en Añadir subred.
    4. Escribe un nombre.
    5. Selecciona una región.
    6. En Propósito, selecciona Proxy gestionado regional.
    7. En Rol, selecciona Copia de seguridad.
    8. En Tipo de pila de IP, selecciona IPv4 e IPv6 (pila dual).
    9. Introduce un intervalo de direcciones IP.
    10. Haz clic en Añadir.
  2. Crea o modifica reglas de cortafuegos de entrada que se apliquen a tus VMs o endpoints de backend para que incluyan el intervalo de direcciones IP principal de la subred de solo proxy de backup.

  3. Asigna el rol activo a la subred de solo proxy de copia de seguridad. Esta acción también degrada la subred de solo proxy que estaba activa a la función de copia de seguridad:

    1. En la Google Cloud consola, ve a la página Redes de VPC.
      Ir a la página Redes de VPC
    2. Haga clic en el nombre de la red VPC que quiera modificar.
    3. En Subredes de solo proxy reservadas para el balanceo de carga, busca la subred de copia de seguridad que has creado en el paso anterior.
    4. Haz clic en Activate (Activar).
    5. Especifica un tiempo de espera de purga opcional.
    6. Haz clic en Activar la subred.
  4. Una vez que haya transcurrido el tiempo de espera del vaciado de conexiones o cuando tengas la certeza de que las conexiones a tus VMs o endpoints de backend no proceden de proxies de la subred de solo proxy que estaba activa (ahora es la de backup), puedes hacer lo siguiente:

    • Modifica las reglas de cortafuegos de entrada que se aplican a tus máquinas virtuales o endpoints de backend para que no incluyan el intervalo de direcciones IP principal de la subred de solo proxy que estaba activa anteriormente (ahora es la de copia de seguridad).
    • Elimina la subred de solo proxy que estaba activa (ahora es la de copia de seguridad) para liberar las direcciones IP que usaba en su intervalo de direcciones IP principal.

gcloud

En este procedimiento se presupone que ya tienes una subred de solo proxy activa.

  1. Crea una subred de solo proxy de respaldo en la misma región, especificando un tipo de pila de pila dual (--stack-type=IPV4_IPV6), mediante el comando gcloud compute networks subnets create. Esta subred se asigna como copia de seguridad con la marca --role=BACKUP.

    gcloud compute networks subnets create BACKUP_PROXY_ONLY_SUBNET_NAME \
      --purpose=REGIONAL_MANAGED_PROXY \
      --role=BACKUP \
      --region=REGION \
      --network=VPC_NETWORK_NAME \
      --range=BACKUP_PROXY_ONLY_SUBNET_RANGE \
      --stack-type=IPV4_IPV6
    

    Haz los cambios siguientes:

    • BACKUP_PROXY_ONLY_SUBNET_NAME: nombre de la subred de solo proxy de copia de seguridad recién creada
    • REGION: la región de la subred de solo proxy de copia de seguridad recién creada. Debe ser la misma región que la subred solo proxy activa.
    • VPC_NETWORK_NAME: la red de la subred de solo proxy de copia de seguridad que se acaba de crear. Debe ser la misma red que la subred solo proxy activa.
    • VPC_NETWORK_NAME: nombre de la red VPC
    • BACKUP_PROXY_ONLY_SUBNET_RANGE: el intervalo CIDR de la subred de solo proxy de copia de seguridad que se acaba de crear
  2. Crea o modifica reglas de cortafuegos de entrada que se apliquen a tus VMs o endpoints de backend para que incluyan el intervalo de direcciones IP principal de la subred de solo proxy de copia de seguridad. La regla de cortafuegos ya debería aceptar conexiones de la subred activa.

    gcloud compute firewall-rules update PROXY_ONLY_SUBNET_FIREWALL_RULE \
      --source-ranges ACTIVE_PROXY_ONLY_SUBNET_RANGE,BACKUP_PROXY_ONLY_SUBNET_RANGE
    

    Haz los cambios siguientes:

    • PROXY_ONLY_SUBNET_FIREWALL_RULE: el nombre de la regla de cortafuegos que permite que el tráfico de la subred de solo proxy llegue a tus instancias o endpoints de backend
    • ACTIVE_PROXY_ONLY_SUBNET_RANGE: el intervalo CIDR de la subred de solo proxy activa
    • BACKUP_PROXY_ONLY_SUBNET_RANGE: el intervalo CIDR de la subred de solo proxy de copia de seguridad
  3. Actualiza la nueva subred para que sea la subred de solo proxy ACTIVE de la región y espera a que se purgue la antigua. De este modo, la subred de solo proxy que estaba activa pasa a ser la copia de seguridad.

    Para agotar un intervalo de direcciones IP inmediatamente, define --drain-timeout como 0s. De esta forma, se finalizan rápidamente todas las conexiones a los proxies que tienen direcciones asignadas en la subred que se está vaciando.

    gcloud compute networks subnets update BACKUP_PROXY_ONLY_SUBNET_NAME \
      --region=REGION \
      --role=ACTIVE \
      --drain-timeout=CONNECTION_DRAINING_TIMEOUT
    

    Haz los cambios siguientes:

    • BACKUP_PROXY_ONLY_SUBNET_NAME: nombre de la subred de solo proxy de copia de seguridad recién creada
    • REGION: la región de la subred de solo proxy de copia de seguridad recién creada. Debe ser la misma región que la subred solo proxy activa.
    • CONNECTION_DRAINING_TIMEOUT: la cantidad de tiempo, en segundos, que Google Cloud usa para migrar las conexiones actuales de los proxies de la subred de solo proxy que estaba activa.
  4. Monitoriza el estado del drenaje con un comando list o describe. El estado de la subred es DRAINING mientras se está vaciando.

    gcloud compute networks subnets list
    

    Espera a que se complete el proceso. Cuando se purga la subred de solo proxy antigua, el estado de la subred es READY.

  5. Actualiza la regla de cortafuegos de la subred de solo proxy para que solo permita conexiones desde la nueva subred.

    gcloud compute firewall-rules PROXY_ONLY_SUBNET_FIREWALL_RULE \
      --source-ranges BACKUP_PROXY_ONLY_SUBNET_RANGE
    
  6. Cuando tengas la certeza de que las conexiones a tus VMs o endpoints de backend no proceden de proxies de la subred de solo proxy que estaba activa (ahora es la de copia de seguridad), puedes eliminar la subred antigua.

    gcloud compute networks subnets delete ACTIVE_PROXY_ONLY_SUBNET_NAME \
      --region=REGION
    

Actualizar la instancia de VM o las plantillas

Puedes configurar direcciones IPv6 en una instancia de VM si la subred a la que está conectada la VM tiene configurado un intervalo IPv6. Solo los siguientes back-ends pueden admitir direcciones IPv6:

  • Backends de grupos de instancias: uno o varios backends de grupos de instancias gestionados, sin gestionar o una combinación de ambos.
  • NEGs por zonas: uno o varios NEGs por zonas de tipo GCE_VM_IP_PORT.

Actualizar instancias de VM

No puedes editar las instancias de VM que forman parte de un grupo de instancias gestionado o no gestionado. Para actualizar las instancias de VM a pila dual, sigue estos pasos:

  1. Eliminar instancias concretas de un grupo
  2. Crear una VM de doble pila
  3. Crear instancias con nombres específicos en grupos de instancias gestionados

Actualizar plantillas de instancias de VM

No puedes actualizar una plantilla de instancia. Si necesitas hacer cambios, puedes crear otra plantilla con propiedades similares. Para actualizar las plantillas de instancias de VM a pila dual, sigue estos pasos:

Consola

  1. En la consola, ve a la página Plantillas de instancia. Google Cloud

    Ir a Plantillas de instancia

    1. Haz clic en la plantilla de instancia que quieras copiar y actualizar.
    2. Haz clic en Crear similar.
    3. Expande la sección Opciones avanzadas.
    4. En Etiquetas de red, introduzca allow-health-check-ipv6.
    5. En la sección Interfaces de red, haz clic en Añadir una interfaz de red.
    6. En la lista Red, selecciona la red de VPC en modo personalizado.
    7. En la lista Subred, selecciona SUBNET.
    8. En Tipo de pila de IP, selecciona IPv4 e IPv6 (pila dual).
    9. Haz clic en Crear.
  2. Inicia una actualización continua básica en el grupo de instancias administrado MIG asociado al balanceador de carga.

Actualizar el NEG de zona

Los endpoints de NEG zonales no se pueden editar. Debes eliminar los endpoints IPv4 y crear un endpoint de doble pila con direcciones IPv4 e IPv6.

Para configurar un NEG zonal (con endpoints de tipo GCE_VM_IP_PORT) en la región REGION_A, primero crea las VMs en la zona GCP_NEG_ZONE. A continuación, añade los puntos finales de red de la VM al NEG zonal.

Crear VMs

Consola

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ir a instancias de VM

  2. Haz clic en Crear instancia.

  3. Asigna el valor vm-a1 a Nombre.

  4. En Región, elija REGION_A y, en el campo Zona, elija cualquier valor. En este procedimiento, nos referimos a esta zona como GCP_NEG_ZONE.

  5. En la sección Disco de arranque, asegúrate de que la opción Debian GNU/Linux 12 (bookworm) esté seleccionada para el disco de arranque. Haz clic en Elegir para cambiar la imagen si es necesario.

  6. Expande la sección Opciones avanzadas y haz los siguientes cambios:

    • Despliega la sección Redes.
    • En el campo Etiquetas de red, introduce allow-health-check.
    • En la sección Interfaces de red, haz los siguientes cambios:
      • Red: NETWORK
      • Subred: SUBNET
      • Tipo de pila de IP: IPv4 e IPv6 (pila dual)
    • Haz clic en Listo.
    • Haz clic en Gestión. En el campo Startup script (Secuencia de comandos de inicio), copia y pega el siguiente contenido de la secuencia de comandos.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
  7. Haz clic en Crear.

  8. Repite los pasos siguientes para crear una segunda máquina virtual con la siguiente combinación de nombre y zona:

    • Nombre: vm-a2, zona: GCP_NEG_ZONE

gcloud

Crea las VMs ejecutando el siguiente comando dos veces y usando estas combinaciones para el nombre de la VM y su zona. El contenido de la secuencia de comandos es idéntico en ambas máquinas virtuales.

  • VM_NAME de vm-a1 y cualquier zona GCP_NEG_ZONE de tu elección.
  • VM_NAME de vm-a2 y la misma zona GCP_NEG_ZONE.

    gcloud compute instances create VM_NAME \
        --zone=GCP_NEG_ZONE \
        --stack-type=IPV4_IPV6 \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-health-check \
        --subnet=SUBNET \
        --metadata=startup-script='#! /bin/bash
          apt-get update
          apt-get install apache2 -y
          a2ensite default-ssl
          a2enmod ssl
          vm_hostname="$(curl -H "Metadata-Flavor:Google" \
          http://metadata.google.internal/computeMetadata/v1/instance/name)"
          echo "Page served from: $vm_hostname" | \
          tee /var/www/html/index.html
          systemctl restart apache2'
    

Añadir endpoints al NEG de zona

Consola

Para añadir endpoints a un NEG zonal, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Grupos de endpoints de red.

    Ir a grupos de puntos finales de red

  2. En la lista Nombre, haga clic en el nombre del grupo de puntos finales de red (ZONAL_NEG). Verá la página Detalles del grupo de puntos finales de red.

  3. En la sección Puntos finales de red de este grupo, selecciona el endpoint de NEG que has creado anteriormente. Haz clic en Quitar endpoint.

  4. En la sección Puntos finales de red de este grupo, haz clic en Añadir punto final de red.

  5. Selecciona la instancia de VM.

  6. En la sección Interfaz de red, se muestra el nombre, la zona y la subred de la máquina virtual.

  7. En el campo Dirección IPv4, introduce la dirección IPv4 del nuevo endpoint de red.

  8. En el campo Dirección IPv6, introduce la dirección IPv6 del nuevo endpoint de red.

  9. Seleccione el Tipo de puerto.

    1. Si selecciona Predeterminado, el endpoint usará el puerto predeterminado 80 para todos los endpoints del grupo de endpoints de red. Esto es suficiente para nuestro ejemplo, ya que el servidor Apache sirve solicitudes en el puerto 80.
    2. Si seleccionas Personalizado, introduce el Número de puerto del endpoint que quieras usar.
  10. Para añadir más endpoints, haz clic en Añadir endpoint de red y repite los pasos anteriores.

  11. Una vez que hayas añadido todos los endpoints, haz clic en Crear.

gcloud

  1. Añade puntos finales (GCE_VM_IP_PORT) a ZONAL_NEG.

    gcloud compute network-endpoint-groups update ZONAL_NEG \
        --zone=GCP_NEG_ZONE \
        --add-endpoint='instance=vm-a1,ip=IPv4_ADDRESS, \
          ipv6=IPv6_ADDRESS,port=80' \
        --add-endpoint='instance=vm-a2,ip=IPv4_ADDRESS, \
          ipv6=IPv6_ADDRESS,port=80'
    

Haz los cambios siguientes:

IPv4_ADDRESS: dirección IPv4 del endpoint de la red. La dirección IPv4 debe pertenecer a una máquina virtual de Compute Engine (ya sea la IP principal o como parte de un intervalo de IPs de alias). Si no se especifica la dirección IP, se usará la dirección IP principal de la instancia de VM de la red a la que pertenece el grupo de extremos de red.

IPv6_ADDRESS: Dirección IPv6 del endpoint de la red. La dirección IPv6 debe pertenecer a una instancia de máquina virtual de la red a la que pertenece el grupo de extremos de red (dirección IPv6 externa).

Crear una regla de cortafuegos para las sondas de comprobación del estado de IPv6

Debes crear una regla de cortafuegos para permitir las comprobaciones del estado desde los intervalos de IPs de los sistemas de sondeo de Google Cloud . Para obtener más información, consulta intervalos de IPs de sondeo.

Asegúrate de que la regla de entrada se aplique a las instancias que se están balanceando y de que permita el tráfico de los sistemas de comprobación del estado de Google Cloud . En este ejemplo se usa la etiqueta de destino allow-health-check-ipv6 para identificar las instancias de VM a las que se aplica.

Sin esta regla de cortafuegos, la regla denegar de forma predeterminada entrada bloquea el tráfico IPv6 entrante a las instancias de backend.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de cortafuegos.

    Ir a Políticas de cortafuegos

  2. Para permitir el tráfico de subred IPv6, haz clic de nuevo en Crear regla de cortafuegos e introduce la siguiente información:

    • Nombre: fw-allow-lb-access-ipv6
    • Red: NETWORK
    • Prioridad: 1000
    • Sentido del tráfico: entrada
    • Objetivos: Etiquetas de destino especificadas
    • Etiquetas de destino: allow-health-check-ipv6
    • Filtro de origen: Intervalos de IPv6
    • Intervalos de IPv6 de origen:

      • En el caso del balanceador de carga de aplicaciones externo global y del balanceador de carga de red con proxy externo global, introduce 2600:2d00:1:b029::/64,2600:2d00:1:1::/64

      • En el caso de los balanceadores de carga de aplicación internos entre regiones, los balanceadores de carga de aplicación externos regionales, los balanceadores de carga de aplicación internos regionales, los balanceadores de carga de red con proxy internos entre regiones, los balanceadores de carga de red con proxy externos regionales y los balanceadores de carga de red con proxy internos regionales, introduce 2600:2d00:1:b029::/64

    • Protocolos y puertos: Permitir todo

  3. Haz clic en Crear.

gcloud

  1. Crea la regla de cortafuegos fw-allow-lb-access-ipv6 para permitir la comunicación con la subred.

    En el caso del balanceador de carga de aplicación externo global y del balanceador de carga de red con proxy externo global, usa el siguiente comando:

    gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check-ipv6 \
        --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
        --rules=all
    

    Para los balanceadores de carga de aplicaciones internos entre regiones, los balanceadores de carga de aplicaciones externos regionales, los balanceadores de carga de aplicaciones internos regionales, los balanceadores de carga de red con proxy internos entre regiones, los balanceadores de carga de red con proxy externos regionales y los balanceadores de carga de red con proxy internos regionales, usa el siguiente comando:

    gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check-ipv6 \
        --source-ranges=2600:2d00:1:b029::/64 \
        --rules=all
    

Crear una regla de cortafuegos para la subred de solo proxy

Si usas un balanceador de carga de aplicaciones externo regional o un balanceador de carga de aplicaciones interno, debes actualizar la regla de cortafuegos de entrada fw-allow-lb-access-ipv6 para permitir el tráfico de la subred de solo proxy a los backends.

Para obtener el intervalo de direcciones IPv6 de la subred de solo proxy, ejecuta el siguiente comando:

gcloud compute networks subnets describe PROXY_ONLY_SUBNET \
    --region=REGION \
    --format="value(internalIpv6Prefix)"

Anota el intervalo de direcciones IPv6 internas. Más adelante, se hará referencia a este intervalo como IPV6_PROXY_ONLY_SUBNET_RANGE.

Para actualizar la regla de cortafuegos fw-allow-lb-access-ipv6 de la subred de solo proxy, haz lo siguiente:

Consola

  1. En la Google Cloud consola, ve a la página Políticas de cortafuegos.

    Ir a Políticas de cortafuegos

  2. En el panel Reglas de cortafuegos de VPC, haga clic en fw-allow-lb-access-ipv6.

    • Intervalos de IPv6 de origen: 2600:2d00:1:b029::/64, IPV6_PROXY_ONLY_SUBNET_RANGE
  3. Haz clic en Guardar.

gcloud

  1. Actualiza la regla de cortafuegos fw-allow-lb-access-ipv6 para permitir la comunicación con la subred de solo proxy:

    gcloud compute firewall-rules update fw-allow-lb-access-ipv6 \
        --source-ranges=2600:2d00:1:b029::/64,IPV6_PROXY_ONLY_SUBNET_RANGE
    

Crear un servicio de backend y una regla de reenvío para IPv6

En esta sección se describe el procedimiento para crear un servicio de backend y una regla de reenvío para IPv6. Ten en cuenta que la regla de reenvío de IPv6 solo se puede crear para balanceadores de carga de aplicación externos globales. Las reglas de reenvío de IPv6 no se admiten en los balanceadores de carga de aplicación internos entre regiones, los balanceadores de carga de aplicación externos regionales ni los balanceadores de carga de aplicación internos regionales.

En este punto del proceso, tanto BACKEND_SERVICE como BACKEND_SERVICE_IPV6 pueden servir tráfico. Para evitar interrupciones en el tráfico, cree un servicio de backend con la política de selección de direcciones IP definida como Prefer IPv6. Después de crear el nuevo servicio de backend, puede enrutar el tráfico al nuevo servicio de backend IPv6.

Consola

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haz clic en el nombre del balanceador de carga.

  3. Haz clic en Editar.

Configura el servicio de backend:

  1. Haz clic en Configuración de backend.
  2. En el campo Servicio de backend, selecciona Crear un servicio de backend.
  3. Asigna el valor BACKEND_SERVICE_IPV6 a Nombre.
  4. En Tipo de backend, selecciona Grupo de puntos finales de red por zonas.
  5. En la lista Política de selección de direcciones IP, selecciona Preferir IPv6.
  6. En el campo Protocol (Protocolo), selecciona HTTP.
  7. En el panel Nuevo backend, haz lo siguiente:
    1. En la lista Grupo de puntos finales de red, selecciona ZONAL_NEG.
    2. En Número máximo de SPS, introduce 10.
  8. En la lista Comprobación del estado, selecciona una comprobación del estado HTTP.
  9. Haz clic en Listo.

Configura el frontend IPv6:

Las reglas de reenvío con IPv6 no se admiten en los balanceadores de carga de aplicaciones internos entre regiones, los balanceadores de carga de aplicaciones externos regionales ni los balanceadores de carga de aplicaciones internos regionales.

  1. Haz clic en Configuración de frontend.
  2. Haz clic en Añadir IP y puerto de frontend.
  3. En el campo Nombre, introduce un nombre para la regla de reenvío.
  4. En el campo Protocol (Protocolo), selecciona HTTP.
  5. Configura Versión de IP como IPv6.
  6. Haz clic en Listo.
  7. Haz clic en Actualizar.

Configurar reglas de enrutamiento

  1. Haz clic en Reglas de enrutamiento.
  2. Haz clic en Regla de host y ruta avanzada.
  3. Haz clic en Actualizar.

gcloud

  1. Crea una comprobación del estado:

     gcloud compute health-checks create http HEALTH_CHECK \
         --port 80
    
  2. Crea el servicio de backend para el tráfico HTTP:

    Mundial

    En el caso del balanceador de carga de aplicación externo global, usa el siguiente comando:

    gcloud compute backend-services create BACKEND_SERVICE_IPV6 \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=HEALTH_CHECK \
        --global
    

    interregional

    En el caso del balanceador de carga de aplicación interno entre regiones, usa el siguiente comando:

    gcloud compute backend-services create BACKEND_SERVICE_IPV6 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=HEALTH_CHECK \
        --global
    

    regional

    En el caso del balanceador de carga de aplicación externo regional, usa el siguiente comando:

    gcloud compute backend-services create BACKEND_SERVICE_IPV6 \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=HEALTH_CHECK \
        --region=REGION
    

    En el caso del balanceador de carga de aplicación interno regional, usa el siguiente comando:

    gcloud compute backend-services create BACKEND_SERVICE_IPV6 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTP \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=HEALTH_CHECK \
        --region=REGION
    
  3. Añade los NEGs zonales de doble pila como backend al servicio de backend.

    Mundial

    En el caso del balanceador de carga de aplicación externo global, usa el siguiente comando:

     gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \
         --network-endpoint-group=ZONAL_NEG \
         --network-endpoint-group-zone=ZONE \
         --max-rate-per-endpoint=10 \
         --global
    

    interregional

    En el caso del balanceador de carga de aplicación interno entre regiones, usa el siguiente comando:

     gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \
         --network-endpoint-group=ZONAL_NEG \
         --network-endpoint-group-zone=ZONE \
         --max-rate-per-endpoint=10 \
         --global
    

    regional

    En el caso del balanceador de carga de aplicación externo regional y del balanceador de carga de aplicación interno regional, usa el siguiente comando:

     gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \
         --network-endpoint-group=ZONAL_NEG \
         --network-endpoint-group-zone=ZONE \
         --max-rate-per-endpoint=10 \
         --region=REGION
    
  4. Añade los grupos de instancias de doble pila como backend al servicio de backend.

    Mundial

    En el caso del balanceador de carga de aplicación externo global, usa el siguiente comando:

     gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \
         --instance-group=INSTANCE_GROUP \
         --global
    

    interregional

    En el caso del balanceador de carga de aplicación interno entre regiones, usa el siguiente comando:

     gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \
         --instance-group=INSTANCE_GROUP \
         --global
    

    regional

    En el caso del balanceador de carga de aplicación externo regional y del balanceador de carga de aplicación interno regional, usa el siguiente comando:

     gcloud compute backend-services add-backend BACKEND_SERVICE_IPV6 \
         --instance-group=INSTANCE_GROUP \
         --region=REGION
    
  5. Solo para balanceadores de carga de aplicación externos globales. Crea la regla de reenvío IPv6 para el balanceador de carga de aplicación externo global. Usa el comando:

     gcloud compute forwarding-rules create FORWARDING_RULE_IPV6 \
         --load-balancing-scheme=EXTERNAL_MANAGED \
         --network-tier=PREMIUM \
         --global \
         --target-http-proxy=TARGET_PROXY \
         --ports=443
    

Dirigir el tráfico al nuevo servicio de backend IPv6

Actualiza el mapa de URLs para dirigir una parte del tráfico de clientes al nuevo servicio de backend IPv6 BACKEND_SERVICE_IPV6.

  1. Usa el siguiente comando para editar los mapas de URLs:

    Mundial

    En el caso del balanceador de carga de aplicación externo global, usa el siguiente comando:

      gcloud compute url-maps edit URL_MAP \
          --global
      

    interregional

    En el caso del balanceador de carga de aplicación interno entre regiones, usa el siguiente comando:

      gcloud compute url-maps edit URL_MAP \
          --global
      

    regional

    En el caso del balanceador de carga de aplicación externo regional y del balanceador de carga de aplicación interno regional, usa el siguiente comando:

       gcloud compute url-maps edit URL_MAP \
           --region=REGION
       
  2. En el editor de texto que aparece, añade un routeRule con una acción weightedBackendServices que dirija un porcentaje del tráfico IPv6 a BACKEND_SERVICE_IPV6.

    defaultService: global/backendServices/BACKEND_SERVICE
    hostRules:
    - hosts:
      - '*'
      pathMatcher: matcher1
    name: URL_MAP
    pathMatchers:
    - defaultService: global/backendServices/BACKEND_SERVICE
      name: matcher1
      routeRules:
      - matchRules:
        - prefixMatch: ''
        priority: 1
        routeAction:
          weightedBackendServices:
          - backendService: global/backendServices/BACKEND_SERVICE
            weight: 95
          - backendService: global/backendServices/BACKEND_SERVICE_IPV6
            weight: 5
    

Para implementar una migración gradual a IPv6, aumenta el porcentaje de peso del nuevo servicio de backend BACKEND_SERVICE_IPV6de forma incremental hasta el 100% editando el mapa de URLs varias veces.

Configurar la política de selección de direcciones IP

Una vez que hayas convertido tus recursos y backends a dual-stack, puedes usar la política de selección de direcciones IP para especificar el tipo de tráfico que se envía desde el servicio de backend a tus backends.

Sustituye IP_ADDRESS_SELECTION_POLICY por uno de los siguientes valores:

Política de selección de direcciones IP Descripción
Solo IPv4 Solo envía tráfico IPv4 a los backends del servicio de backend, independientemente del tráfico del cliente al GFE. Solo se utilizan comprobaciones del estado IPv4 para comprobar el estado de los backends.
Preferir IPv6

Prioriza la conexión IPv6 del backend sobre la conexión IPv4 (siempre que haya un backend correcto con direcciones IPv6).

Las comprobaciones del estado monitorizan periódicamente las conexiones IPv6 e IPv4 de los backends. El GFE primero intenta establecer la conexión IPv6. Si la conexión IPv6 se interrumpe o es lenta, el GFE usa Happy Eyeballs para volver a IPv4 y conectarse a ella.

Aunque una de las conexiones IPv6 o IPv4 no esté en buen estado, el backend se sigue considerando en buen estado y el GFE puede probar ambas conexiones. Finalmente, Happy Eyeballs selecciona cuál usar.

Solo IPv6

Solo envía tráfico IPv6 a los backends del servicio de backend, independientemente del tráfico del cliente al proxy. Solo se usan comprobaciones del estado de IPv6 para comprobar el estado de los backends.

No se realiza ninguna validación para comprobar si el tipo de tráfico de backend coincide con la política de selección de direcciones IP. Por ejemplo, si tienes back-ends solo IPv4 y seleccionas Only IPv6 como política de selección de direcciones IP, la configuración dará como resultado back-ends no operativos porque el tráfico no puede llegar a esos back-ends y se devuelve el código de respuesta HTTP 503 a los clientes.

Consola

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haz clic en el nombre del balanceador de carga.

  3. Haz clic en Editar.

  4. Haz clic en Configuración de backend.

  5. En el campo Servicio backend, selecciona BACKEND_SERVICE_IPV6.

  6. El Tipo de backend debe ser Grupo de puntos finales de red por zonas o Grupo de instancias.

  7. En la lista Política de selección de direcciones IP, selecciona IP_ADDRESS_SELECTION_POLICY.

  8. Haz clic en Listo.

gcloud

Actualiza la política de selección de direcciones IP del servicio de backend:

Mundial

En el caso del balanceador de carga de aplicación externo global, usa el siguiente comando:

gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
    --global

interregional

En el caso del balanceador de carga de aplicación interno entre regiones, usa el siguiente comando:

gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --protocol=HTTP \
    --ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
    --global

regional

En el caso del balanceador de carga de aplicación externo regional, usa el siguiente comando:

gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
    --region=REGION

En el caso del balanceador de carga de aplicación interno regional, usa el siguiente comando:

gcloud compute backend-services update BACKEND_SERVICE_IPV6 \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --protocol=HTTP \
    --ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \
    --region=REGION

Probar el balanceador de carga

Debe validar que todos los recursos necesarios se hayan actualizado a pila dual. Una vez que hayas actualizado todos los recursos, el tráfico debe dirigirse automáticamente a los back-ends. Puedes consultar los registros y verificar que la conversión se ha completado.

Prueba el balanceador de carga para confirmar que la migración se ha completado correctamente y que el tráfico entrante llega a los backends como se espera.

Buscar las direcciones IP del balanceador de carga

Consola

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haz clic en el nombre del balanceador de carga.

  3. En la sección Frontend, se muestran dos direcciones IP del balanceador de carga. En este procedimiento, la dirección IPv4 se denomina IP_ADDRESS_IPV4 y la dirección IPv6, IP_ADDRESS_IPV6.

  4. En la sección Backends (Backend), cuando la política de selección de direcciones IP es Prefer IPv6, se muestran dos estados de comprobación de estado de los backends.

Enviar tráfico al balanceador de carga

En este ejemplo, las solicitudes del comando curl se distribuyen aleatoriamente entre los back-ends.

Para balanceadores de carga externos

  1. Repite los siguientes comandos varias veces hasta que veas que responden todas las VMs de backend:

    curl -m1 IP_ADDRESS_IPV4:PORT
    
    curl -m1 IP_ADDRESS_IPV6:PORT
    

    Por ejemplo, si la dirección IPv6 es [fd20:1db0:b882:802:0:46:0:0]:80, el comando tendrá un aspecto similar a este:

    curl -m1 [fd20:1db0:b882:802:0:46:0:0]:80
    

Para balanceadores de carga internos

  1. Crea una VM de cliente de prueba en la misma red VPC y región que el balanceador de carga. No es necesario que esté en la misma subred o zona.

    gcloud compute instances create client-vm \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh \
        --subnet=SUBNET
    
  2. Usa SSH para conectarte a la instancia de cliente.

    gcloud compute ssh client-vm \
        --zone=ZONE
    
  3. Repite los siguientes comandos varias veces hasta que veas que responden todas las VMs de backend:

    curl -m1 IP_ADDRESS_IPV4:PORT
    
    curl -m1 IP_ADDRESS_IPV6:PORT
    

    Por ejemplo, si la dirección IPv6 es [fd20:1db0:b882:802:0:46:0:0]:80, el comando tendrá un aspecto similar a este:

    curl -m1 [fd20:1db0:b882:802:0:46:0:0]:80
    

Consultar los registros

Cada entrada de registro captura la dirección IPv4 e IPv6 de destino del backend. Como admitimos el doble pila, es importante observar la dirección IP que usa el backend.

Para comprobar si el tráfico se dirige a IPv6 o vuelve a IPv4, consulta los registros.

El HttpRequest contiene la dirección backend_ip asociada al backend. Si examinas los registros y comparas las direcciones IPv4 e IPv6 de destino de backend_ip, puedes confirmar qué dirección IP se utiliza.