Descripción general del balanceo de cargas avanzado
El balanceo de cargas avanzado consta de funciones que te permiten ajustar las cargas globales y la distribución del tráfico para satisfacer mejor tu disponibilidad, rendimiento y los objetivos de rentabilidad. Este documento está dirigido a usuarios que tengan, al menos un conocimiento intermedio de los conceptos de Cloud Service Mesh y el balanceo de cargas.
Para implementar el balanceo de cargas avanzado, creas una política de balanceo de cargas de servicio (recurso serviceLbPolicies
), que contiene valores que influyen en la selección de un backend. Luego, adjunta la política de balanceo de cargas de servicios a un servicio de
backend. La política de balanceo de cargas del servicio especifica el algoritmo
y determinar cómo se balancea el tráfico hacia los backends.
Puedes elegir entre las siguientes opciones de algoritmos para el balanceo de cargas avanzado:
- Cascada por región (algoritmo predeterminado).
- Aplica el aerosol en la región.
- Difundir al mundo
- Cascada por zona.
Están disponibles las siguientes opciones adicionales:
- Designa backends preferidos. Cloud Service Mesh envía tráfico a esos MIG o NEG antes de enviar tráfico a otros backends.
- Configura el vaciado automático de la capacidad.
- Personaliza el comportamiento de conmutación por error.
Antes de que configures cualquiera de las opciones avanzadas de balanceo de cargas, te recomendamos que revises la documentación del recurso de servicio de backend.
Cómo Cloud Service Mesh enruta y balancea las cargas del tráfico
En el siguiente diagrama, se muestra cómo Cloud Service Mesh decide enrutar el tráfico.
Primero, Cloud Service Mesh elige servicios de backend en función de
y se basan en reglas de enrutamiento en el recurso Route
o el mapa de URL
según la API que use tu implementación.
En segundo lugar, Cloud Service Mesh elige un MIG o NEG de backend que está asociado el servicio de backend, según la ubicación, la ubicación, el estado y la capacidad del MIG o NEG y la información del balanceo de cargas del servicio política asociada con el servicio de backend.
Por último, Cloud Service Mesh elige una instancia o un extremo dentro del MIG o NEG. Esta elección se basa en la información de la política de balanceo de cargas de la localidad en los servicios de backend.
Backends compatibles y no compatibles
Los siguientes tipos de backend son compatibles con el balanceo de cargas avanzado:
- Grupos de instancias no administrados
- Grupos de instancias administrados (MIG)
- Grupos de extremos de red por zonas (NEG de GCE_VM_IP_PORT)
- Grupos de extremos de red de conectividad híbrida (NON_GCP_PRIVATE_IP_PORT NEG)
Los siguientes tipos de backend no son compatibles con el balanceo de cargas avanzado:
- Grupos de instancias administrados regionales
- Grupos de extremos de red de Internet (NEG de INTERNET_FQDN_PORT)
Casos de uso
En las siguientes secciones, se describe cómo funciona cada algoritmo y cuál elegir para tus necesidades comerciales específicas.
Balancea el tráfico entre los backends de una región
El algoritmo de balanceo de cargas predeterminado, en cascada por región, distribuye el tráfico de forma uniforme entre todos los MIG o NEG en las zonas de una región. Te recomendamos que uses el algoritmo predeterminado, a menos que tengas requisitos especiales.
Con cascada por región, los backends reciben tráfico en proporción al tráfico que proporciona protección contra sobrecargas de backend. El tráfico se envía a través de los límites de zona cuando es necesario para mantener los backends cargados de manera uniforme dentro de la región. Incluso si la zona local del cliente tiene capacidad restante, hay es el tráfico entre zonas. Las solicitudes de cada cliente pueden distribuirse varios MIG o NEG zonales en la región, lo que ayuda a mantener la carga encendida que los MIG o NEG sean uniformes cuando la carga de tráfico de los clientes no sea uniforme.
Aumenta la resiliencia distribuyendo el tráfico de un cliente entre las zonas
El algoritmo predeterminado de cascada por región intenta balancear el uso de la capacidad. en varios MIG o NEG zonales. Sin embargo, según ese algoritmo, las solicitudes que provienen de un solo cliente no se envían de forma coherente a todas las zonas las solicitudes de un solo cliente, por lo general, se enrutan a MIG o NEG en un solo zona.
Usa el algoritmo de distribución en la región cuando desees que los clientes distribuyan sus solicitudes a todos los MIG o NEG de una región, lo que reduce el riesgo de sobrecargar los MIG o NEG en una sola zona cuando hay un aumento rápido y localizado en el volumen de tráfico.
Con el algoritmo de distribución de tráfico a la región, si tienes dos zonas, A y B, y hay un aumento repentino del tráfico en la zona B, el tráfico se dividirá entre las dos zonas. Con el algoritmo predeterminado, un aumento repentino en la zona B podría activar una sobrecarga en la zona antes de que Cloud Service Mesh pueda responder al cambio.
Ten en cuenta que, cuando usas el algoritmo de distribución en regiones, el tráfico de cada cliente siempre se distribuye entre las zonas de backend de una región. Esto da como resultado un tráfico entre zonas sistemáticamente más alto, incluso cuando hay capacidad restante en la zona local y puede resultar en un área afectada más grande para el tráfico de Cloud Service Mesh si dos clientes de Cloud Service Mesh envían tráfico a las mismas zonas.
Distribuye el tráfico de tu cliente entre todos los backends en varias regiones
Como se explicó en las secciones anteriores, el algoritmo de rociar a la región se extiende el tráfico desde cada cliente hacia todas las zonas de una región. En el caso de los servicios que tienen MIG o NEG en varias regiones, Cloud Service Mesh aún optimiza la latencia general enviando tráfico a la región más cercana.
Si prefieres un radio de dispersión más amplio, usa el algoritmo de espray para el mundo. Con con este algoritmo, los clientes extienden sus solicitudes a todos los MIG o NEG del mundo en múltiples regiones.
Es importante tener en cuenta que, con este algoritmo, todo el tráfico se distribuye a todos los backend a nivel global. Una consulta defectuosa puede dañar todos los backends de tu de Google Cloud. El algoritmo también genera más tráfico entre regiones, lo que podría aumentar la latencia de la solicitud y generar costos adicionales.
Minimiza el tráfico interzonal
Puedes optimizar la latencia general y reducir el tráfico entre zonas con la configuración de cascada por zona. Cuando se configuran varios MIG o NEG en una zona, el tráfico del cliente se enruta al MIG o NEG más cercano en la zona, hasta su capacidad, antes de enviar el tráfico al siguiente MIG o NEG en la zona hasta que se use toda la capacidad del MIG o NEG en la zona. Solo entonces el tráfico se transfiere a la zona más cercana.
Con este algoritmo, puedes minimizar el tráfico interzonal innecesario. La latencia general podría mejorar un poco porque se prefieren los backends locales más cercanos. Sin embargo, esto también podría crear un tráfico desigual entre los MIG o los NEG dentro de una región.
Comparación de los algoritmos de balanceo de cargas
En la siguiente tabla, se proporciona una comparación detallada de los cuatro algoritmos de balanceo de cargas de Cloud Service Mesh.
Comportamiento | Cascada por región | Difundir a la región | Difundir al mundo | Cascada por zona |
---|---|---|---|---|
Uso uniforme de la capacidad dentro de una región en estado estable | Sí | Sí | Sí | No |
Uso uniforme de la capacidad en varias regiones en estado estable | No | No | Sí | No |
División de tráfico uniforme dentro de una región en estado estable | No | Sí | Sí | No |
Tráfico entre zonas | Sí. Este algoritmo distribuirá el tráfico de manera uniforme entre las zonas en un región y, al mismo tiempo, optimiza la latencia de red. El tráfico puede enviarse a través de en ciertas zonas si es necesario. | Sí | Sí | Sí, el tráfico llenará la zona más cercana hasta su capacidad máxima. Luego, irá a la siguiente zona. |
Sensibilidad a los aumentos repentinos de tráfico en la zona local | Promedio: Depende de la cantidad de tráfico que ya se haya redireccionado para equilibrar las zonas. | Más baja, ya que los aumentos repentinos de tráfico de una sola zona se distribuirán en todas las zonas de la región. | Más baja, ya que los aumentos repentinos de tráfico de una sola zona se distribuirán en todas las regiones. | Mayor; ya que es más probable que los picos de una sola zona se entreguen por completo por una sola zona hasta que Cloud Service Mesh pueda reaccionar. |
Opciones avanzadas adicionales de balanceo de cargas
En las siguientes secciones, se analizan las opciones para modificar el balanceo de cargas de Cloud Service Mesh.
Backends preferidos
Puedes configurar el balanceo de cargas para que un grupo de backends de un backend servicio se designa como preferido. Estos backends se usan completamente antes que las solicitudes posteriores se enrutan a los backends restantes. Cloud Service Mesh distribuye el tráfico de clientes primero a los backends preferidos, lo que minimiza las latencias de solicitudes para tus clientes.
Cualquier tráfico que exceda la capacidad configurada de los backends preferidos enrutan a backends no preferidos. El algoritmo de balanceo de cargas distribuye el tráfico entre los backends no preferidos.
Un caso de uso es el desbordamiento a Google Cloud, en el que especificas recursos de procesamiento local, representados por un NEG de conectividad híbrida, para que se usen por completo antes de que las solicitudes se enruten a MIG o NEG de backend de Google Cloud con escalamiento automático. Esta configuración puede minimizar el consumo de procesamiento de Google Cloud y, al mismo tiempo, tener la capacidad de transferir gradualmente o conmutarse por error a Google Cloud cuando sea necesario.
Vaciado automático de la capacidad
Cuando un backend está en mal estado, suele ser conveniente excluirlo lo más rápido posibles a partir de decisiones de balanceo de cargas. Excluir el backend evita que se hagan solicitudes se envíen al backend en mal estado. Además, el tráfico se equilibra entre backends en buen estado para evitar la sobrecarga del backend y optimizar la latencia general.
Esta opción es similar a establecer capacityscalar en cero. Le pide a Cloud Service Mesh que reduzca automáticamente la escala de la capacidad del backend a cero. Cuando un backend tiene menos del 25% de sus extremos o instancias individuales y aprueba las verificaciones de estado. Con esta opción, se quitan los backends en mal estado del balanceo de cargas global.
Cuando los backends desviados automáticamente vuelven a estar en buen estado, se desvían si al menos el 35% de los extremos o instancias están en buen estado durante 60 segundos. Malla de servicios en la nube no agota más del 50% de los extremos en un servicio de backend, independientemente del estado del backend.
Un caso de uso es que puedes usar el vaciado automático de capacidad con backends preferidos. Si se prefiere un MIG o NEG de backend y muchos de los extremos en él en mal estado, este parámetro de configuración protege los extremos restantes en el MIG o NEG al alejando el tráfico del MIG o NEG.
Personaliza el comportamiento de conmutación por error
Por lo general, Cloud Service Mesh envía tráfico a los backends teniendo en cuenta varios factores. En un estado estable, Cloud Service Mesh envía tráfico a los backends que se eligen en función de los algoritmos analizados anteriormente. Los seleccionados backends se consideran óptimos en términos de latencia y uso de capacidad. Se llaman backends principales.
Cloud Service Mesh también realiza un seguimiento de los backends que se usarán cuando los backends principales estén en mal estado y no puedan recibir tráfico. Estos backends se llaman backends de conmutación por error. Por lo general, son backends cercanos que tienen cierta capacidad restantes.
Cuando un backend está en mal estado, Cloud Service Mesh intenta evitar que se envíe tráfico y, en su lugar, traslada el tráfico a backends en buen estado.
El recurso serviceLbPolicy
incluye un campo, failoverHealthThreshold
, cuyo valor se puede personalizar para controlar el comportamiento de conmutación por error. El valor de umbral que
que establezcas determina cuándo se cambia el tráfico de los backends principales a los de conmutación por error
backends.
Cuando algunos extremos del backend principal están en mal estado, Cloud Service Mesh cambiar el tráfico de manera inmediata. En cambio, Cloud Service Mesh podría cambiar el tráfico a extremos en buen estado en el backend principal para intentar estabilizar el tráfico.
Si demasiados extremos del backend están en mal estado, los extremos restantes que no puedan manejar tráfico adicional. En este caso, se usa el umbral de fallas para decidir si se activa o no la conmutación por error. La malla de servicios de Cloud tolera mal estado hasta el umbral y, luego, aleja una parte del tráfico de de los backends principales a los de conmutación por error.
El umbral de estado de conmutación por error es un valor porcentual. El valor que establezcas determina cuándo Cloud Service Mesh dirige el tráfico a los backends de conmutación por error. Tú Puedes establecer el valor en un número entero entre 1 y 99. El valor predeterminado para La malla de servicios de Cloud es de 70 para Envoy y 50 para gRPC sin proxy. Un valor más alto inicia la conmutación por error de tráfico antes que un valor más bajo.
Soluciona problemas
Los patrones de distribución de tráfico pueden cambiar en función de cómo configures el nuevo
serviceLbPolicy
por el servicio de backend
Para depurar problemas de tráfico, usa los sistemas de supervisión existentes para examinar cómo fluye el tráfico a tus backends. Métricas de red y de la malla de servicios de Cloud adicionales puede ayudarte a comprender cómo se toman las decisiones de balanceo de cargas. Esta sección ofrece sugerencias generales de solución de problemas y mitigación.
En general, Cloud Service Mesh intenta asignar tráfico para mantener los backends en ejecución según su capacidad configurada. Ten en cuenta que esto no está garantizado. Tú puedes revisar la documentación del servicio de backend para obtener más información.
Luego, el tráfico se asigna según el algoritmo que uses. Por ejemplo, con el algoritmo de WATERFALL_BY_ZONE, Cloud Service Mesh intenta mantener el tráfico en la zona más cercana. Si revisas las métricas de red, verás Cloud Service Mesh prefiere un backend con la menor latencia de RTT cuando envía solicitudes a optimizar la latencia general de RTT.
En las siguientes secciones, se describen los problemas que podrías observar con la carga de servicios de balanceo de cargas y la configuración de backend preferida.
El tráfico se envía a MIG o NEG más distantes antes que a los más cercanos
Este es el comportamiento previsto cuando los backends preferidos se configuran con más MIG o NEG distantes. Si no deseas este comportamiento, cambia los valores en el campo de backends preferidos.
El tráfico no se envía a MIG o NEG que tienen muchos extremos en mal estado
Este es el comportamiento previsto cuando se desvían los MIG o NEG porque un
Se configuró autoCapacityDrain
. Con este parámetro de configuración, los MIG o NEG con muchos
los extremos en mal estado se quitarán de las decisiones
de balanceo de cargas y, por lo tanto, se
evitar. Si este comportamiento no es deseado, puedes inhabilitar la configuración de autoCapacityDrain
. Sin embargo, ten en cuenta que esto significa que el tráfico se puede enviar a MIG o NEG con muchos extremos en mal estado y, por lo tanto, las solicitudes pueden fallar con errores.
El tráfico no se envía a algunos MIG o NEG cuando se prefieren algunos MIG o NEG
Este es el comportamiento deseado si los MIG o NEG configurados como preferidos aún no alcanzaron la capacidad.
Cuando se configuran los backends preferidos y no alcanzan su límite de capacidad, el tráfico no se enviará a otros MIG o NEG. Los MIG o NEG preferidos se asignarán primero según la latencia de RTT a estos backends.
Si prefieres que el tráfico se envíe a otro lugar, puedes configurar su servicio de backend sin backends preferidos o con estimaciones de capacidad más conservadoras para los MIG o NEG preferidos.
El tráfico se envía a demasiados MIG o NEG distintos de una sola fuente
Este es el comportamiento deseado si se usa la propagación a región o a todo el mundo. Sin embargo, es posible que tengas problemas con una distribución más amplia de tu tráfico. Por ejemplo, las tasas de acierto de caché pueden reducirse a medida que los backends ven tráfico de una selección más amplia de clientes. En este caso, considera usar otros algoritmos, como cascada por región.
El tráfico se envía a un clúster remoto cuando cambia el estado del backend
Cuando failoverHealthThreshold
se establece en un valor alto, este es el valor deseado
de tu modelo. Si quieres que el tráfico permanezca en los backends principales cuando
cambios de estado transitorios, establece failoverHealthThreshold
en un valor más bajo.
Los extremos en buen estado se sobrecargan cuando algunos extremos no están en buen estado
Cuando failoverHealthThreshold
se establece en un valor bajo, este es el
de tu modelo. Cuando algunos extremos están en mal estado, el tráfico de estos extremos en mal estado
podría distribuirse entre los extremos restantes del mismo MIG o NEG. Si
si deseas que el comportamiento de conmutación por error se active antes de tiempo, configura failoverHealthThreshold
a un valor más alto.
Limitaciones y consideraciones
Aquí encontrarás limitaciones y consideraciones que debes tener en cuenta. cuando configuras el balanceo de cargas avanzado.
Cascada por zona
Durante los eventos de mantenimiento transparentes, es posible balanceado temporalmente fuera de la zona local.
Hay casos en los que algunos MIG o NEG están al límite de su capacidad, mientras que otros MIG o Los NEG en la misma región tienen poco uso.
Si el origen de tráfico del servicio se encuentra en la misma zona que su verás una reducción en el tráfico entre zonas.
Una zona se puede asignar a diferentes clústeres de hardware físico interno dentro de los centros de datos de Google, por ejemplo, debido a la virtualización de zonas. En este caso, es posible que las VMs en la misma zona no se carguen de manera uniforme. En general, se optimizará la latencia general.
Difusión a la región
Si los extremos en un MIG o NEG fallan, las consecuencias suelen ser distribuida entre un conjunto más grande de clientes; en otras palabras, un número mayor de los clientes en malla podrían verse afectados, pero de forma menos grave.
A medida que los clientes envían solicitudes a todos los MIG o NEG de la región, en algunos esto podría aumentar la cantidad de tráfico entre zonas.
La cantidad de conexiones abiertas a los extremos puede aumentar, lo que genera un aumento en el uso de recursos.
Backends preferidos
Los MIG o NEG configurados como backends preferidos pueden estar lejos del clientes potenciales y causar una mayor latencia promedio. Esto puede ocurrir incluso si hay otros MIG o NEG que podrían entregar contenido a los clientes con menor latencia.
Los algoritmos de balanceo de cargas globales (cascada por región, distribución en varias regiones y cascada por zona) no se aplican a los MIG ni a los NEG configurados como backends preferidos.
Desvío de capacidad automático
La cantidad mínima de MIG que nunca se desvían es diferente del de salida que se establece cuando se configura con
serviceLbPolicies
.De forma predeterminada, la cantidad mínima de MIG que nunca se desvían es 1.
Si se establece
serviceLbPolicies
, el porcentaje mínimo de MIG o NEG que nunca se agota es del 50%. En ambas configuraciones, un MIG o NEG se marca como no operativo si menos del 25% de las instancias o los extremos del MIG o NEG están en buen estado.Para que un MIG o NEG se desvíen después de un vaciado, al menos el 35% de instancias o extremos deben estar en buen estado. Esto es necesario para garantizar que un MIG o el NEG no vacila entre los estados de drenaje y sin drenar.
Aquí también se aplican las mismas restricciones para el escalador de capacidad de los backends que no usan un modo de balanceo.
¿Qué sigue?
- Para obtener instrucciones de configuración, consulta Configura el balanceo de cargas avanzado.