En esta página, se explican los conceptos sobre cómo los balanceadores de cargas de red de transferencia externos distribuyen el tráfico.
Selección de backend y seguimiento de conexiones
La selección de backend y el seguimiento de conexiones funcionan en conjunto para balancear varias conexiones en diferentes backends y para enrutar todos los paquetes de cada conexión al mismo backend. Esto se logra con una estrategia de dos partes. Primero, se selecciona un backend con un hash coherente. Luego, esta selección se registra en una tabla de seguimiento de conexiones.
En los siguientes pasos, se describen la selección de backend y el seguimiento de conexiones.
1. Verifica si hay una entrada en la tabla de seguimiento de la conexión
El balanceador de cargas determina si un paquete balanceado pertenece a una conexión nueva o a una existente con el siguiente proceso:
Paquete TCP con la marca
SYN:Si el modo de seguimiento de conexiones del balanceador de cargas es
PER_CONNECTION, continúa con el paso Identifica los backends aptos. En el modo de seguimientoPER_CONNECTION, un paquete TCP con la marcaSYNsiempre representa una conexión nueva, sin importar la afinidad de sesión configurada.Si el modo de seguimiento de conexión del balanceador de cargas es
PER_SESSIONy la afinidad de sesión esNONEoCLIENT_IP_PORT_PROTO, continúa con el paso Identifica los backends aptos. En el modo de seguimientoPER_SESSION, un paquete TCP con la marcaSYNrepresenta una conexión nueva solo cuando se usa una de las opciones de afinidad de sesión de 5 tuplas (NONEoCLIENT_IP_PORT_PROTO).
- No se admite el seguimiento de conexiones: Si la afinidad de sesión configurada no admite el seguimiento de conexiones para el protocolo del paquete, continúa con el paso Identifica los servidores de backend aptos. Para obtener información sobre qué protocolos se pueden rastrear, consulta la tabla en la sección Modo de seguimiento de conexiones.
Todos los demás paquetes: El balanceador de cargas verifica si el paquete coincide con una entrada existente en la tabla de seguimiento de conexiones. La granularidad del hash de paquetes que se usa para verificar si existe una entrada en la tabla de seguimiento de conexiones depende del modo de seguimiento de conexiones y de la afinidad de sesión que configuraste. Para obtener más información, consulta la tabla en 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 cargas envía el paquete al backend seleccionado anteriormente.
Si el paquete no coincide con una entrada de la tabla de seguimiento de conexiones, continúa con el paso Identifica los backends aptos.
Para obtener información sobre cuánto tiempo persiste una entrada de la tabla de seguimiento de conexiones y en qué condiciones persiste, consulta el paso Administra las entradas de la tabla de seguimiento de conexiones.
2. Pasos para la selección del backend
Para una conexión nueva, el balanceador de cargas usa el hash coherente para seleccionar un backend entre los backends aptos.
En los siguientes pasos, se describe el proceso para seleccionar un backend apto para una conexión nueva y, luego, registrar esa conexión en una tabla de seguimiento de conexiones.
2.1 Identifica los servidores de backend aptos
Los backends aptos son los backends que pueden recibir conexiones nuevas. En la siguiente tabla, se define el conjunto de backends aptos según si configuraste una política de conmutación por error y si está habilitado el balanceo de cargas ponderado.
| Política de conmutación por error | Balanceo de cargas ponderado | Backends aptos |
|---|---|---|
Cuando no se configura ninguna política de conmutación por error y se inhabilita el balanceo de cargas ponderado, todos los backends configurados son backends principales. El conjunto de backends aptos se define de la siguiente manera:
|
||
Cuando no se configura ninguna política de conmutación por error y se habilita el balanceo de cargas ponderado, los backends aptos son aquellos que provienen del primero de los siguientes conjuntos que no está vacío:
|
||
Cuando se configura una política de conmutación por error y se inhabilita el balanceo de cargas ponderado, el balanceador de cargas usa la información de la verificación de estado y la configuración de la política de conmutación por error para definir el conjunto de backends aptos:
|
||
Cuando se configura una política de conmutación por error y se habilita el balanceo de cargas ponderado, el balanceador de cargas usa la información de peso, la información de verificación de estado y la configuración de la política de conmutación por error para definir el conjunto de backends aptos:
|
2.2 Selecciona un backend apto
El balanceador de cargas mantiene hashes de los backends aptos, y cada hash de backend se asigna a un círculo unitario. El balanceo de cargas ponderado altera la forma en que los backends aptos se asignan al círculo, de modo que es más probable que se seleccionen los backends con pesos más altos, de forma proporcional a sus pesos.
Cuando procesa un paquete para una conexión que no está en la tabla de seguimiento de conexiones, el balanceador de cargas 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 la configuración de afinidad de sesión. Por ejemplo, cuando la afinidad de sesión seleccionada genera un hash de selección de backend de 2 o 3 tuplas, todas las conexiones TCP desde una dirección IP de origen se asignan al mismo backend apto.
- Si no se configura explícitamente una afinidad de sesión, la afinidad de sesión
NONEes la predeterminada.
El hash coherente garantiza que el balanceador de cargas asigne conexiones nuevas a los backends aptos de una manera que minimice las interrupciones del mapeo, incluso si cambia la cantidad de backends aptos o sus pesos.
El balanceador de cargas siempre selecciona el mismo backend apto para una conexión y, en general, siempre selecciona el mismo backend apto para todos los paquetes con características idénticas, según lo define el parámetro de configuración de afinidad de sesión, en las siguientes situaciones:
Si no se configura el balanceo de cargas ponderado, cuando el conjunto de backends aptos no cambia
Si se configura el balanceo de cargas ponderado, cuando el conjunto de backends aptos no cambia y el peso de cada backend apto permanece constante.
Si se agrega o quita un backend apto, o se cambia su peso, el hash coherente tiene como objetivo minimizar la interrupción 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.
Además, el hash coherente garantiza que el balanceador de cargas distribuya las conexiones nuevas entre los backends aptos de la manera más equitativa posible. Para todos los hashes de paquetes posibles, según lo define el parámetro de configuración de afinidad de sesión configurado (y, más específicamente, para todas las conexiones posibles cuando la afinidad de sesión genera un hash de 5 tuplas para la selección de backend):
Si no se configura el balanceo de cargas ponderado, aproximadamente
1/Nhashes de paquetes posibles se asignan a cada backend apto, dondeNes el recuento de backends aptos.Si se configura el balanceo de cargas ponderado, la proporción de hashes de paquetes posibles que se asignan a cada backend apto es aproximadamente la siguiente: la ponderación de un backend apto dividida por la suma de todas las ponderaciones de los backends aptos.
En los siguientes dos ejemplos, se muestra cómo el balanceo de cargas ponderado afecta las probabilidades de selección de cada backend apto:
Si el servicio de backend tiene dos backends aptos (el primero con un peso de
1y 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 apto
acon peso0, el backend aptobcon peso2y el backend aptoccon peso6), el backendatiene una probabilidad de selección del 0% (0÷(0+2+6)), el backendbtiene una probabilidad de selección del 25% (2÷(0+2+6)) y el backendctiene una probabilidad de selección del 75% (6÷(0+2+6)).
2.3 Crea una entrada de tabla de seguimiento de la conexión
Después de seleccionar un backend, el balanceador de cargas 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 de encabezado de paquetes que se usan para esta asignación dependen del modo de seguimiento de conexión y de la afinidad de sesión que configuraste.
Para obtener información sobre qué protocolos se pueden rastrear según tus opciones de configuración y qué características de paquetes se usan para el hash en la tabla de seguimiento de conexiones, consulta la tabla en la sección Modo de seguimiento de conexiones.
3. Administra las entradas de la tabla de seguimiento de conexiones
El balanceador de cargas administra las entradas de la tabla de seguimiento de conexiones según los siguientes eventos y reglas:
- Se quitan las entradas inactivas: Se quita una entrada de la tabla de seguimiento de conexión después de que la conexión estuvo inactiva durante 60 segundos. Para obtener más información, consulta Tiempo de espera por inactividad.
Conexiones TCP cerradas: Las entradas de la tabla de seguimiento de conexiones para las conexiones TCP no se quitan cuando se cierra una conexión TCP con un paquete
FINoRST. Es posible que se quiten más adelante como entrada inactiva. Cada conexión TCP nueva siempre incluye la marcaSYNy está sujeta al procesamiento que se describe en el paso Verifica si hay una entrada en la tabla de seguimiento de conexiones.Vaciado de conexiones en la conmutación por error: Cuando se configura al menos un backend de conmutación por error y se inhabilita el parámetro de configuración de vaciado de conexiones en la conmutación por error, el balanceador de cargas quita todas las entradas de la tabla de seguimiento de conexiones cuando el conjunto de backends aptos cambia entre los backends principales y los de conmutación por error. Para obtener más información, consulta Vaciado de conexiones en la conmutación por error.
Persistencia de la conexión en backends en mal estado: Se pueden quitar las entradas de la tabla de seguimiento de conexiones si un backend está en mal estado. Este comportamiento depende de los factores que se describen en Persistencia de la conexión en backends en mal estado.
Cuando se quita una entrada de la tabla de seguimiento de conexiones porque un backend seleccionado anteriormente cambia de buen estado a mal estado, los paquetes posteriores de la conexión se tratan como si pertenecieran a una conexión nueva. Después de seleccionar un nuevo backend apto para los paquetes posteriores, el balanceador de cargas crea una entrada de reemplazo en la tabla de seguimiento de conexiones.
Una entrada de reemplazo en la tabla de seguimiento de conexiones se comporta exactamente igual que cualquier otra entrada de la tabla de seguimiento de conexiones y está sujeta a los eventos y las reglas de este paso.
Si el backend seleccionado anteriormente vuelve a estar en buen estado después de estar en mal estado, el cambio de verificación de estado por sí solo no hace que se quite la entrada de la tabla de seguimiento de conexiones de reemplazo. Se produce una excepción cuando se configura al menos un backend de conmutación por error y se inhabilita el parámetro de configuración de vaciado de conexiones en la conmutación por error. Si el cambio en el estado de la verificación de estado de un backend seleccionado anteriormente coincide con el conjunto de backends aptos que cambian entre backends principales y de conmutación por error, se quitan las entradas de la tabla de seguimiento de conexiones.
Vaciado de conexiones para backends quitados, detenidos o borrados: Si el vaciado de conexiones para backends quitados, detenidos o borrados está habilitado, las entradas de la tabla de seguimiento de conexiones se quitan después de un tiempo de espera configurable para el vaciado de conexiones. El conteo del tiempo de espera comienza cuando se recibe el comando para quitar, detener o borrar un backend. Si el vaciado de conexiones para los backends quitados, detenidos o borrados está inhabilitado, las entradas de la tabla de seguimiento de conexiones se quitan cuando se recibe el comando para quitar, detener o borrar un backend. Para obtener más información, consulta Habilita el vaciado de conexiones.
Afinidad de sesión
El parámetro de configuración de afinidad de sesión de un balanceador de cargas de red de transferencia externo define el hash de paquetes para la selección de backend y, según el modo de seguimiento de conexiones, el hash de paquetes para el seguimiento de conexiones.
La afinidad de sesión se configura en el servicio de backend, no en cada grupo de instancias de backend o NEG. La afinidad de sesión determina qué encabezados de IP y de capa 4 se usan para calcular un hash de las características del paquete. El hash de las características del paquete se usa en los pasos de selección del backend.
Los balanceadores de cargas de red de transferencia externos admiten los siguientes parámetros de configuración de afinidad de sesión.
| Método hash para la selección de backend | Configuración de afinidad de sesión |
|---|---|
|
Hash de 5 tuplas (consta de 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 sin fragmentar que incluyen información de puertos (paquetes TCP y paquetes UDP sin fragmentar) OHash de 3 tuplas (que consta de 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 |
NONE1
O CLIENT_IP_PORT_PROTO
|
| Hash de 3 tuplas (consta de la dirección IP de origen, la dirección IP de destino y el protocolo) |
CLIENT_IP_PROTO |
| Hash de 2 tuplas (consta de la dirección IP de origen y la dirección IP de destino) |
CLIENT_IP |
1 La afinidad de sesión NONE no indica que no haya afinidad de sesión. En cambio, significa que la afinidad de sesión se realiza con un hash de 5 o 3 tuplas de las características del paquete, lo que, funcionalmente, es el mismo comportamiento que cuando se establece CLIENT_IP_PORT_PROTO.
Política de seguimiento de conexiones
En esta sección, se describen los parámetros de configuración de la política de seguimiento de conexiones del balanceador de cargas:
- Modo de seguimiento de conexiones
- Persistencia de la conexión en backends en mal estado
- Tiempo de espera inactivo
Modo de seguimiento de conexiones
En esta sección, se describe cuándo y cómo el balanceador de cargas crea entradas en su tabla de seguimiento de conexiones. Los balanceadores de cargas de red de transferencia externos admiten el seguimiento de conexiones basado en el protocolo y la afinidad de sesión:Las conexiones TCP siempre se pueden rastrear, para todas las opciones de afinidad de sesión.
Las conexiones UDP, ESP y GRE se pueden rastrear para todas las opciones de afinidad de sesión excepto
NONE.Todos los demás protocolos, como ICMP y ICMPv6, no son rastreables por conexión.
Cuando es posible el seguimiento de conexiones, el modo de seguimiento de conexiones, el protocolo y la afinidad de sesión determinan el conjunto de características del paquete que se usan para generar el hash del paquete en cada entrada de la tabla de seguimiento de conexiones.
El modo de seguimiento de conexiones puede ser uno de los siguientes:
PER_CONNECTION: Este es el modo de seguimiento de conexiones predeterminado y más detallado. Cada conexión se define como un hash de 5 tuplas o un hash de 3 tuplas de las características del paquete, según si la información del puerto está presente en el paquete. Los paquetes no fragmentados que incluyen información de puertos (como los paquetes TCP y los paquetes UDP no fragmentados) se rastrean con hashes de 5 tuplas. Todos los demás paquetes se rastrean con hashes de 3 tuplas.PER_SESSION: Este modo de seguimiento de conexiones menos detallado usa un hash que coincide con el hash de afinidad de sesión. Según la afinidad de sesión elegida, el modo de seguimientoPER_SESSIONpuede tratar varias conexiones distintas como una sola para los fines del seguimiento de conexiones. Esto reduce la frecuencia con la que una conexión se considera nueva y está sujeta a los pasos de selección del backend.
En la siguiente tabla, se resume lo siguiente:
- Los hashes de paquetes que se usan para la selección de backend
- Son los hashes de paquetes que se usan para el seguimiento de conexiones, según el modo de seguimiento de conexiones, el protocolo y la afinidad de sesión.
| Afinidad de sesión | Hash de paquete para la selección de backend | Hash de paquete para el seguimiento de conexiones | |
|---|---|---|---|
Cuando se usa el modo de seguimiento PER_CONNECTION (predeterminado) |
Cuando se usa el modo de seguimiento PER_SESSION |
||
NONE (predeterminado) |
|
|
|
CLIENT_IP_PORT_PROTO |
|
|
|
CLIENT_IP_PROTO |
|
|
|
CLIENT_IP |
|
|
|
Para obtener información sobre cómo cambiar el modo de seguimiento de conexiones, consulta Configura una política de seguimiento de conexiones.
Persistencia de la conexión en backends en mal estado
La opción Persistencia de la conexión en backends en mal estado controla si las conexiones existentes persisten en una VM o un extremo de backend seleccionado anteriormente después de que el backend esté en mal estado, siempre que el backend permanezca en un grupo de instancias o un NEG balanceado por cargas.
Las siguientes opciones de persistencia de la conexión están disponibles:
DEFAULT_FOR_PROTOCOL(predeterminada)NEVER_PERSISTALWAYS_PERSIST
En la siguiente tabla, se resume si las conexiones persisten en función de los backends en mal estado, según la opción de persistencia de la conexión, la afinidad de sesión, el modo de seguimiento de conexiones y el protocolo.
| Opción de persistencia de conexión en backends en mal estado | Comportamiento de la persistencia de la conexión en backends en mal estado | |
|---|---|---|
Cuando se usa el modo de seguimiento PER_CONNECTION (predeterminado) |
Cuando se usa el modo de seguimiento PER_SESSION |
|
DEFAULT_FOR_PROTOCOL |
|
|
NEVER_PERSIST |
Todos los protocolos: las conexiones nunca persisten en backends en mal estado. | |
ALWAYS_PERSIST
Esta opción solo se debe usar para casos de uso avanzados. |
|
No es posible realizar la configuración. |
Cuando la persistencia de la conexión en backends en mal estado se aplica al tráfico, cada conexión persiste mientras exista una entrada correspondiente en la tabla de seguimiento de conexiones. Para obtener más información, consulta el paso Administra las entradas de la tabla de seguimiento de conexiones.
Para obtener información sobre cómo cambiar el comportamiento de persistencia de la conexión, consulta Configura una política de seguimiento de conexiones.
Comportamiento de la persistencia de conexión TCP en backends en mal estado
El balanceador de cargas usa el seguimiento de conexiones con hash de 5 tuplas para las conexiones TCP en las siguientes situaciones:
- Cuando se usa el modo de seguimiento
PER_CONNECTION(todas las afinidades de sesión) - Cuando se usa el modo de seguimiento
PER_SESSION, y la afinidad de sesión esNONEoCLIENT_IP_PORT_PROTO.
Cuando el balanceador de cargas usa un seguimiento de conexiones con hash de 5 tuplas para las conexiones TCP, ten en cuenta los siguientes comportamientos:
- Si el backend en mal estado sigue respondiendo a los paquetes, la conexión continúa hasta que se restablece o se cierra (ya sea por el backend en mal estado o el cliente).
- Si el backend en mal estado envía un paquete de restablecimiento de TCP (RST) o no responde a los paquetes, el cliente puede volver a intentarlo con una conexión nueva, lo que permite que el balanceador de cargas seleccione otro backend apto. (Los paquetes TCP
SYNse tratan como conexiones nuevas en el paso Identifica los backends aptos).
Tiempo de espera inactivo
Las entradas de las tablas de seguimiento de conexiones vencen 60 segundos después de que el balanceador de cargas procesa el último paquete que coincidió con la entrada. No se puede modificar este valor de tiempo de espera de inactividad.Vaciado de conexiones para backends detenidos, borrados o quitados
El vaciado de conexiones proporciona una cantidad mínima configurable de tiempo para que las conexiones existentes persistan en la tabla de seguimiento de conexiones del balanceador de cargas cuando sucede una de las siguientes situaciones:
- Se quita una instancia de máquina virtual (VM) de un grupo de instancias de backend (esto incluye descartar una instancia en un grupo de instancias administrado de backend).
- Se detiene o borra una VM (esto incluye acciones automáticas, como actualizaciones continuas o la reducción del escalamiento de un grupo de instancias administrado de backend).
- Se quita un extremo de un grupo de extremos de red (NEG) de backend
De forma predeterminada, el vaciado de conexiones cuando se quitan, detienen o borran los backends está inhabilitado. Para obtener más información, consulta Habilita el vaciado de conexiones.
Balanceo de cargas ponderado
El balanceo de cargas ponderado influye en qué backends son aptos en los pasos de selección de backend. Cada VM o extremo de backend informa su peso al balanceador de cargas a través de una verificación de estado HTTP y un encabezado de respuesta personalizado. Para usar el balanceo de cargas ponderado, debes configurar lo siguiente en el servicio de backend del balanceador de cargas:
- La política de localidad (
localityLbPolicy) debe establecerse enWEIGHTED_MAGLEV. La verificación de estado debe ser una verificación de estado HTTP que envíe un encabezado de respuesta especial:
- El nombre del campo del encabezado de respuesta debe ser
X-Load-Balancing-Endpoint-Weight. - Los valores de los campos del encabezado de respuesta pueden variar de
0a1000, inclusive.
- El nombre del campo del encabezado de respuesta debe ser
Para obtener más información, consulta Configura el balanceo de cargas ponderado.
Consideraciones para el balanceo de cargas ponderado
El balanceo de cargas ponderado es útil en las siguientes situaciones, que permiten que un backend siga procesando sus conexiones existentes:
El balanceo de cargas ponderado permite que un backend que procesa conexiones de larga duración o conexiones que involucran grandes cantidades de datos le indique al balanceador de cargas que reduzca la cantidad de conexiones nuevas que recibe.
El balanceo de cargas ponderado permite que un backend sobrecargado o en mantenimiento se quite de los backends aptos para conexiones nuevas. Para ello, el backend sobrecargado envía el encabezado de respuesta
X-Load-Balancing-Endpoint-Weight: 0(y puede seguir pasando o fallando la verificación de estado del balanceador de cargas). Esto funciona porque todos los backends con un peso distinto de cero (independientemente del estado de la verificación de estado) son backends aptos más convenientes en el paso Identifica los backends aptos.
Ten en cuenta lo siguiente cuando uses el balanceo de cargas:
Si los backends aptos cambian sus pesos con frecuencia, el balanceo de cargas ponderado puede ser perjudicial para la afinidad de sesión. Para obtener más información, consulta el paso Selecciona un backend apto.
Si usas el mismo grupo de instancias o NEG como backend de dos o más servicios de backend del balanceador de cargas, puedes informar un peso único para cada servicio de backend con la siguiente estrategia:
Usa una verificación de estado HTTP única para cada servicio de backend. Cada verificación de estado puede usar un puerto de destino o un parámetro
request-pathúnicos.Configura instancias o extremos de backend para que respondan con la información de peso adecuada para cada verificación de estado.
Conmutación por error
La conmutación por error te permite influir en el conjunto de backends aptos para las conexiones nuevas clasificando cada grupo de instancias de backend o NEG como principal o de conmutación por error.
De forma predeterminada, cuando agregas un grupo de instancias o un NEG a un servicio de backend, las VMs o los extremos miembros son backends principales, y el grupo de instancias o el NEG es un grupo de backends principal. Con la conmutación por error, puedes agregar un grupo de backends de conmutación por error (grupo de instancias o NEG) cuyas VMs o extremos miembros sean backends de conmutación por error:
- La conmutación por error requiere que un servicio de backend tenga al menos un grupo de backend principal y al menos un grupo de backend de conmutación por error.
- Puedes agregar hasta 50 grupos de backend principales y 50 grupos de backend de conmutación por error a un servicio de backend.
Con la conmutación por error, los siguientes factores determinan el conjunto de servidores de backend aptos:
- El estado de cada backend
- La proporción de conmutación por error que configuraste
- El parámetro de configuración Abandonar el tráfico si los backends están en mal estado
- Si usas la conmutación por error por sí sola o junto con el balanceo de cargas ponderado
Política de conmutación por error
Cuando un servicio de backend tiene al menos un grupo de backend principal y al menos un grupo de backend de conmutación por error, puedes ajustar la siguiente configuración en su política de conmutación por error:
- Índice de conmutación por error: Es un número entre
0.0y1.0, incluidos. - Descartar el tráfico si los backends están en mal estado: Es un valor booleano que determina el comportamiento de último recurso del balanceador de cargas. El porcentaje de conmutación por error y el parámetro de configuración Descartar tráfico si los backends no están en buen estado funcionan en conjunto con otros factores para controlar el conjunto de backends aptos.
- Desvío de conexión en conmutación por error: Es un valor booleano que controla si las conexiones persisten en los backends seleccionados anteriormente cuando el conjunto de backends aptos cambia entre los backends principales y los de conmutación por error.
Índice de conmutación por error
La proporción de conmutación por error configurada determina cuándo el conjunto de backends aptos cambia entre los backends principales y los de conmutación por error. El índice puede ser un número entre 0.0 y 1.0, inclusive. Si no especificas una proporción de conmutación por error, Google Cloud usa un valor predeterminado de 0.0. Se recomienda configurar el índice de conmutación por error en un número adecuado para tu caso de uso, en lugar de basarse en este valor predeterminado.
Vaciado de conexiones en conmutación por error
El parámetro de configuración Vaciado de conexiones en la conmutación por error controla si una conexión existente persiste en una VM o un extremo de backend seleccionado previamente cuando el conjunto de backends aptos cambia entre los backends principales y los de conmutación por error.
El vaciado de conexiones en la conmutación por error está habilitado de forma predeterminada. En la siguiente tabla, se resume si las conexiones persisten, según la opción de vaciado de conexiones en conmutación por error y el protocolo:
| Opción de vaciado de conexiones en conmutación por error | Comportamiento cuando el conjunto de backends aptos cambia entre los backends principales y los de conmutación por error |
|---|---|
| Habilitados (configuración predeterminada) |
Para obtener información sobre qué protocolos se pueden hacer un seguimiento de la conexión, consulta la tabla en la sección Modo de seguimiento de la conexión. |
| Inhabilitado | Todos los protocolos: Las conexiones no persisten cuando el conjunto de backends aptos cambia entre los backends principales y los de conmutación por error. |
Inhabilitar el vaciado de conexiones en la conmutación por error y por recuperación es útil para las siguientes situaciones:
Aplica un parche a las VMs de backend. Antes de aplicar el parche, puedes configurar los backends principales en buen estado con un peso distinto de cero para que fallen las verificaciones de estado o puedes establecer sus pesos en cero. De esta manera, los backends aptos pueden ser backends de conmutación por error en buen estado con un peso distinto de cero. Si se inhabilita el vaciado de conexiones en la conmutación por error y por recuperación, el balanceador de cargas quita las entradas de la tabla de seguimiento de conexiones, aplica los pasos de selección de backend a los paquetes posteriores y los entrega a un backend diferente apto. Luego, el backend diferente cierra la conexión con un restablecimiento de TCP para que las VMs cliente puedan establecer rápidamente una nueva conexión con el balanceador de cargas.
VM de backend única para la coherencia de datos Si necesitas asegurarte de que el conjunto de backends aptos no tenga más de una VM o un extremo miembro, inhabilitar el vaciado de conexiones en la conmutación por error y la recuperación reduce la posibilidad de que haya incoherencias en los datos.
Para obtener información sobre cómo inhabilitar el vaciado de conexiones en la conmutación por error y la recuperación, consulta Inhabilitación del vaciado de conexiones en la conmutación por error y la recuperación.
Prácticas recomendadas y orientación
Puedes optimizar el balanceador de cargas de red de transferencia externo siguiendo estos lineamientos operativos. En las siguientes secciones, se proporcionan los requisitos técnicos para administrar paquetes UDP fragmentados y las prácticas recomendadas para probar la distribución de carga desde un solo cliente.
Cómo controlar la fragmentación de UDP
Los balanceadores de cargas de red de transferencia 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 de Google CloudVPC.
- 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 son deGoogle Cloud y el equipo de red local pueden reenviar fragmentos UDP a medida que llegan, retrasar los paquetes UDP fragmentados hasta que todos los fragmentos hayan llegado, o descartar paquetes UDP fragmentados. Para obtener más información, consulta la documentación del proveedor de red o el equipo de red.
Si esperas paquetes UDP fragmentados y necesitas enrutarlos a los mismos backends, usa la siguiente regla de reenvío y parámetros de configuración del servicio de backend:
Configuración de reglas de reenvío: Usa solo una regla de reenvío
UDPoL3_DEFAULTpor dirección IP con balanceo de cargas y configura la regla de reenvío para aceptar tráfico en todos los puertos. Esto garantiza que todos los fragmentos lleguen a la misma regla de reenvío. Aunque los paquetes fragmentados (que no sea el primer fragmento) no tienen un puerto de destino, configurar la regla de reenvío para procesar el tráfico en todos los puertos también la configura para recibir fragmentos UDP que no tienen información de puertos. A fin de configurar todos los puertos, usa Google Cloud CLI para configurar--ports=ALLo usa la API a fin de configurarallPortsenTrue.Configuración del servicio de backend: establece la afinidad de sesión del servicio de backend en
CLIENT_IP(hash de 2 tuplas) oCLIENT_IP_PROTO(hash de 3 tuplas), de manera que se seleccione el mismo backend para paquetes de UDP que incluyen información de puertos y fragmentos UDP (que no sean el primer fragmento) que carecen de información de puertos. Establece el modo de seguimiento de conexión del servicio de backend enPER_SESSIONpara que las entradas de la tabla de seguimiento de conexión se compilen mediante los mismos valores hash de 2 o 3 tuplas.
Prueba desde un solo cliente
Cuando pruebes un balanceador de cargas de red de transferencia externo desde un solo cliente, ten en cuenta lo siguiente:
Si la VM del cliente no es un backend del balanceador de cargas: Las conexiones nuevas se procesan como se describe en los pasos de Selección y seguimiento de la conexión de backend. En el paso Selecciona un backend apto, el balanceador de cargas crea un hash de las características del paquete según la afinidad de sesión.
Recuerda que todas las opciones de afinidad de sesión dependen, al menos, de la dirección IP del cliente, por lo que las conexiones del mismo cliente pueden distribuirse al mismo backend apto con mayor frecuencia de lo que esperas. Por lo tanto, no puedes modelar con precisión la distribución general de las conexiones nuevas si te conectas a un balanceador de cargas de red de transferencia externo desde un solo cliente.
Si la VM de cliente también es una VM de backend del balanceador de cargas, el balanceador de cargas no procesa las conexiones nuevas. Los paquetes salientes con la dirección IP de destino de la regla de reenvío del balanceador de cargas se enrutan de forma local dentro del SO invitado del cliente debido a la presencia de una ruta local para la regla de reenvío.
¿Qué sigue?
- Si quieres configurar un balanceador de cargas de red de transferencia externo con un servicio de backend solo para el tráfico de TCP o UDP (compatible con el tráfico IPv4 e IPv6), consulta Configura un balanceador de cargas de red de transferencia de transferencia externo con un servicio de backend.
- Si quieres configurar un balanceador de cargas de red de transferencia externo para varios protocolos IP (compatibles con el tráfico de IPv4 e IPv6), consulta Configura un balanceador de cargas de red de traspaso externo para varios protocolos de IP.
- Para configurar un balanceador de cargas de red de transferencia externo con un backend de NEG zonal, consulta Configura un balanceador de cargas de red de transferencia externo con NEG zonales.
- Para obtener información sobre cómo hacer la transición de un balanceador de cargas de red de transferencia externo desde un backend de grupo de destino a un servicio de backend regional, consulta Transición de un balanceador de cargas de red de transferencia externo de un grupo de destino a un servicio de backend.