En esta página se explican los conceptos sobre cómo distribuyen el tráfico los balanceadores de carga de red de paso a través externos.
Selección de backend y seguimiento de conexiones
La selección de backend y el seguimiento de conexiones funcionan conjuntamente para equilibrar varias conexiones entre diferentes backends y para enrutar todos los paquetes de cada conexión al mismo backend. Esto se consigue con una estrategia de dos partes. Primero, se selecciona un backend mediante un hash coherente. A continuación, esta selección se registra en una tabla de seguimiento de conexiones.
En los siguientes pasos se describe el proceso de selección del backend y de seguimiento de la conexión.
1. Comprobar si hay una entrada en la tabla de seguimiento de conexiones para usar un backend seleccionado anteriormente
En una conexión ya creada, el balanceador de carga usa la tabla de seguimiento de conexiones para identificar el backend seleccionado anteriormente para esa conexión.
El balanceador de carga intenta asociar cada paquete balanceado con una entrada de su tabla de seguimiento de conexiones mediante el siguiente proceso:
Si el paquete es un paquete TCP con la marca
SYN
:Si el modo de seguimiento de conexiones del balanceador de carga es
PER_CONNECTION
, vaya al paso Identificar los back-ends aptos. En el modo de seguimientoPER_CONNECTION
, un paquete TCP con la marcaSYN
siempre representa una nueva conexión, independientemente de la afinidad de sesión configurada.Si el modo de seguimiento de conexiones del balanceador de carga es
PER_SESSION
y la afinidad de sesión esNONE
oCLIENT_IP_PORT_PROTO
, ve al paso Identificar los back-ends aptos. En elPER_SESSION
modo de seguimiento, un paquete TCP con la marcaSYN
representa una nueva conexión solo cuando se usa una de las cinco opciones de afinidad de sesión (NONE
oCLIENT_IP_PORT_PROTO
).
Si la afinidad de sesión configurada no admite el seguimiento de conexiones para el protocolo del paquete, ve al paso Identificar los back-ends aptos. Para obtener información sobre qué protocolos se pueden monitorizar, consulta la tabla de la sección Modo de monitorización de conexiones.
En el caso del resto de los paquetes, el balanceador de carga comprueba si el paquete coincide con una entrada de la tabla de seguimiento de conexiones. La tupla de conexión (un conjunto de características de paquetes) que se usa para comparar el paquete con las entradas de la tabla de seguimiento de conexiones depende del modo de seguimiento de conexiones y de la afinidad de sesión que hayas configurado. Para obtener información sobre qué tupla de conexión se usa para el seguimiento de conexiones, consulta la tabla de la sección Modo de seguimiento de conexiones.
Si el paquete coincide con una entrada de la tabla de seguimiento de conexiones, el balanceador de carga envía el paquete al backend seleccionado anteriormente.
Si el paquete no coincide con ninguna entrada de la tabla de seguimiento de conexiones, vaya al paso Identificar back-ends aptos.
Para obtener información sobre cuánto tiempo se mantiene una entrada de la tabla de seguimiento de conexiones y en qué condiciones, consulta el paso Crear una entrada de la tabla de seguimiento de conexiones.
2. Seleccionar un backend apto para una nueva conexión
En el caso de una conexión nueva, el balanceador de carga usa el algoritmo de hash coherente para seleccionar un backend de entre los backends aptos.
En los siguientes pasos se describe el proceso para seleccionar un backend apto para una nueva conexión y, a continuación, registrar esa conexión en una tabla de seguimiento de conexiones.
2.1 Identificar back-ends aptos
En este paso se modelan los backends que pueden recibir conexiones nuevas, teniendo en cuenta el estado, el balanceo de carga ponderado y la configuración de la política de conmutación por error.
En la siguiente tabla se describe cómo influyen la política de conmutación por error y el balanceo de carga ponderado en los backends aptos.
Política de conmutación por error | Balanceo de carga ponderado | Backends aptos |
---|---|---|
Consulta Sin política de conmutación por error, balanceo de carga ponderado inhabilitado. | ||
Consulta Sin política de conmutación por error, balanceo de carga ponderado habilitado. | ||
Consulta Política de conmutación por error configurada y balanceo de carga ponderado inhabilitado. | ||
Consulta Política de conmutación por error configurada y balanceo de carga ponderado habilitado. |
No hay política de conmutación por error y el balanceo de carga ponderado está inhabilitado
El conjunto de backends aptos solo depende de las comprobaciones de estado:
Cuando al menos un backend está en buen estado, el conjunto de backends aptos está formado por todos los backends en buen estado.
Cuando todos los backends están en mal estado, el conjunto de backends aptos está formado por todos los backends.
Sin política de conmutación por error, balanceo de carga ponderado habilitado
El conjunto de backends aptos depende tanto de las comprobaciones de estado como de los pesos, y consta del primero de los siguientes elementos que no esté vacío:
- Todos los backends en buen estado y con un peso distinto de cero
- Todos los backends en mal estado y con un peso distinto de cero
- Todos los backends en buen estado y con peso cero
- Todos los backends en mal estado y con peso cero
Política de conmutación por error configurada y balanceo de carga ponderado inhabilitado
El conjunto de backends aptos depende de las comprobaciones de estado y de la configuración de la política de conmutación por error:
Cuando al menos un backend está en buen estado, el conjunto de backends aptos se define de la siguiente manera, usando la primera condición que sea verdadera de esta lista ordenada:
- Si no hay backends principales en buen estado, los backends aptos son todos los backends de conmutación por error en buen estado.
- Si no hay backends de conmutación por error en buen estado, los backends aptos son todos los backends principales en buen estado.
- Si el índice de conmutación por error es
0.0
(el valor predeterminado), los backends aptos son todos los backends principales en buen estado. - Si la proporción del número de backends principales en buen estado en comparación con el número total de backends principales es mayor o igual que la proporción de conmutación por error configurada, los backends aptos serán todos los backends principales en buen estado.
- Los backends aptos son todos los backends de conmutación por error que estén en buen estado.
Cuando no hay backends en buen estado, el conjunto de backends aptos se define de la siguiente manera:
- Si la política de conmutación por error del balanceador de carga está configurada para eliminar las nuevas conexiones cuando no haya backends en buen estado, el conjunto de backends aptos estará vacío. El balanceador de carga descarta los paquetes de las conexiones nuevas.
- Si la política de conmutación por error del balanceador de carga no está configurada para eliminar las nuevas conexiones cuando no haya backends en buen estado, las comprobaciones de estado no serán relevantes. Los back-ends aptos son todos los back-ends principales.
Política de conmutación por error configurada y balanceo de carga ponderado habilitado
El conjunto de backends aptos depende de las comprobaciones del estado, los pesos y la configuración de la política de conmutación por error:
Cuando al menos un backend está en buen estado y tiene un peso distinto de cero, el conjunto de backends aptos se define de la siguiente manera, usando la primera condición que se cumpla de esta lista ordenada:
- Si no hay backends principales en buen estado y con un peso distinto de cero, los backends aptos son todos los backends de conmutación por error en buen estado y con un peso distinto de cero.
- Si no hay backends de conmutación por error en buen estado y con un peso distinto de cero, los backends aptos son todos los backends principales en buen estado y con un peso distinto de cero.
- Si el índice de conmutación por error es
0.0
(el valor predeterminado), los backends aptos son todos los backends principales en buen estado y con un peso distinto de cero. - Si la proporción del número de backends principales en buen estado y con un peso distinto de cero en comparación con el número total de backends principales es mayor o igual que el índice de conmutación por error configurado, los backends aptos serán todos los backends principales en buen estado y con un peso distinto de cero.
- Los backends aptos son todos los backends de conmutación por error en buen estado y con un peso distinto de cero.
Cuando no hay backends en buen estado con un peso distinto de cero, el conjunto de backends aptos se define de la siguiente manera:
- Si la política de conmutación por error del balanceador de carga está configurada para eliminar las nuevas conexiones cuando no haya backends en buen estado, el conjunto de backends aptos estará vacío. El balanceador de carga descarta los paquetes de las conexiones nuevas.
Si la política de conmutación por error del balanceador de carga no está configurada para eliminar las nuevas conexiones cuando no haya backends en buen estado, el conjunto de backends aptos será el primero de los siguientes que no esté vacío:
- Todos los backends principales en mal estado y con un peso distinto de cero
- Todos los backends de failover en mal estado y con un peso distinto de cero
- Todos los backends principales en buen estado y con peso cero
- Todos los backends están en buen estado y ninguno tiene peso de failover
- Todos los backends principales en mal estado y con peso cero
- Todos los backends en mal estado y con cero peso de conmutación por error
2.2 Selecciona un backend apto
El balanceador de carga usa el hash coherente para seleccionar un backend apto. El balanceador de carga mantiene los hashes de los backends aptos, asignados a un círculo unitario. El balanceo de carga asignado por porcentajes modifica la forma en que se asignan los back-ends aptos al círculo de forma que los back-ends con porcentajes más altos tienen más probabilidades de ser seleccionados, de forma proporcional a sus porcentajes.
Cuando procesa un paquete de una conexión que no está en la tabla de seguimiento de conexiones, el balanceador de carga calcula un hash de las características del paquete y asigna ese hash al mismo círculo unitario, seleccionando un backend apto en la circunferencia del círculo. El conjunto de características del paquete que se usa para calcular el hash del paquete se define en el ajuste de afinidad de sesión.
Si no se configura explícitamente la afinidad de sesión, se usará la afinidad de sesión
NONE
de forma predeterminada.En los dos ejemplos siguientes se muestra cómo afecta el balanceo de carga ponderado a la selección de un backend apto:
Si el servicio backend tiene dos backends aptos (el primero con un peso de
1
y el segundo con un peso de4
), el primer backend apto tiene una probabilidad de selección del 20% (1
÷(1+4)
) y el segundo backend apto tiene una probabilidad de selección del 80% (4
÷(1+4)
).Si el servicio de backend tiene tres backends aptos (el backend
a
con un peso de0
, el backendb
con un peso de2
y el backendc
con un peso de6
), el backenda
tiene una probabilidad de selección del 0 % (0
÷(0+2+6)
), el backendb
tiene una probabilidad de selección del 25 % (2
÷(0+2+6)
) y el backendc
tiene una probabilidad de selección del 75 % (6
÷(0+2+6)
).
El balanceador de carga asigna nuevas conexiones a los back-ends aptos de la forma más coherente posible, incluso si cambia el número de back-ends aptos o sus pesos. Las siguientes ventajas del hash coherente muestran cómo selecciona el balanceador de carga los backends aptos para posibles conexiones nuevas que no tienen entradas en la tabla de seguimiento de conexiones:
El balanceador de carga selecciona el mismo backend para todas las conexiones nuevas posibles que tengan características de paquete idénticas, tal como se define en la afinidad de sesión, en las siguientes situaciones:
Si no se configura el balanceo de carga ponderado, cuando el conjunto de backends aptos no cambie.
Si se configura el balanceo de carga ponderado, cuando el conjunto de back-ends aptos no cambia y el peso de cada back-end apto se mantiene constante.
El balanceador de carga distribuye las posibles nuevas conexiones entre los backends aptos de la forma más equitativa posible:
Si no se configura el balanceo de carga ponderado, se asignan aproximadamente
1/N
posibles conexiones nuevas a cada backend apto, dondeN
es el número de backends aptos.Si se configura el balanceo de carga ponderado, la proporción de posibles conexiones nuevas que se asignan a cada backend apto es aproximadamente el peso de un backend apto dividido entre la suma de los pesos de todos los backends aptos.
Si se añade o se quita un backend apto, o si cambia su peso, el objetivo del hash coherente es minimizar las interrupciones de las asignaciones a los demás backends aptos. Es decir, la mayoría de las conexiones que se asignan a otros backends aptos siguen asignándose al mismo backend apto.
2.3 Crear una entrada en la tabla de seguimiento de conexiones
Después de seleccionar un backend, el balanceador de carga crea una entrada en la tabla de seguimiento de conexiones si la afinidad de sesión configurada admite el seguimiento de conexiones para el protocolo del paquete.
Si la afinidad de sesión configurada no admite el seguimiento de conexiones para el protocolo del paquete, omite este paso.
Si la afinidad de sesión configurada admite el seguimiento de conexiones para el protocolo del paquete, la entrada de la tabla de seguimiento de conexiones que se crea asigna las características del paquete al backend seleccionado. Los campos del encabezado de paquete que se usan en esta asignación dependen del modo de seguimiento de conexiones y de la afinidad de sesión que hayas configurado.
Para obtener información sobre qué protocolos se pueden monitorizar en función de las opciones de configuración y qué características de los paquetes se usan para el hash, consulta la sección Modo de monitorización de conexiones.
El balanceador de carga elimina las entradas de la tabla de seguimiento de conexiones según las siguientes reglas:
Una entrada de la tabla de seguimiento de conexiones se elimina después de que la conexión haya estado inactiva durante 60 segundos. Para obtener más información, consulta Tiempo de espera por inactividad.
Las entradas de la tabla de seguimiento de conexiones no se eliminan cuando se cierra una conexión TCP con un paquete
FIN
oRST
. Cualquier conexión TCP nueva siempre lleva la marcaSYN
y se procesa como se describe en el paso Comprobar si hay una entrada en la tabla de seguimiento de conexiones.Si se configura una política de conmutación por error y se inhabilita la opción de desviación de conexiones al producirse una conmutación por error y una conmutación tras error, el balanceador de carga elimina todas las entradas de la tabla de seguimiento de conexiones cuando los backends aptos pasan de ser principales a ser de conmutación por error (conmutación por error) o de ser de conmutación por error a ser principales (conmutación tras error). Para obtener más información, consulta Desviación de conexiones al producirse una conmutación por error y una conmutación por recuperación.
Las entradas de la tabla de seguimiento de conexiones se pueden eliminar si un backend deja de estar en buen estado. Este comportamiento depende del modo de seguimiento de conexiones, el protocolo y el ajuste de persistencia de conexión en backends no saludables. Para obtener más información, consulta Persistencia de la conexión en back-ends incorrectos.
Las entradas de la tabla de seguimiento de conexiones se eliminan después del tiempo de espera de purga de la conexión que se produce tras un evento, como eliminar una VM de backend o eliminar una VM de backend de un grupo de instancias o un NEG. Para obtener más información, consulta Habilitar el drenaje de conexiones.
Afinidad de sesión
La afinidad de sesión controla la distribución de las conexiones nuevas de los clientes a los backends del balanceador de carga. Los balanceadores de carga de red de paso a través externos usan la afinidad de sesión para seleccionar un backend de un conjunto de backends aptos, tal como se describe en los pasos Identificar backends aptos y Seleccionar un backend apto de la sección Selección y seguimiento de la conexión de backend. La afinidad de sesión se configura en el servicio de backend, no en cada grupo de instancias de backend ni en cada NEG.
Los balanceadores de carga de red de paso a través externos admiten los siguientes ajustes de afinidad de sesión. Cada ajuste de afinidad de sesión usa el hash coherente para seleccionar un backend apto. El ajuste de afinidad de sesión determina qué campos de los encabezados IP y TCP/UDP se usan para calcular el hash.
Método de hash para la selección de backend | Ajuste de afinidad de sesión1 |
---|---|
Hash de quíntupla (compuesto por la dirección IP de origen, el puerto de origen, el protocolo, la dirección IP de destino y el puerto de destino) para paquetes no fragmentados que incluyen información de puerto, como paquetes TCP y paquetes UDP no fragmentados ORHash de 3 tuplas (compuesto por la dirección IP de origen, la dirección IP de destino y el protocolo) para paquetes UDP fragmentados y paquetes de todos los demás protocolos |
NONE 2 |
Hash de quíntupla (compuesto por la dirección IP de origen, el puerto de origen, el protocolo, la dirección IP de destino y el puerto de destino) para paquetes no fragmentados que incluyen información de puerto, como paquetes TCP y paquetes UDP no fragmentados ORHash de 3 tuplas (compuesto por la dirección IP de origen, la dirección IP de destino y el protocolo) para paquetes UDP fragmentados y paquetes de todos los demás protocolos |
CLIENT_IP_PORT_PROTO |
Hash de 3 tuplas (formado por la dirección IP de origen, la dirección IP de destino y el protocolo) |
CLIENT_IP_PROTO |
Hash de 2 tuplas (formado por la dirección IP de origen y la dirección IP de destino) |
CLIENT_IP |
session affinity
en cada grupo de destino.
2 Si el ajuste de afinidad de sesión es NONE
, no significa que no haya afinidad de sesión. Esto significa que no se ha configurado ninguna opción de afinidad de sesión de forma explícita.
El hashing siempre se realiza para seleccionar un backend. Si el valor de afinidad de sesión es NONE
, el balanceador de carga usa un hash de 5 tuplas o de 3 tuplas para seleccionar los back-ends, lo que equivale a usar el valor CLIENT_IP_PORT_PROTO
.
Para obtener información sobre cómo afectan los diferentes ajustes de afinidad de sesión a los métodos de selección de backend y de seguimiento de conexiones, consulta la tabla de la sección Modo de seguimiento de conexiones.
Política de seguimiento de conexiones
En esta sección se describen los ajustes que controlan el comportamiento del seguimiento de conexiones de los balanceadores de carga de red de paso a través externos. Una política de seguimiento de conexiones incluye los siguientes ajustes:
- Modo de seguimiento de la conexión
- Persistencia de la conexión en backends en mal estado
- Tiempo de espera de inactividad
Modo de seguimiento de la conexión
Cuando se puede hacer un seguimiento de las conexiones, la tabla de seguimiento de conexiones del balanceador de carga asigna tuplas de conexión a backends seleccionados anteriormente en una tabla hash. El conjunto de características de los paquetes que componen cada tupla de conexión depende del modo de seguimiento de la conexión y de la afinidad de sesión.
Los balanceadores de carga de red de paso a través externos admiten el seguimiento de conexiones basado en el protocolo y las opciones de afinidad de sesión:
Las conexiones TCP siempre se pueden monitorizar, independientemente de la opción de afinidad de sesión que se elija.
Las conexiones UDP, ESP y GRE se pueden monitorizar para todas las opciones de afinidad de sesión excepto
NONE
.El resto de los protocolos, como ICMP e ICMPv6, no se pueden monitorizar.
El modo de seguimiento de conexiones hace referencia a la granularidad de cada tupla de conexión en la tabla de seguimiento de conexiones del balanceador de carga. La tupla de conexión puede ser de 5 o 3 elementos (modo PER_CONNECTION
) o puede coincidir con el ajuste de afinidad de sesión (modo PER_SESSION
).
PER_CONNECTION
. Este es el modo de seguimiento de conexiones predeterminado. Este modo de seguimiento de conexiones usa un hash de 5 tuplas o un hash de 3 tuplas. Los paquetes no fragmentados que incluyen información de puertos, como los paquetes TCP y los paquetes UDP no fragmentados, se monitorizan con hashes de 5 tuplas. El resto de los paquetes se monitorizan con hashes de tuplas de 3 elementos.PER_SESSION
. Este modo de seguimiento de conexiones usa un hash que consta de las mismas características de paquete que el hash de afinidad de sesión. En función de la afinidad de sesión elegida,PER_SESSION
puede dar lugar a conexiones que coincidan con más frecuencia con una entrada de tabla de seguimiento de conexiones, lo que reduce la frecuencia con la que el backend debe seleccionarse mediante el hash de afinidad de sesión.
En la siguiente tabla se resume cómo funcionan conjuntamente el modo de seguimiento de conexiones y la afinidad de sesión para enrutar todos los paquetes de cada conexión al mismo backend.
Selección de backend mediante la afinidad de sesión | Modo de seguimiento de la conexión | ||
---|---|---|---|
Ajuste de afinidad de sesión | Método de hash para la selección de backend | PER_CONNECTION (predeterminado) |
PER_SESSION |
Predeterminado
( |
TCP y UDP sin fragmentar: hash de 5 tuplas UDP fragmentado y todos los demás protocolos: hash de 3 tuplas |
|
|
IP de cliente e IP de destino
( |
Todos los protocolos: hash de 2 tuplas |
|
|
IP de cliente, IP de destino y protocolo
( |
Todos los protocolos: hash de tupla de 3 elementos |
|
|
IP de cliente, puerto de cliente, IP de destino, puerto de destino y protocolo
( |
TCP y UDP sin fragmentar: hash de 5 tuplas UDP fragmentado y todos los demás protocolos: hash de 3 tuplas |
|
|
Para saber cómo cambiar el modo de seguimiento de conexiones, consulta Configurar una política de seguimiento de conexiones.
Persistencia de la conexión en backends en mal estado
Los ajustes de persistencia de la conexión controlan si una conexión ya establecida persiste en una VM o un endpoint de backend seleccionados después de que ese backend deje de estar en buen estado, siempre que el backend permanezca en el grupo de backend configurado del balanceador de carga (en un grupo de instancias o en un NEG).
Estas son las opciones de persistencia de la conexión disponibles:
DEFAULT_FOR_PROTOCOL
(predeterminado)NEVER_PERSIST
ALWAYS_PERSIST
En la siguiente tabla se resumen las opciones de persistencia de la conexión y cómo persisten las conexiones en diferentes protocolos, opciones de afinidad de sesión y modos de seguimiento.
Opción de persistencia de conexiones en backends en mal estado | Modo de seguimiento de la conexión | |
---|---|---|
PER_CONNECTION |
PER_SESSION |
|
DEFAULT_FOR_PROTOCOL |
TCP: las conexiones persisten en back-ends incorrectos (todas las afinidades de sesión) Todos los demás protocolos: las conexiones nunca persisten en backends en mal estado |
TCP: las conexiones persisten en los back-ends incorrectos si la afinidad de sesión es Otros protocolos: las conexiones nunca persisten en backends en mal estado |
NEVER_PERSIST |
Todos los protocolos: las conexiones nunca persisten en backends en mal estado | |
ALWAYS_PERSIST |
TCP: las conexiones persisten en back-ends incorrectos (todas las afinidades de sesión) ESP, GRE y UDP: las conexiones persisten en back-ends no saludables si la afinidad de sesión no es ICMP e ICMPv6: no se aplican porque no se pueden rastrear las conexiones. Esta opción solo se debe usar en casos prácticos avanzados. |
No se puede configurar |
Comportamiento de persistencia de conexiones TCP en backends en mal estado
Siempre que una conexión TCP con seguimiento de 5 tuplas persista en un backend no operativo:
- Si el backend en mal estado sigue respondiendo a los paquetes, la conexión continuará hasta que se restablezca o se cierre (ya sea por el backend en mal estado o por el cliente).
- Si el backend en mal estado envía un paquete de restablecimiento (RST) de TCP o no responde a los paquetes, el cliente puede volver a intentarlo con una nueva conexión, lo que permite que el balanceador de carga seleccione otro backend en buen estado. Los paquetes SYN de TCP siempre seleccionan un backend nuevo y en buen estado.
Para saber cómo cambiar el comportamiento de persistencia de la conexión, consulta Configurar una política de seguimiento de conexiones.
Tiempo de espera de inactividad
Las entradas de las tablas de seguimiento de conexiones caducan 60 segundos después de que el balanceador de carga procese el último paquete que coincida con la entrada. Este valor de tiempo de espera inactivo no se puede modificar.
Balanceo de carga ponderado
El balanceo de carga ponderado de los balanceadores de carga de red de paso a través externos usa la información de peso que proporciona una comprobación del estado HTTP. Para usar el balanceo de carga ponderado, debe configurar lo siguiente:
- La política de localidad del balanceador de carga del servicio de backend (
localityLbPolicy
) debe serWEIGHTED_MAGLEV
. - El servicio de backend debe usar una comprobación del estado HTTP.
- Las respuestas de comprobación de estado de cada VM de backend o punto final de backend deben contener un encabezado de respuesta HTTP personalizado. El nombre del campo del encabezado de respuesta es
X-Load-Balancing-Endpoint-Weight
y los valores de campo válidos van de0
a1000
.
Si necesitas usar el mismo grupo de instancias o NEG como backend de dos o más servicios de backend, te recomendamos que sigas esta estrategia para que cada una de las instancias o los endpoints de backend comunes puedan proporcionar información de peso única para cada servicio de backend:
- Usa una comprobación de estado HTTP única para cada servicio de backend. Por ejemplo, usa un parámetro de comprobación del estado
request-path
único. - Configura las instancias o los endpoints de backend para que respondan con la información de peso adecuada en cada comprobación de estado.
Cuando se usa el balanceo de carga ponderado, el balanceador de carga clasifica las VMs o los endpoints de backend primero en función de si tienen un peso superior a cero o igual a cero y, después, en función de las comprobaciones de estado. El estado de la comprobación del estado se determina en función de los criterios de éxito de las comprobaciones del estado HTTP, HTTPS y HTTP/2.
Ponderación | Saludable o poco saludable | Clasificación |
---|---|---|
Ponderación mayor que cero | Buen estado | Primera opción |
Ponderación mayor que cero | Mal estado | Segunda opción |
El peso es igual a cero | Buen estado | Tercera opción |
El peso es igual a cero | Mal estado | Cuarta (última) opción |
Para obtener más información sobre cómo influye el balanceo de carga ponderado en los backends aptos, consulta los pasos Identificar los backends aptos y Seleccionar un backend apto en la sección Selección de backend y seguimiento de conexiones.
El balanceo de carga ponderado se puede usar en los siguientes casos:
Si algunas conexiones procesan más datos que otras o si algunas conexiones duran más que otras, la distribución de la carga del backend puede volverse desigual. Al indicar un peso por instancia inferior, una instancia con una carga elevada puede reducir su parte de las conexiones nuevas, mientras sigue atendiendo las conexiones existentes.
Si un backend está sobrecargado y asignar más conexiones puede interrumpir las conexiones existentes, estos backends se asignan un peso cero. Al señalar un peso cero, una instancia de backend deja de atender nuevas conexiones, pero sigue atendiendo las que ya tiene.
Si un backend está agotando las conexiones antes del mantenimiento, se asigna un peso cero. Al indicar que el peso es cero, la instancia de backend deja de atender nuevas conexiones, pero sigue atendiendo las que ya tiene.
Para obtener más información, consulta Configurar el balanceo de carga ponderado.
Purga de conexión
La desviación de conexiones proporciona una cantidad configurable de tiempo adicional para que las conexiones establecidas persistan en la tabla de seguimiento de conexiones del balanceador de carga cuando se produce una de las siguientes acciones:
- Se elimina una instancia de máquina virtual de un grupo de instancias de backend (esto incluye abandonar una instancia en un grupo de instancias gestionado de backend)
- Se detiene o se elimina una VM (esto incluye acciones automáticas como la implementación gradual de actualizaciones o la reducción del tamaño de un grupo de instancias gestionado de backend)
- Se elimina un endpoint de un grupo de endpoints de red (NEG) de backend
De forma predeterminada, el vaciado de conexiones de las acciones mencionadas está inhabilitado. Para obtener información sobre cómo se activa el drenaje de conexiones y cómo habilitarlo, consulta el artículo Habilitar el drenaje de conexiones.
Fragmentación de UDP
Los balanceadores de carga de red de paso a través externos basados en servicios de backend pueden procesar paquetes UDP fragmentados y no fragmentados. Si tu aplicación usa paquetes UDP fragmentados, ten en cuenta lo siguiente:
- Los paquetes UDP pueden fragmentarse antes de llegar a una red VPC. Google Cloud
- Google Cloud Las redes de VPC reenvían fragmentos UDP a medida que llegan (sin esperar a que lleguen todos los fragmentos).
- Las redes que no sonGoogle Cloud y los equipos de red on-premise pueden reenviar fragmentos UDP a medida que llegan, retrasar los paquetes UDP fragmentados hasta que hayan llegado todos los fragmentos o descartar los paquetes UDP fragmentados. Para obtener más información, consulta la documentación del proveedor de la red o del equipo de red.
Si esperas paquetes UDP fragmentados y necesitas enrutarlos a los mismos backends, usa los siguientes parámetros de configuración de la regla de reenvío y del servicio de backend:
Configuración de la regla de reenvío: usa solo una regla de reenvío
UDP
oL3_DEFAULT
por dirección IP con balanceo de carga y configura la regla de reenvío para que acepte tráfico en todos los puertos. De esta forma, todos los fragmentos llegan a la misma regla de reenvío. Aunque los paquetes fragmentados (excepto el primer fragmento) no tienen un puerto de destino, al configurar la regla de reenvío para procesar el tráfico de todos los puertos, también se configura para recibir fragmentos UDP que no tienen información de puerto. Para configurar todos los puertos, usa la interfaz de línea de comandos de Google Cloud para definir--ports=ALL
o usa la API para definirallPorts
enTrue
.Configuración del servicio de backend: asigna el valor
CLIENT_IP
(hash de 2 tuplas) oCLIENT_IP_PROTO
(hash de 3 tuplas) a la afinidad de sesión del servicio de backend para que se seleccione el mismo backend para los paquetes UDP que incluyan información de puerto y los fragmentos UDP (excepto el primer fragmento) que no incluyan información de puerto. Define el modo de seguimiento de conexiones del servicio de backend comoPER_SESSION
para que las entradas de la tabla de seguimiento de conexiones se creen con los mismos hashes de tupla de 2 o 3 elementos.
Conmutación por error
Puedes configurar un balanceador de carga de red de pases externo para distribuir las conexiones entre las instancias de VM o los endpoints de los backends principales (grupos de instancias o NEGs) y, a continuación, cambiar a los backends de conmutación por error si es necesario. La conmutación por error es otro método para aumentar la disponibilidad, además de ofrecerte más control sobre cómo gestionar tu carga de trabajo cuando tus back-ends principales no están en buen estado.
De forma predeterminada, cuando añades un backend al servicio de backend de un balanceador de carga de red de pases externo, ese backend es un backend principal. Puedes designar un backend como backend de failover cuando lo añadas al servicio de backend del balanceador de carga o editando el servicio de backend más adelante.
Para obtener más información sobre cómo se usa la conmutación por error para seleccionar el backend y hacer un seguimiento de las conexiones, consulta los pasos Identificar los backends aptos y Crear una entrada en la tabla de seguimiento de conexiones de la sección Selección de backend y seguimiento de conexiones.
Para obtener más información sobre cómo funciona la conmutación por error, consulta el artículo sobre la conmutación por error de los balanceadores de carga de red de transferencia externa.
Siguientes pasos
- Para configurar un balanceador de carga de red de pases externo con un servicio de backend solo para tráfico TCP o UDP (que admita tráfico IPv4 e IPv6), consulta Configurar un balanceador de carga de red de pases externo con un servicio de backend.
- Para configurar un balanceador de carga de red de paso a través externo para varios protocolos de IP (que admita tráfico IPv4 e IPv6), consulta Configurar un balanceador de carga de red de paso a través externo para varios protocolos de IP.
- Para configurar un balanceador de carga de red de paso a través externo con un backend de NEG de zona, consulta Configurar un balanceador de carga de red de paso a través externo con NEGs de zona.
- Para saber cómo migrar un balanceador de carga de red de paso a través externo de un backend de grupo de destino a un servicio de backend regional, consulta el artículo Migrar un balanceador de carga de red de paso a través externo de un grupo de destino a un servicio de backend.