Solucionar problemas de balanceadores de carga de red de paso a través externos

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

Solucionar problemas habituales con Analizador de red

Network Analyzer monitoriza automáticamente la configuración de tu red de VPC y detecta tanto las configuraciones no óptimas como las erróneas. Identifica los errores de red, proporciona información sobre la causa principal y sugiere posibles soluciones. Para obtener información sobre los diferentes casos de configuración incorrecta que detecta automáticamente Network Analyzer, consulte Estadísticas de balanceadores de carga en la documentación de Network Analyzer.

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

Ir a Network Analyzer

Solucionar problemas de configuración

Los back-ends tienen modos de balanceo incompatibles

Al crear un balanceador de carga, puede que aparezca 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 ocurre cuando intentas usar el mismo backend en dos balanceadores de carga diferentes y los backends no tienen modos de balanceo compatibles.

Para obtener más información, consulta las siguientes secciones:

Solucionar problemas generales de conectividad

Si no puedes conectarte a tu balanceador de carga de red de paso a través externo, comprueba los siguientes problemas habituales:

  • Verifica las reglas de cortafuegos.

    • Asegúrate de que se hayan definido reglas de cortafuegos de entrada para permitir que se realicen comprobaciones del estado en las VMs de backend.
    • Asegúrate de que las reglas de cortafuegos de entrada permiten que los clientes envíen tráfico a las VMs de backend.
    • Asegúrate de que existen reglas de cortafuegos relevantes para permitir que el tráfico llegue a las VMs de backend en los puertos que usa el balanceador de carga.
    • Si usas etiquetas de destino para las reglas de firewall, asegúrate de que las VMs backend del balanceador de carga estén etiquetadas correctamente.

    Para saber cómo configurar las reglas de cortafuegos que requiere tu balanceador de carga de red pasante externo, consulta el artículo Configurar reglas de cortafuegos.

  • Verifica que el agente invitado de Google se esté ejecutando en la VM backend. Si puedes conectarte a una VM de backend correcta, pero no al balanceador de carga, puede que el agente invitado de Google (antes, el entorno invitado de Windows o el entorno invitado de Linux) de la VM no se esté ejecutando o no pueda comunicarse 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 del cortafuegos 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 VMs de backend aceptan los paquetes enviados al balanceador de carga. Cada VM de backend debe configurarse para aceptar los paquetes enviados al balanceador de carga. Es decir, el destino de los paquetes enviados a las VMs backend es la dirección IP del balanceador de carga. En la mayoría de los casos, se implementa con una ruta local.

    En las VMs creadas a partir de Google Cloud imágenes, el agente invitado instala la ruta local de la dirección IP del balanceador de carga. Las instancias de Google Kubernetes Engine basadas en Container-Optimized OS implementan esta función mediante iptables.

    En una VM backend de Linux, puedes verificar la presencia de la ruta local ejecutando el siguiente comando. Sustituye LOAD_BALANCER_IP por la dirección IP del balanceador de carga:

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

    Para ver los servicios que están escuchando en un puerto, ejecuta el siguiente comando:

    netstat -nl | grep ':PORT'
    

    El software que se ejecuta en la VM de backend debe hacer lo siguiente:

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

    Para probarlo, conéctate a una VM de backend mediante SSH o RDP. A continuación, realiza las siguientes pruebas con curl, telnet o una herramienta similar:

    • Intenta acceder al servicio poniéndote en contacto con él mediante la dirección IP interna de la propia VM de backend, 127.0.0.1, o localhost.
    • Intenta acceder al servicio poniéndote en contacto con él mediante la dirección IP de la regla de reenvío del balanceador de carga.
  • Verifica que el tráfico de comprobación del estado pueda llegar a las VMs de backend. Para verificar que el tráfico de comprobación de estado llega a tus VMs de backend, habilita el registro de comprobaciones de estado y busca entradas de registro correctas.

Solucionar problemas de VPC compartida

Si utilizas una VPC compartida y no puedes crear un balanceador de carga de red pasante externo en una subred concreta, puede que el problema se deba a una política de organización. En la política de la organización, añade la subred a la lista de subredes permitidas o ponte en contacto con el administrador de tu organización. Para obtener más información, consulta la restricción constraints/compute.restrictSharedVpcSubnetworks.

Solucionar problemas de conmutación por error

Si has configurado la conmutación por error de un balanceador de carga de red de paso a través externo, sigue estos pasos para verificar la configuración:

  • Asegúrate de haber designado al menos un backend de conmutación por error.
  • Verifica la configuración de tu política de conmutación por error.
  • Asegúrate de que entiendes cómo funciona la pertenencia al grupo activo y cuándo Google Cloud realiza la conmutación por error y la recuperación tras un fallo. Para inspeccionar la configuración del balanceador de carga, haz lo siguiente:

    • Usa la Google Cloud consola para comprobar el número de VMs de backend en buen estado de cada grupo de instancias de backend. La Google Cloud consola también muestra qué máquinas virtuales están en el grupo activo.

    • Asegúrate de que la proporción de conmutación por error del balanceador de carga esté configurada correctamente. Por ejemplo, si tienes diez VMs principales y el índice de conmutación por error es 0.2, significa que Google Cloud realiza una conmutación por error cuando menos de dos (10 × 0.2 = 2) VMs principales están en buen estado. El índice de conmutación por error 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 surgir son los siguientes:

  • El grupo activo cambia constantemente entre los back-ends principal y de failover.

    Si usas grupos de instancias gestionados con autoescalado y conmutación por error, es posible que el grupo activo conmute por error y vuelva a conmutar por error repetidamente entre los back-ends principal y de conmutación por error. Google Cloud no te impide configurar la conmutación por error con grupos de instancias gestionados, ya que tu implementación puede beneficiarse de esta configuración.

  • No se puede inhabilitar la purga de conexión.

    La inhabilitación de la purga de conexión solo funciona si el servicio de backend se ha configurado con el protocolo TCP.

    Aparecerá el siguiente mensaje de error si creas un servicio backend con UDP mientras el drenaje 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 terminan durante la conmutación por error o la restauración tras error.

    Edita la política de conmutación por error de tu servicio de backend. Comprueba que la desviación de conexiones al producirse una conmutación por error esté habilitada.

Solucionar problemas de registro

Si configura el registro de un balanceador de carga de red de paso a través externo, pueden producirse 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 ocurra en 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 muestrean paquetes que solo contienen encabezados, el valor de bytes es 0.