Descripción general de las comprobaciones del estado (original) (raw)

Google Cloud ofrece comprobaciones de estado configurables para los backends de Google Cloud balanceadores de carga, los backends de Cloud Service Mesh y la autorreparación basada en aplicaciones para grupos de instancias gestionados. En este documento se explican los conceptos clave de las comprobaciones de estado.

A menos que se indique lo contrario,las Google Cloud comprobaciones del estado se implementan mediante tareas de software específicas que se conectan a los backends según los parámetros especificados en un recurso de comprobación del estado. Cada intento de conexión se denomina sondeo. Google Cloud registra si cada sondeo se ha realizado correctamente o no.

En función de un número configurable de sondeos correctos o fallidos consecutivos, se calcula un estado de salud general para cada backend. Los backends que responden correctamente el número de veces configurado se consideran en buen estado. Los back-ends que no responden correctamente un número de veces configurable por separado se consideran no aptos.

El estado general de cada backend determina si puede recibir nuevas solicitudes o conexiones. Puede configurar los criterios que definen una prueba correcta. Este tema se trata en detalle en la sección Cómo funcionan las comprobaciones de estado.

Las comprobaciones de estado implementadas por tareas de software específicas usan rutas especiales que no están definidas en tu red de nube privada virtual (VPC). Para obtener más información, consulta Rutas de las comprobaciones del estado.

Categorías, protocolos y puertos de comprobación del estado

Las comprobaciones de estado tienen una categoría y un protocolo. Las dos categorías son comprobaciones del estado y comprobaciones del estado antiguas, y sus protocolos admitidos son los siguientes:

El protocolo y el puerto determinan cómo se realizan las sondas de comprobación del estado. Por ejemplo, una comprobación de estado puede usar el protocolo HTTP en el puerto TCP 80 o el protocolo TCP para un puerto con nombre de un grupo de instancias.

No puedes convertir una comprobación del estado antigua en una comprobación del estado ni viceversa.

Seleccionar una comprobación del estado

Las comprobaciones del estado deben ser compatibles con el tipo de balanceador de carga (o Cloud Service Mesh) y los tipos de backend. A la hora de seleccionar una comprobación de estado, debes tener en cuenta los siguientes factores:

En la siguiente sección se describen las selecciones válidas de comprobación de estado para cada tipo de balanceador de carga y backend.

Guía del balanceador de carga

En esta tabla se muestran la categoría y el ámbito de comprobación de estado admitidos para cada tipo de balanceador de carga.

Balanceador de carga Categoría y ámbito de la comprobación del estado
Balanceador de carga de aplicación externo global Balanceador de carga de aplicación clásico * Balanceador de carga de red con proxy externo global Balanceador de carga de red con proxy clásico Balanceador de carga de aplicación interno entre regiones Balanceador de carga de red con proxy interno entre regiones Comprobación del estado (global)
Balanceador de carga de aplicación externo regional Balanceador de carga de aplicación interno regional Balanceador de carga de red con proxy interno regional Balanceador de carga de red con proxy externo regional Comprobación del estado (regional)
Balanceador de carga de red de paso a través externo Balanceador de carga basado en servicios de backend: comprobación del estado (regional) Balanceador de carga basado en grupos de destino: comprobación del estado antigua (global con el protocolo HTTP)
Balanceador de carga de red de paso a través interno Comprobación del estado (global oregional)

*En el caso de los balanceadores de carga de aplicación externos, no se recomiendan las comprobaciones de estado antiguas, pero a veces se admiten, en función del modo del balanceador de carga.

Modo del balanceador de carga Comprobaciones del estado antiguas admitidas
Balanceador de carga de aplicación externo global Balanceador de carga de aplicación clásico Sí, si se cumplen las dos condiciones siguientes: Los backends son grupos de instancias. Las VMs de backend sirven tráfico que usa el protocolo HTTP o HTTPS.
Balanceador de carga de aplicación externo regional No

Notas de uso adicionales

Comprobación del estado con Cloud Service Mesh

Ten en cuenta las siguientes diferencias de comportamiento cuando uses comprobaciones de estado con Cloud Service Mesh.

Cómo funcionan las comprobaciones del estado

En las siguientes secciones se describe cómo funcionan las comprobaciones de estado.

Comprobaciones

Cuando creas una comprobación de estado o una comprobación de estado antigua, especificas las siguientes marcas o aceptas sus valores predeterminados. Cada comprobación del estado o comprobación del estado antigua que crees se implementa mediante varias sondas. Estas marcas controlan la frecuencia con la que _cada_prueba evalúa las instancias de los grupos de instancias o los endpoints de los NEGs de zona.

Los ajustes de una comprobación de estado no se pueden configurar por backend. Las comprobaciones de estado se asocian a un servicio de backend completo. En el caso de un balanceador de carga de red de paso a través externo basado en grupos de destino, se asocia una comprobación del estado HTTP antigua a todo el grupo de destino. Por lo tanto, los parámetros de la sonda son los mismos para todos los backends a los que hace referencia un servicio de backend o un grupo de destino determinado.

Marca de configuración Finalidad Valor predeterminado
Intervalo de comprobacióncheck-interval El intervalo de comprobación es el tiempo que transcurre desde el inicio de una sonda_emitida por un comprobador_ hasta el inicio de la siguiente sonda_emitida por el mismo comprobador_. Las unidades son segundos. 5s (5 segundos)
Tiempo de espera agotadotimeout El tiempo de espera es el tiempo que Google Cloud espera una respuesta a una petición de sondeo. Su valor debe ser inferior o igual al intervalo de comprobación. Las unidades son segundos. 5s (5 segundos)

Intervalos de IP y reglas de cortafuegos de sondeos

Para que las comprobaciones de estado funcionen, debes crear reglas de cortafuegos de entrada allow para que el tráfico de los Google Cloud probers pueda conectarse a tus backends. Para obtener instrucciones, consulta el artículo Crear reglas de cortafuegos obligatorias.

En la siguiente tabla se muestran los intervalos de IPs de origen que se deben permitir para cada balanceador de carga:

Producto Intervalos de IP de origen de la sonda de comprobación del estado
Balanceador de carga de aplicación externo global Balanceador de carga de red con proxy externo global 35.191.0.0/16 130.211.0.0/22 Para el tráfico IPv6 a los back-ends: 2600:2d00:1:b029::/64 2600:2d00:1:1::/64
Balanceador de carga de aplicación externo regional 1, 2 Balanceador de carga de aplicación interno interregional1 Balanceador de carga de aplicación interno regional 1, 2 Balanceador de carga de red de proxy externo regional1, 2 Balanceador de carga de red de proxy interno regional1, 2 Balanceador de carga de red de proxy interno interregional 1 35.191.0.0/16 130.211.0.0/22 Para el tráfico IPv6 a los back-ends: 2600:2d00:1:b029::/64
Balanceador de carga de red de proxy clásico Balanceador de carga de aplicación clásico Cloud Service Mesh, excepto los backends de NEG de Internet y los backends de NEG híbridos 35.191.0.0/16 130.211.0.0/22
Balanceador de carga de red de paso a través externo 3 Para el tráfico IPv4 a los backends: 35.191.0.0/16 209.85.152.0/22 209.85.204.0/22 Para el tráfico IPv6 a los back-ends: 2600:1901:8001::/48
Balanceador de carga de red de paso a través interno Para el tráfico IPv4 a los backends: 35.191.0.0/16 130.211.0.0/22 Para el tráfico IPv6 a los back-ends: 2600:2d00:1:b029::/64
Malla de servicios en la nube con backends de NEG de Internet y backends de NEG híbridos Direcciones IP de las VMs que ejecutan el software Envoy Para ver una configuración de ejemplo, consulta ladocumentación de Cloud Service Mesh.

1No es necesario permitir el tráfico de los intervalos de sondeo de comprobación del estado de Google para los NEGs híbridos. Sin embargo, si utilizas una combinación de NEGs híbridos y zonales en un mismo servicio de backend, debes permitir el tráfico de los intervalos de sondeo de comprobación de estado de Google para los NEGs zonales.

2En el caso de los NEGs de Internet regionales, las comprobaciones del estado son opcionales. El tráfico de los balanceadores de carga que usan NEGs de Internet regionales procede de la subred solo de proxy y, a continuación, se traduce mediante NAT (con Cloud NAT) a direcciones IP de NAT asignadas de forma manual o automática. Este tráfico incluye tanto las comprobaciones del estado como las solicitudes de los usuarios del balanceador de carga a los backends. Para obtener más información, consulta NEGs regionales: usar una pasarela de Cloud NAT.

3 Los balanceadores de carga de red de paso a través externos basados en grupos de destino solo admiten tráfico IPv4 y pueden proxy las comprobaciones de estado a través del servidor de metadatos. En este caso, las fuentes de paquetes de comprobación del estado coinciden con la dirección IP del servidor de metadatos: 169.254.169.254. No es necesario que cree reglas de cortafuegos para permitir el tráfico del servidor de metadatos. Los paquetes del servidor de metadatos siempre están permitidos.

Consideraciones de seguridad para los intervalos de IPs de sondeo

Ten en cuenta la siguiente información al planificar las comprobaciones de estado y las reglas de cortafuegos necesarias:

Importancia de las reglas de cortafuegos

Google Cloud requiere que crees las reglas de cortafuegos de entrada allownecesarias para permitir el tráfico de los verificadores a tus backends:

Si no tienes reglas de cortafuegos de entrada allow que permitan la comprobación del estado, la regla de entrada deny implícita bloquea el tráfico entrante. Cuando los verificadores no pueden ponerse en contacto con tus backends, el balanceador de carga considera que estos no están en buen estado.

Varias sondas y frecuencia

Google Cloud Envía sondeos de comprobación de estado desde varios sistemas redundantes llamados "sondas". Los verificadores usan intervalos de IPs de origen específicos. Google Cloud no se basa en un solo verificador para implementar una comprobación de estado: varios verificadores evalúan simultáneamente las instancias de los backends de grupos de instancias o los endpoints de los backends de NEGs zonales. Si falla una sonda, Google Cloud sigue monitorizando el estado de los back-ends.

Los ajustes de intervalo y de tiempo de espera que configures para una comprobación de estado se aplican a cada comprobador. En un backend determinado, los registros de acceso al software y tcpdump muestran sondeos más frecuentes que los ajustes configurados.

Es un comportamiento esperado y no puedes configurar el número de sondas que Google Cloud usa para las comprobaciones del estado. Sin embargo, puedes estimar el efecto de varias sondas simultáneas teniendo en cuenta los siguientes factores.

Destino de los paquetes de sondeo.

En la siguiente tabla se muestran la interfaz de red y las direcciones IP de destino a las que envían paquetes los verificadores de comprobación del estado, en función del tipo de balanceador de carga.

En el caso de los balanceadores de carga de red de paso a través externos e internos, la aplicación debe enlazarse a la dirección IP del balanceador de carga (o a cualquier dirección IP 0.0.0.0).

Balanceador de carga Interfaz de red de destino Dirección IP de destino
Balanceador de carga de aplicación externo global Balanceador de carga de red con proxy externo global En el caso de los backends de grupos de instancias, la interfaz de red principal (nic0). En el caso de los backends de NEG zonales con GCE_VM_IP_PORT endpoints, la interfaz de red de la red de VPC asociada al NEG. En el caso de los back-ends de NEG zonales con NON_GCP_PRIVATE_IP_PORT puntos de conexión, el punto de conexión debe representar una interfaz de un recurso on-premise al que se pueda acceder mediante una ruta de la red VPC asociada al NEG y de la región que contiene el NEG. En el caso de los backends de grupos de instancias, la dirección IPv4 o IPv6 interna principal asociada a la interfaz de red principal (nic0) de cada instancia. En el caso de los back-ends de NEG zonales con GCE_VM_IP_PORT puntos de conexión, la dirección IP del punto de conexión: una dirección IPv4 o IPv6 interna principal de la interfaz de red, o una dirección IPv4 o IPv6 interna de un intervalo de IP de alias de la interfaz de red. En el caso de los back-ends de NEG zonales con NON_GCP_PRIVATE_IP_PORT puntos finales, la dirección IP del punto final.
Balanceador de carga de aplicación clásico 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 Balanceador de carga de red de proxy clásico Balanceador de carga de red de proxy externo regional Balanceador de carga de red de proxy interno interregional 1 Balanceador de carga de red con proxy interno regional Cloud Service Mesh En el caso de los backends de grupos de instancias, la interfaz de red principal (nic0). En el caso de los backends de NEG zonales con GCE_VM_IP_PORT endpoints, la interfaz de red de la red de VPC asociada al NEG. En el caso de los back-ends de NEG zonales con NON_GCP_PRIVATE_IP_PORT puntos de conexión, el punto de conexión debe representar una interfaz de un recurso on-premise al que se pueda acceder mediante una ruta de la red VPC asociada al NEG y de la región que contiene el NEG. En el caso de los backends de grupos de instancias, la dirección IPv4 interna principal asociada a la interfaz de red principal (nic0) de cada instancia. En el caso de los back-ends de NEG zonales con GCE_VM_IP_PORT puntos de conexión, la dirección IP del punto de conexión: una dirección IPv4 interna principal de la interfaz de red o una dirección IPv4 interna de un intervalo de IPs de alias de la interfaz de red. En el caso de los back-ends de NEG zonales con NON_GCP_PRIVATE_IP_PORT puntos finales, la dirección IP del punto final.
Balanceador de carga de red de paso a través externo Interfaz de red principal (nic0) Dirección IP de la regla de reenvío externa. Si varias reglas de reenvío apuntan al mismo servicio de backend (en el caso de los balanceadores de carga de red de pases externos basados en grupos de destino, al mismo grupo de destino), Google Cloud envía sondeos a la dirección IP de cada regla de reenvío. Esto puede provocar un aumento en el número de comprobaciones.
Balanceador de carga de red de paso a través interno En el caso de los backends de grupos de instancias y los backends de NEGs zonales con endpoints GCE_VM_IP, la interfaz de red utilizada depende de cómo se configure el servicio de backend. Para obtener más información, consulta la sección sobre los servicios backend y las interfaces de red. Dirección IP de la regla de reenvío interna. Si varias reglas de reenvío apuntan al mismo servicio de backend, Google Cloud envía sondeos a la dirección IP de cada regla de reenvío. Esto puede provocar un aumento del número de sondeos.

Criterios de éxito de HTTP, HTTPS y HTTP/2

Las comprobaciones del estado de HTTP, HTTPS y HTTP/2 siempre requieren que se reciba un código de respuesta HTTP 200 (OK) antes de que se agote el tiempo de espera de la comprobación del estado. Todos los demás códigos de respuesta HTTP, incluidos los códigos de respuesta de redirección, como 301 y 302, se consideran no saludables.

Además de requerir un código de respuesta HTTP 200 (OK), puedes hacer lo siguiente:

En la siguiente tabla se muestran las combinaciones válidas de ruta de solicitud y marcas de respuesta que están disponibles para las comprobaciones de estado HTTP, HTTPS y HTTP/2.

Marcas de configuración Comportamiento de la sonda Criterios de éxito
No se ha especificado ni --request-path ni --response El verificador usa / como ruta de solicitud. Solo el código de respuesta HTTP 200 (OK).
Se han especificado tanto --request-path como --response El comprobador usa la ruta de solicitud configurada. El código de respuesta HTTP 200 (OK) y los primeros 1024 caracteres ASCII del cuerpo de la respuesta HTTP deben coincidir con la cadena de respuesta esperada.
Solo se ha especificado --response El verificador usa / como ruta de solicitud. El código de respuesta HTTP 200 (OK) y los primeros 1024 caracteres ASCII del cuerpo de la respuesta HTTP deben coincidir con la cadena de respuesta esperada.
Solo se ha especificado --request-path El comprobador usa la ruta de solicitud configurada. Solo el código de respuesta HTTP 200 (OK).

Criterios de éxito de SSL y TCP

Las comprobaciones del estado de TCP y SSL tienen los siguientes criterios de éxito básicos:

En la siguiente tabla se indican las combinaciones válidas de marcas de solicitud y respuesta que están disponibles para las comprobaciones de estado de TCP y SSL. Las marcas de solicitud y respuesta solo pueden contener caracteres ASCII imprimibles de un byte. La longitud de cada cadena no puede superar los 1024 caracteres.

Marcas de configuración Comportamiento de la sonda Criterios de éxito
No se ha especificado ni --request ni --response El comprobador no envía ninguna cadena de solicitud. Solo los criterios de éxito básicos.
Se han especificado tanto --request como --response El comprobador envía la cadena de solicitud configurada. Los criterios de éxito básicos y la cadena de respuesta recibida por el verificador deben coincidir exactamente con la cadena de respuesta esperada.
Solo se ha especificado --response El comprobador no envía ninguna cadena de solicitud. Los criterios de éxito básicos y la cadena de respuesta recibida por el verificador deben coincidir exactamente con la cadena de respuesta esperada.
Solo se ha especificado --request El comprobador envía la cadena de solicitud configurada. Solo los criterios de éxito básicos (no se comprueba ninguna cadena de respuesta).

Criterios de éxito de gRPC

Las comprobaciones de estado de gRPC solo se usan con aplicaciones gRPC, Google Cloud balanceadores de carga y Cloud Service Mesh. Google Cloud admite dos tipos de comprobaciones de estado de gRPC:

Si usas comprobaciones de estado de gRPC (con o sin TLS), asegúrate de que el servicio gRPC envíe la respuesta RPC con el estado OK y el campo de estado definido como SERVING o NOT_SERVING, según corresponda.

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

Criterios de éxito de las comprobaciones del estado antiguas

Si la respuesta recibida por la sonda de comprobación del estado antigua es HTTP 200 OK, se considera que la sonda se ha realizado correctamente. Todos los demás códigos de respuesta HTTP, incluida una redirección (301, 302), se consideran incorrectos.

Estado de salud

Google Cloud usa las siguientes marcas de configuración de umbral de estado correcto y incorrecto para determinar el estado general de cada backend al que se balancea la carga del tráfico.

Marca de configuración Finalidad Valor predeterminado
Umbral en buen estadohealthy-threshold El umbral de buen estado especifica el número de resultados de sondeo correctos consecutivos para que un _backend que no estaba en buen estado_1 se considere en buen estado. Los backends que no estaban en buen estado pueden volver a estarlo si vuelven a cumplir el umbral de buen estado. Google Cloud considera que los backends están en buen estado cuando se alcanza este umbral. Los backends activos pueden recibir conexiones nuevas. Los back-ends recién añadidos se pueden considerar correctos después de una sola comprobación correcta. Umbral de 2 sondas.
Umbral en mal estadounhealthy-threshold El umbral de mal estado especifica el número de resultados de sondeo fallidos consecutivos para que un _backend que estaba en buen estado_2 se considere en mal estado. Google Cloud considera que los backends no están en buen estado cuando se alcanza el umbral de mal estado. Los backends que no están en buen estado no pueden recibir conexiones nuevas. Sin embargo, las conexiones que ya existen *no* se terminan inmediatamente. En su lugar, la conexión permanece abierta hasta que se agota el tiempo de espera o hasta que se abandona el tráfico. Umbral de 2 sondas.

El comportamiento específico cuando todas las back-ends no están en buen estado varía en función del tipo de balanceador de carga que utilice:

Balanceador de carga Comportamiento cuando todos los backends están en mal estado
Balanceador de carga de aplicación clásico Devuelve el código de estado HTTP `502` a los clientes cuando todos los back-ends no están en buen estado.
Balanceador de carga de aplicación externo global Balanceador de carga de aplicación interno entre regiones Balanceador de carga de aplicación externo regional Balanceador de carga de aplicación interno regional Devuelve el código de estado HTTP `503` a los clientes cuando todos los back-ends no están en buen estado.
Balanceadores de carga de red de proxy Finaliza las nuevas conexiones TCP de cliente cuando todos los backends no están en buen estado.
Balanceador de carga de red de paso a través interno Balanceadores de carga de red de paso a través externos basados en el servicio de backend Distribuye las nuevas conexiones según la configuración de conmutación por error, el peso del backend y el estado del backend. Para obtener información detallada, consulta estos enlaces: Distribución del tráfico de los balanceadores de carga de red de paso a través internos Distribución del tráfico de los balanceadores de carga de red de paso a través externos basados en servicios de backend
Balanceadores de carga de red de paso a través externos basados en grupos de destino Distribuye el tráfico a todas las VMs de backend como último recurso cuando todos los backends están en mal estado.

Notas adicionales

En las siguientes secciones se incluyen más notas sobre el uso de comprobaciones de estado en Google Cloud.

Certificados y comprobaciones del estado

Los verificadores de estado deGoogle Cloud no validan los certificados, ni siquiera en los protocolos que requieren que tus backends usen certificados (SSL, HTTPS y HTTP/2). Por ejemplo:

Las comprobaciones del estado que usan cualquier protocolo, excepto las antiguas, te permiten definir un encabezado de proxy mediante la marca --proxy-header.

Las comprobaciones de estado que usan los protocolos HTTP, HTTPS o HTTP/2 y las comprobaciones de estado antiguas te permiten especificar un encabezado HTTP Host mediante la marca --host.

Si usas encabezados de solicitud personalizados, ten en cuenta que el balanceador de carga añade estos encabezados solo a las solicitudes de los clientes, no a las sondas de comprobación del estado. Si tu backend requiere un encabezado específico para la autorización que falta en el paquete de comprobación del estado, es posible que la comprobación del estado falle.

Comprobación del estado de ejemplo

Supongamos que configura una comprobación de estado con los siguientes ajustes:

Con estos ajustes, la comprobación de estado se comporta de la siguiente manera:

  1. Se configuran simultáneamente varios sistemas redundantes con los parámetros de comprobación del estado. Los ajustes de intervalo y de tiempo de espera se aplican a cada sistema. Para obtener más información, consulta Varias sondas y frecuencia.
  2. Cada comprobador de estado hace lo siguiente:
    1. Inicia una conexión HTTP desde una de las direcciones IP de origen a la instancia de backend cada 30 segundos.
    2. Espera hasta cinco segundos para obtener un código de estado 200 (OK) HTTP (el criterio de éxito de los protocolos HTTP, HTTPS y HTTP/2).
  3. Un backend se considera en mal estado cuando al menos una sonda de comprobación del estado del sistema hace lo siguiente:
    1. No recibe un código de respuesta HTTP 200 (OK) en dos sondeos consecutivos. Por ejemplo, puede que se rechace la conexión o que se agote el tiempo de espera de la conexión o del socket.
    2. Recibe dos respuestas consecutivas que no cumplen los criterios de éxito específicos del protocolo.
  4. Se considera que un backend está en buen estado cuando al menos un sistema de comprobación de estado recibe dos respuestas consecutivas que coinciden con los criterios de éxito específicos del protocolo.

En este ejemplo, cada prober inicia una conexión cada 30 segundos. Transcurren 30 segundos entre los intentos de conexión de un comprobador, independientemente de la duración del tiempo de espera (tanto si la conexión se ha agotado como si no). En otras palabras, el tiempo de espera siempre debe ser inferior o igual al intervalo, y nunca lo aumenta.

En este ejemplo, los tiempos de cada sonda son los siguientes (en segundos):

  1. t=0: inicia la sonda A.
  2. t=5: detiene la sonda A.
  3. t=30: inicia la sonda B.
  4. t=35: detiene la comprobación B.
  5. t=60: inicia la comprobación C.
  6. t=65: detiene la sonda C.

Siguientes pasos