Soluciona problemas de balanceadores de cargas de red de transferencia externos

En esta guía, se describe cómo solucionar problemas de configuración de un balanceador de cargas de red de transferencia externo de Google Cloud. Antes de analizar los problemas, familiarízate con las siguientes páginas:

Soluciona los problemas habituales con Network Analyzer

Network Analyzer supervisa de forma automática la configuración de tu red de VPC y detecta configuraciones subóptimas y incorrectas. Identifica fallas de red, proporciona información sobre la causa raíz y sugiere posibles soluciones. Para obtener información sobre las diferentes situaciones de configuración incorrecta que se detectan de forma automática con Network Analyzer, consulta Estadísticas del balanceador de cargas en la documentación de Network Analyzer.

Network Analyzer está disponible en la consola de Google Cloud como parte de Network Intelligence Center.

Ir a Network Analyzer

Soluciona problemas de configuración

Los backends tienen modos de balanceo incompatibles

Cuando creas un balanceador de cargas, es posible que veas el siguiente error:

Validation failed for instance group INSTANCE_GROUP:

backend services 1 and 2 point to the same instance group
but the backends have incompatible balancing_mode. Values should be the same.

Esto sucede cuando intentas usar el mismo backend en dos balanceadores de cargas diferentes y los backends no tienen modos de balanceo compatibles.

Para obtener más información, consulta lo siguiente:

Soluciona problemas generales de conectividad

Si no te puedes conectar al balanceador de cargas de red de transferencia externo, verifica los siguientes problemas habituales.

  • Verifica las reglas de firewall.

    • Asegúrate de que las reglas de firewall de entrada permitida estén configuradas para permitir las verificaciones de estado en las VM de backend.
    • Asegúrate de que las reglas de firewall de entrada permitida habiliten el tráfico de los clientes a las VM de backend.
    • Asegúrate de que existan reglas de firewall relevantes para permitir que el tráfico llegue a las VM de backend en los puertos que usa el balanceador de cargas.
    • Si usas etiquetas de destino para las reglas de firewall, asegúrate de que las VMs de backend del balanceador de cargas estén etiquetadas de forma correcta.

    Para obtener información sobre cómo configurar las reglas de firewall que requiere el balanceador de cargas de red de transferencia externno, consulta Configura las reglas de firewall.

  • Verifica que el agente invitado de Google se ejecute en la VM de backend. Si puedes conectarte a una VM de backend en buen estado, pero no puedes conectarte al balanceador de cargas, es posible que el agente invitado de Google (antes llamado entorno invitado de Windows o entorno invitado de Linux) en la VM no se esté ejecutando o no se pueda comunicar con el servidor de metadatos (metadata.google.internal, 169.254.169.254).

    Comprueba lo siguiente:

    • Asegúrate de que el agente invitado de Google esté instalado y en ejecución en la VM de backend.
    • Asegúrate de que las reglas de firewall dentro del sistema operativo invitado de la VM de backend (iptables o firewall de Windows) no bloqueen el acceso al servidor de metadatos.
  • Verifica que las VM de backend acepten paquetes enviados al balanceador de cargas. Cada VM de backend debe configurarse para aceptar paquetes enviados al balanceador de cargas. Es decir, el destino de los paquetes entregados a las VM de backend es la dirección IP del balanceador de cargas. En la mayoría de los casos, esto se hace con una ruta local.

    En las VM creadas a partir de imágenes de Google Cloud, el agente invitado instala la ruta local para la dirección IP del balanceador de cargas. Las instancias de Google Kubernetes Engine basadas en Container-Optimized OS implementan esto mediante iptables en su lugar.

    En una VM de backend de Linux, puedes verificar la presencia de la ruta local mediante la ejecución del siguiente comando. Reemplaza LOAD_BALANCER_IP por la dirección IP del balanceador de cargas:

    sudo ip route list table local | grep LOAD_BALANCER_IP
    
  • Verifica la dirección IP del servicio y la vinculación del puerto en las VMs de backend. Los paquetes enviados a un balanceador de cargas de red de transferencia externo llegan a las VMs de backend con la dirección IP de destino del balanceador de cargas. Este tipo de balanceador de cargas no es un proxy, y este es el comportamiento esperado.

    Para ver los servicios que escuchan en un puerto, ejecuta el siguiente comando:

    netstat -nl | grep ':PORT'
    

    El software que se ejecuta en la VM de backend debe realizar las siguientes acciones:

    • Escuchar (vinculado a) la dirección IP del balanceador de cargas o cualquier dirección IP (0.0.0.0 o ::)
    • Escuchar (vinculado a) un puerto incluido en la regla de reenvío del balanceador de cargas

    Para probar esto, conéctate a una VM de backend con SSH o RDP. Luego, realiza las siguientes pruebas con curl, telnet o una herramienta similar:

    • Para intentar acceder al servicio, comunícate con este mediante la dirección IP interna de la VM de backend, 127.0.0.1 o localhost.
    • Para intentar acceder al servicio, comunícate con este mediante la dirección IP de la regla de reenvío del balanceador de cargas.
  • Verifica que el tráfico de verificación de estado pueda llegar a las VM de backend. Para verificar que el tráfico de verificación de estado llegue a tus VM de backend, habilita el registro de verificación de estado y busca entradas de registro exitosas.

Soluciona problemas de VPC compartida

Si usas la VPC compartida y no puedes crear un nuevo balanceador de cargas de red de transferencia externo en una subred particular, la causa podría ser una política de la organización. En la política de la organización, agrega la subred a la lista de subredes permitidas o comunícate con el administrador de tu organización. Para obtener más información, consulta la restricción constraints/compute.restrictSharedVpcSubnetworks.

Soluciona problemas de conmutación por error

Si configuraste la conmutación por error para un balanceador de cargas de red de transferencia externo, sigue estos pasos a fin de verificar la configuración:

  • Asegúrate de haber designado al menos un backend de conmutación por error.
  • Comprueba la configuración de la política de conmutación por error.
  • Asegúrate de comprender cómo funciona la membresía en el grupo activo y cuándo Google Cloud realiza la conmutación por error y por recuperación. Para inspeccionar la configuración del balanceador de cargas, haz lo siguiente:

    • Usa la consola de Google Cloud para comprobar la cantidad de VM de backend en buen estado en cada grupo de instancias de backend. La consola de Google Cloud también te muestra qué VM están en el grupo activo.

    • Asegúrate de que el índice de conmutación por error del balanceador de cargas esté configurado de forma correcta. Por ejemplo, si tienes diez VM principales y un índice de conmutación por error establecido en 0.2, Google Cloud realiza una conmutación por error cuando hay menos de dos (10 × 0.2 = 2) VM principales en buen estado. Un índice de conmutación por error de 0.0 tiene un significado especial: Google Cloud realiza una conmutación por error cuando ninguna VM principal está en buen estado.

Otros problemas que pueden ocurrir son los siguientes:

  • Síntoma: el grupo activo va y viene entre los backends principales y los de conmutación (oscilación).

    El uso de grupos de instancias administrados con ajuste de escala automático y conmutación por error puede hacer que el grupo activo realice conmutaciones por error y por recuperación de forma repetida entre los backends principales y los de conmutación por error. Google Cloud no te impide configurar la conmutación por error con grupos de instancias administrados, ya que la implementación podría beneficiarse con esta configuración.

  • Inhabilita el vaciado de conexiones no funciona.

    La inhabilitación del vaciado de conexiones solo funciona si el servicio de backend está configurado con el protocolo TCP.

    El siguiente mensaje de error aparece si creas un servicio de backend con UDP mientras el vaciado de conexiones está inhabilitado:

    gcloud compute backend-services create my-failover-bs
      --load-balancing-scheme external \
      --health-checks-region us-central1 \
      --health-checks my-tcp-health-check \
      --region us-central1 \
      --no-connection-drain-on-failover \
      --drop-traffic-if-unhealthy \
      --failover-ratio 0.5 \
      --protocol UDP
    ERROR: (gcloud.compute.backend-services.create) Invalid value for
    [--protocol]: can only specify --connection-drain-on-failover if the protocol is
    TCP.
    
  • Las conexiones existentes se finalizan durante la conmutación por error o por recuperación.

    Edita la política de conmutación por error de tu servicio de backend. Asegúrate de que el vaciado de conexiones en la conmutación por error esté habilitado.

Soluciona problemas de registro

Si configuras el registro para un balanceador de cargas de red de transferencia externo, pueden ocurrir los siguientes problemas:

  • Es posible que falten mediciones de RTT, como los valores de bytes, en algunos de los registros si no se muestrean suficientes paquetes para capturar el RTT. Es más probable que esto suceda con conexiones de bajo volumen.
  • Los valores de RTT solo están disponibles para los flujos TCP.
  • Algunos paquetes se envían sin carga útil. Si se realizan muestras sobre paquetes de solo encabezado, el valor en bytes es 0.