En este documento se muestra cómo convertir el balanceador de cargas de red del proxy externo global. recursos y backends de solo IPv4 (pila única) a IPv4 e IPv6 (doble pila). En este documento, solo IPv4 (pila única) se refiere a los recursos que solo usan direcciones IPv4, y IPv4 e IPv6 (pila doble) se refiere a los recursos que usan direcciones IPv4 e IPv6.
Las instrucciones de este documento se aplican a los balanceadores de cargas de red del proxy externo global del proxy SSL y del proxy TCP.
Ventajas
Hay varios beneficios clave para convertir tus balanceadores de cargas en pilas dobles:
La principal ventaja de IPv6 es que se puede asignar un grupo de direcciones IP mucho más grande.
Muchos clientes que ya usan balanceadores de cargas solo IPv4 pueden dar un paso más mediante el aprovechamiento de métodos específicos de la nube y convertir de backends compatibles solo con IPv4 a backends IPv4 e IPv6 (pila doble).
Puedes configurar el balanceador de cargas para finalizar el tráfico IPv6 de entrada y usar un proxy en este tráfico a través de una conexión IPv4 o IPv6 para tus backends, según tu preferencia. Para obtener más información, consulta IPv6.
Limitaciones
No puedes actualizar el tipo de pila de IP de la subred de IPv4 y de IPv6 (pila doble) a solo IPv4.
Cuando configuras la política de selección de direcciones IP en el servicio de backend solo como IPv6, aún puedes configurar backends solo IPv4. Sin embargo, esta configuración da como resultado backends en mal estado, los clientes obtienen el código de respuesta
503
y el tráfico no fluye ascendente. Los registros muestranfailed_to_pick_backend
enstatusDetails
.Puedes configurar la política de selección de direcciones IP del servicio de backend solo a IPv6, pero el tipo de pila de IP de los backends siempre es IPv4 e IPv6 (pila doble).
Solo los backends de grupos de instancias de VM y los grupos de extremos de red (NEG) zonales con extremos
GCE_VM_IP_PORT
admiten IPv4 y, también, IPv6 (pila doble).
Antes de comenzar
Ya debes haber configurado un balanceador de cargas de red del proxy externo global del proxy SSL o TCP con una pila solo de IPv4 con un grupo de instancias o backends de grupo de extremos de red (NEG) zonal.
Para obtener más información sobre cómo configurar los balanceadores de cargas de red del proxy externo global, consulta la siguiente documentación:
- Configura un balanceador de cargas de red del proxy externo global (proxy SSL) con backends de grupos de instancias de VM
- Configura un balanceador de cargas de red(proxy TCP) del proxy externo global con una instancia de VM backends de grupos
Identifica los recursos que deseas convertir
Toma nota de los nombres de los recursos con los que está asociado tu balanceador de cargas. Tendrás que proporcionar estos nombres más adelante.
Para enumerar todas las subredes, usa el comando
gcloud compute networks subnets list
:gcloud compute networks subnets list
Ten en cuenta el nombre de la subred con la pila solo IPv4 para convertirla en pila doble. Más adelante, se denominará
SUBNET
. Más adelante, la red de VPC se denominaráNETWORK
.Para enumerar todos los servicios de backend, usa el comando
gcloud beta compute backend-services list
:gcloud beta compute backend-services list
Toma nota del nombre del servicio de backend para convertir la pila doble. Más adelante, se denominará
BACKEND_SERVICE
.Si ya tienes un balanceador de cargas, para ver el tipo de pila de IP de tus backends, 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)"
Para enumerar todas las instancias de VM y las plantillas de instancias, usa el comando
gcloud compute instances list
y el comandogcloud compute instance-templates list
:gcloud compute instances list
gcloud compute instance-templates list
Anota los nombres de las instancias y las plantillas de instancias que se convertirán en pila doble. Más adelante, se denominará como
VM_INSTANCE
yINSTANCE_TEMPLATES
.Para enumerar todos los NEG zonales, usa el comando
gcloud compute network-endpoint-groups list
:gcloud compute network-endpoint-groups list
Ten en cuenta el nombre de los grupos de extremos de red que se convertirán en pila doble. Más adelante, se denominará
ZONAL_NEG
.Para obtener una lista de todos los proxies SSL de destino, usa el comando
gcloud compute target-ssl-proxies list
:gcloud compute target-ssl-proxies list
Toma nota del nombre del proxy de destino asociado con tu balanceador de cargas. Más adelante, se denominará
TARGET_PROXY
.Para obtener una lista de todos los proxies TCP de destino, usa el comando
gcloud compute target-tcp-proxies list
:gcloud compute target-tcp-proxies list
Toma nota del nombre del proxy de destino asociado con tu balanceador de cargas. Más adelante, se denominará
TARGET_PROXY
.
Convierte backends de pila única a backends de pila doble
En esta sección, se muestra cómo convertir tus recursos y backends mediante el uso de direcciones IPv4 solo (pila única) a direcciones IPv4 e IPv6 (pila doble).
Actualiza la subred
Las subredes de pila doble solo son compatibles con las redes de VPC de modo personalizado. Las subredes de pila doble no son compatibles con redes de VPC de modo automático ni con redes heredadas. Aunque las redes en modo automático pueden ser útiles para la exploración temprana, las VPC en modo personalizado son más adecuadas para la mayoría de los entornos de producción. Te recomendamos que uses las VPC en modo personalizado.
Para actualizar la VPC a la configuración de pila doble, sigue estos pasos:
Si usas una red de VPC de modo automático, primero debes convertir la red de VPC de modo automático al modo personalizado.
Para habilitar IPv6, consulta Cambia el tipo de pila de una subred a pila doble.
Opcional: Si deseas configurar rangos de direcciones IPv6 internos en subredes de esta red, completa estos pasos:
- En Rango de IPv6 interno de ULA de la red de VPC, selecciona Habilitado.
En Asignar rango de IPv6 interno, selecciona Automáticamente o Manualmente.
Si seleccionas Manualmente, ingresa un rango
/48
que pertenezca al rangofd20::/20
. Si el rango está en uso, se te solicitará que proporciones un rango diferente.
Actualiza la instancia o las plantillas de VM
Puedes configurar direcciones IPv6 en una instancia de VM si la subred a la que está conectada la VM tiene configurado un rango IPv6. Solo los siguientes backends pueden admitir direcciones IPv6:
- Backends de grupos de instancias: Uno o más backends de grupos de instancias administrados, no administrados o una combinación de ambos.
- NEG zonales: Uno o más NEG zonales de tipo
GCE_VM_IP_PORT
Actualizar instancias de VM
No puedes editar instancias de VM que forman parte de un servicio administrado grupo de instancias. Para actualizar las instancias de VM a la pila doble, sigue estos pasos:
- Borrar instancias específicas de un grupo
- Crea una VM de doble pila
- Crea instancias con nombres específicos en MIG
Actualizar plantillas de instancias de VM
No puedes actualizar una plantilla de instancias existente. Si necesitas hacer cambios, puedes crear otra plantilla con propiedades similares. Para actualizar las plantillas de instancias de VM a pila doble, sigue estos pasos:
Console
En la consola de Google Cloud, ve a la página Plantillas de instancia.
- Haz clic en la plantilla de instancias que deseas copiar y actualizar.
- Haz clic en Crear una similar.
- Expande la sección Opciones avanzadas.
- En Etiquetas de red, ingresa
allow-health-check-ipv6
. - En la sección Interfaces de red, haz clic en Agregar una interfaz de red.
- En la lista Red, selecciona la red de VPC de modo personalizado.
- En la lista Subred, selecciona
SUBNET
. - En Tipo de pila IP, selecciona IPv4 e IPv6 (pila doble).
- Haz clic en Crear.
Inicia una actualización progresiva básica en el grupo de instancias administrada
MIG
asociado con el balanceador de cargas.
Actualiza el NEG zonal
Los extremos de NEG zonales no se pueden editar. Debes borrar los extremos IPv4 y crear un nuevo extremo de pila doble con direcciones IPv4 e IPv6.
Para configurar un NEG zonal (con extremos de tipo GCE_VM_IP_PORT
) en la región REGION_A
, primero crea las VM en la zona GCP_NEG_ZONE
. Luego, agrega los extremos de red de VM al NEG zonal.
Crea las VM
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haga clic en Crear instancia.
Configura el campo Nombre como
vm-a1
.En Región, elige
REGION_A
y elige cualquier valor para el campo Zona. En este procedimiento, se hace referencia a esta zona comoGCP_NEG_ZONE
.En la sección Disco de arranque, asegúrate de que el sistema operativo Debian y la versión 10 (buster) estén seleccionados como opciones de disco de arranque. Haz clic en Elegir para cambiar la imagen si es necesario.
Expande la sección Opciones avanzadas y, a continuación, realiza los siguientes cambios:
- Expande la sección Herramientas de redes.
- En el campo Etiquetas de red, ingresa
allow-health-check
. - En la sección Interfaces de red, realiza los siguientes cambios:
- Red:
NETWORK
- Subred:
SUBNET
- Tipo de pila IP: IPv4 e IPv6 (pila doble)
- Red:
- Haz clic en Listo.
Haz clic en Administración. En el campo 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
Haz clic en Crear.
Repite los siguientes pasos para crear una segunda VM mediante la siguiente combinación de nombre y zona:
- Nombre:
vm-a2
, zona:GCP_NEG_ZONE
- Nombre:
gcloud
Para crear las VMs, ejecuta el siguiente comando dos veces, con estas combinaciones para el nombre de la VM y su zona. El contenido de la secuencia de comandos es idéntico para ambas VMs.
VM_NAME
devm-a1
y cualquier zonaGCP_NEG_ZONE
que elijasVM_NAME
devm-a2
y la misma zona deGCP_NEG_ZONE
gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --stack-type=IPV4_IPV6 \ --image-family=debian-10 \ --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'
Agrega extremos al NEG zonal.
Console
Agrega extremos al NEG zonal.
En la consola de Google Cloud, ve a la página Grupos de extremos de red.
En la lista Nombre, haz clic en el nombre del grupo de extremos de red (
ZONAL_NEG
). Verás la página Detalles del grupo de extremos de red.En la sección Extremos de red de este grupo, selecciona el extremo de NEG que se creó antes. Haz clic en Quitar extremo.
En la sección Extremos de red de este grupo, haz clic en Agregar extremo de red.
Selecciona la instancia de VM.
En la sección Interfaz de red, se muestra el nombre, la zona y la subred de la VM.
En el campo Dirección IPv4, ingresa la dirección IPv4 del nuevo extremo de la red.
En el campo Dirección IPv6, ingresa la dirección IPv6 del extremo de red nuevo.
Selecciona el tipo de puerto.
- Si seleccionas Predeterminado, el extremo usará el puerto predeterminado
80
para todos los extremos del grupo de extremos de red. Esto es suficiente para nuestro ejemplo, ya que el servidor Apache entrega solicitudes en el puerto80
. - Si seleccionas Personalizado, deberás ingresar el número de puerto para el extremo que se usará.
- Si seleccionas Predeterminado, el extremo usará el puerto predeterminado
Para agregar más extremos, haz clic en Agregar extremo de red y repite los pasos anteriores.
Después de agregar todos los extremos, haz clic en Crear.
gcloud
Agrega extremos (extremos
GCE_VM_IP_PORT
) aZONAL_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'
Reemplaza lo siguiente:
IPv4_ADDRESS
: Dirección IPv4 del extremo de red. La IPv4 debe pertenecer a una VM en Compute Engine (ya sea la IP principal o como parte de un rango de IP con alias).
Si no se especifica la dirección IP, se usa la dirección IP principal de la instancia de VM en la red a la que pertenece el grupo de extremos de red.
IPv6_ADDRESS
es la dirección IPv6 del extremo de red. La dirección IPv6 debe pertenecer a una instancia de VM en la red a la que pertenece el extremo pertenece al grupo (dirección IPv6 externa).
Crea una regla de firewall de verificación de estado IPv6
Asegúrate de tener una regla de entrada aplicable a las instancias tiene balanceo de cargas y permite el tráfico desde los sistemas de verificación de estado de Google Cloud (2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
). Este ejemplo usa la etiqueta de destino allow-health-check-ipv6
para identificar las instancias de VM la cual se aplica.
Sin esta regla de firewall, la regla predeterminada de denegación de entrada bloquea el tráfico IPv6 entrante a las instancias de backend.
Console
En la consola de Google Cloud, ve a la página Políticas de firewall.
Para permitir el tráfico de subred de IPv6, vuelve a hacer clic en Crear regla de firewall y, luego, ingresa la siguiente información:
- Nombre:
fw-allow-lb-access-ipv6
- Red:
NETWORK
- Prioridad:
1000
- Dirección del tráfico: Entrada
- Destinos: Etiquetas de destino especificadas
- Etiquetas de destino:
allow-health-check-ipv6
- Filtro de fuente: Rangos de IPv6
- Rangos de IPv6 de origen:
2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
- Protocols y puertos: Permitirlos todos
- Nombre:
Haz clic en Crear.
gcloud
Crea la regla de firewall
fw-allow-lb-access-ipv6
para permitir la comunicación con la subred: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
Actualiza el servicio de backend y crea una regla de reenvío para IPv6
En esta sección, se proporcionan instrucciones para actualizar el servicio de backend BACKEND_SERVICE
con la
política de selección de direcciones IP como Prefer IPv6
y agregar un backend de NEG zonal.
Si tienes un grupo de instancias asociado con tu servicio de backend, consulta Actualiza el servicio de backend de un grupo de instancias.
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el nombre del balanceador de cargas.
Haz clic en Editar.
Configura el servicio de backend para IPv6
- Haz clic en Configuración de backend.
- En Tipo de backend, selecciona Grupo de extremos de red zonal.
- En la lista Política de selección de direcciones IP, selecciona Preferir IPv6.
- En el campo Protocolo, haz lo siguiente:
- En el proxy TCP, selecciona TCP.
- En proxy SSL, selecciona SSL.
- En la sección Backends, haz clic en Agregar un backend.
- En el panel Backend nuevo, haz lo siguiente:
- En la lista grupo de extremos de red, selecciona
ZONAL_NEG
- En el campo Cantidad máxima de conexiones, ingresa 10.
- En la lista grupo de extremos de red, selecciona
- Haz clic en Listo.
- En la lista Verificación de estado, selecciona una verificación de estado HTTP.
Configura la regla de reenvío de IPv6
- Haz clic en Configuración de frontend.
- Haz clic en Agregar IP y puerto de frontend.
- En el campo Nombre, ingresa un nombre para la regla de reenvío.
- En el campo Protocolo, haz lo siguiente:
- En el proxy TCP, selecciona TCP.
- En proxy SSL, selecciona SSL.
- Establece la Versión de IP como
IPv6
. - Para el proxy SSL, selecciona un certificado en la lista Certificados.
- Haz clic en Listo.
- Haz clic en Update.
gcloud
Crea el servicio de backend para el tráfico HTTP:
gcloud beta compute backend-services update BACKEND_SERVICE \ --protocol=[SSL|TCP] \ --port-name=http \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --global
Agrega NEG zonales como backend al servicio de backend:
gcloud beta compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=ZONAL_NEG \ --global
Reserva una dirección IPv6 externa que tus clientes utilicen para comunicarse con tu balanceador de cargas HTTP(S) global externo.
gcloud compute addresses create lb-ipv6-1 \ --ip-version=IPV6 \ --network-tier=PREMIUM \ --global
En el caso del proxy SSL, crea una regla de reenvío para el servicio de backend.
gcloud beta compute target-ssl-proxies create TARGET_PROXY \ --backend-service=BACKEND_SERVICE \ --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \ --ssl-policy=my-ssl-policy \ --proxy-header=NONE
gcloud beta compute forwarding-rules create \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=lb-ipv6-1 \ --global \ --target-ssl-proxy=TARGET_PROXY \ --ports=443
En el caso del proxy TCP, crea una regla de reenvío para el servicio de backend.
gcloud beta compute target-tcp-proxies create TARGET_PROXY \ --backend-service=BACKEND_SERVICE \ --proxy-header=NONE
gcloud beta compute forwarding-rules create \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=lb-ipv6-1 \ --global \ --target-tcp-proxy=TARGET_PROXY \ --ports=443
Actualiza el servicio de backend para un grupo de instancias
Si tienes un grupo de instancias asociado con tu servicio de backend, debes actualizar este servicio de la siguiente manera:
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el nombre del balanceador de cargas.
Haz clic en Editar.
Configura el servicio de backend
- Haz clic en Configuración de backend.
- En Tipo de backend, selecciona Grupo de instancias.
- En la lista Política de selección de dirección IP, selecciona Preferir IPv6.
- En el campo Protocolo, haz lo siguiente:
- En el proxy TCP, selecciona TCP.
- En proxy SSL, selecciona SSL.
- Si tienes actualizaste la instancia o las plantillas de VM para pila doble, la sección Backends, no necesitan actualizarse de nuevo.
- Selecciona una verificación de estado.
- Haz clic en Update.
gcloud
Crea el servicio de backend para el tráfico HTTP:
gcloud beta compute backend-services update BACKEND_SERVICE \ --protocol=[SSL|TCP] \ --port-name=http \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --global
Agrega tu grupo de instancias como backend al servicio de backend. Si tienes actualizaste la instancia o las plantillas de VM para pila doble, puedes omitir este paso.
gcloud beta compute backend-services add-backend BACKEND_SERVICE \ --instance-group=INSTANCE_GROUP \ --global
Configura la política de selección de direcciones IP
Este paso es opcional. Después de convertir los recursos y backends en pila doble, puedes usar la política de selección de direcciones IP para especificar el tipo de tráfico que se envía desde Google Front End (GFE) a tus backends.
Reemplaza IP_ADDRESS_SELECTION_POLICY
con cualquiera 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, sin importar el tráfico del cliente al GFE. Solo IPv4 de estado se usan para comprobar el estado de los backends. |
Preferir IPv6 | Prioriza la conexión IPv6 del backend sobre el Conexión IPv4 (siempre que haya un backend en buen estado con direcciones IPv6). Las verificaciones de estado supervisan de forma periódica las conexiones IPv6 e IPv4 de los backends. GFE primero intenta establecer la conexión IPv6. Si la conexión IPv6 está interrumpida o es lenta, GFE usa visitantes felices para recurrir y conectarse a IPv4. Incluso si una de las conexiones IPv6 o IPv4 está en mal estado, el backend se considera en buen estado, y GFE puede probar ambas conexiones, y los visitantes felices, en última instancia, seleccionan cuál usar. |
Solo IPv6 | Solo envía tráfico IPv6 a los backends del servicio de backend, sin importar el tráfico del cliente al proxy. Solo IPv6 de estado se usan para comprobar el estado de los backends. No hay validación para verificar si el tipo de tráfico de backend coincide con la política de selección de direcciones IP. Por ejemplo, si tienes backends de IPv4 y seleccionas |
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el nombre del balanceador de cargas.
Haz clic en Editar.
Haz clic en Configuración de backend.
En el campo Servicio de backend, selecciona
BACKEND_SERVICE
.El Tipo de backend debe ser Grupo de extremos de red zonal o Grupo de instancias.
En la lista Política de selección de direcciones IP, selecciona
IP_ADDRESS_SELECTION_POLICY
.Haz clic en Listo.
gcloud
Actualiza el servicio de backend:
gcloud beta compute backend-services update BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \ --global
Prueba el balanceador de cargas
Debes validar que todos los recursos necesarios se actualicen a la pila doble. Después de actualizar todos los recursos, el tráfico debe fluir de manera automática a los backends. Puedes verificar los registros y comprobar que la conversión esté completa.
Prueba el balanceador de cargas para confirmar que la conversión se realice de forma correcta y que el tráfico entrante llegue a los backends como se espera.
Busca las direcciones IP externas
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el nombre del balanceador de cargas.
En la sección Frontend, se muestran dos direcciones IP del balanceador de cargas. En este procedimiento, la dirección IPv4 se denomina
IP_ADDRESS_IPV4
y la dirección IPv6 se denominaIP_ADDRESS_IPV6
.En la sección Backends, cuando la política de selección de direcciones IP es
Prefer IPv6
, se muestran dos estados de verificación de estado para los backends.
Prueba el tráfico enviado a las instancias
En este ejemplo, las solicitudes del comando curl
se distribuyen de forma aleatoria a los backends.
Repite el siguiente comando un par de veces hasta que veas que todas las VMs de backend responden.
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 se verá de la siguiente manera:curl -m1 [fd20:1db0:b882:802:0:46:0:0]:80
Verifica los registros
Cada entrada de registro captura la dirección IPv4 y la dirección IPv6 de destino del backend. Debido a que admitimos la pila doble, es importante observar la dirección IP utilizada por el backend.
Para verificar que el tráfico se dirija a IPv6 o conmuta por error a IPv4, visualiza los registros.
Los registros contienen la dirección backend_ip
asociada con el backend. Si examinas los registros y comparas la dirección IPv4 o IPv6 de destino de backend_ip
, puedes confirmar qué dirección IP se usa.