Gestionar el tráfico y la carga de las cargas de trabajo en Google Cloud

Last reviewed 2024-11-20 UTC

Cuando ejecutas un stack de aplicaciones en recursos distribuidos en la nube, el tráfico de red debe enrutarse de forma eficiente a los recursos disponibles en varias ubicaciones. En esta parte de la Google Cloud guía de fiabilidad de la infraestructura se describen las técnicas de gestión del tráfico y de la carga que puedes usar para mejorar la fiabilidad de tus cargas de trabajo en la nube.

Planificación de la capacidad

Para asegurarte de que tu aplicación implementada en Google Cloud tiene recursos de infraestructura suficientes, debes estimar la capacidad necesaria y gestionar la capacidad implementada. En esta sección se proporcionan directrices para ayudarte a planificar y gestionar la capacidad.

Previsión de la carga de la aplicación

Cuando preveas la carga, ten en cuenta factores como el número de usuarios y la velocidad a la que la aplicación puede recibir solicitudes. En tus previsiones, ten en cuenta las tendencias de carga históricas, las variaciones estacionales, los picos de carga durante eventos especiales y el crecimiento impulsado por cambios en la empresa, como la expansión a nuevas zonas geográficas.

Estimar los requisitos de capacidad

En función de la arquitectura de tu implementación y teniendo en cuenta los objetivos de rendimiento y fiabilidad de tu aplicación, calcula la cantidad deGoogle Cloud recursos que necesitas para gestionar la carga prevista. Por ejemplo, si tienes previsto usar grupos de instancias gestionados (MIGs) de Compute Engine, decide el tamaño de cada MIG, el tipo de máquina de la VM y el número, el tipo y el tamaño de los discos persistentes. Puedes usar la Google Cloud calculadora de precios para estimar el coste de los Google Cloud recursos.

Planifica una redundancia adecuada

Cuando estime los requisitos de capacidad, proporcione una redundancia adecuada para cada componente de la pila de aplicaciones. Por ejemplo, para conseguir una redundancia N+1, todos los componentes de la pila de aplicaciones deben tener al menos un componente redundante más allá del mínimo necesario para gestionar la carga prevista.

Comparar la aplicación

Realiza pruebas de carga para determinar la eficiencia de los recursos de tu aplicación. La eficiencia de los recursos es la relación entre la carga de la aplicación y los recursos que consume, como la CPU y la memoria. La eficiencia de los recursos de una aplicación puede deteriorarse cuando la carga es excepcionalmente alta, y la eficiencia puede cambiar con el tiempo. Realiza las pruebas de carga en condiciones de carga normal y máxima, y repite las pruebas de rendimiento a intervalos regulares.

Gestionar cuotas

LasGoogle Cloud cuotas de servicio son límites por proyecto que te ayudan a controlar el consumo de recursos en la nube. Hay dos tipos de cuotas: las cuotas de recursos, que son los recursos máximos que puedes crear, como el número de clústeres de Google Kubernetes Engine (GKE) regionales en una región. Las cuotas de frecuencia limitan el número de solicitudes a la API que se pueden enviar a un servicio en un periodo concreto. Las cuotas pueden ser zonales, regionales o globales. Consulta las cuotas de recursos y las cuotas de frecuencia de llamadas a las APIs actuales de los servicios que tienes previsto usar en tus proyectos. Asegúrate de que las cuotas sean suficientes para la capacidad que necesitas. Cuando sea necesario, puedes solicitar un valor de cuota más alto.

Reservar capacidad de computación

Para asegurarte de que la capacidad de los recursos de Compute Engine esté disponible cuando sea necesario, puedes crear reservas. Las reservas proporcionan capacidad asegurada en una zona específica para un número determinado de máquinas virtuales de un tipo de máquina que elijas. Una reserva puede ser específica de un proyecto o compartirse entre varios proyectos. Para obtener más información sobre las reservas, consulta Elegir un tipo de reserva.

Monitorizar la utilización y volver a evaluar los requisitos periódicamente

Una vez que hayas implementado los recursos necesarios, monitoriza la utilización de la capacidad. Puede que encuentres oportunidades para optimizar los costes eliminando los recursos inactivos. Reevalúa periódicamente los requisitos de capacidad y ten en cuenta los cambios en el comportamiento, el rendimiento y los objetivos de fiabilidad de la aplicación, la carga de usuarios y tu presupuesto de TI.

Autoescalado

Cuando ejecutas una aplicación en recursos distribuidos en varias ubicaciones, la aplicación sigue estando disponible durante las interrupciones en una de las ubicaciones. Además, la redundancia ayuda a garantizar que los usuarios disfruten de un comportamiento de la aplicación coherente. Por ejemplo, cuando hay un pico de carga, los recursos redundantes aseguran que la aplicación siga funcionando a un nivel predecible. Sin embargo, cuando la carga de la aplicación es baja, la redundancia puede provocar que los recursos de la nube se utilicen de forma ineficiente.

Por ejemplo, el componente del carrito de la compra de una aplicación de comercio electrónico podría tener que procesar los pagos del 99,9% de los pedidos en un plazo de 200 milisegundos después de la confirmación del pedido. Para cumplir este requisito durante los periodos de carga elevada, puede que tengas que aprovisionar capacidad de computación y almacenamiento redundantes. Sin embargo, cuando la carga de la aplicación es baja, una parte de la capacidad aprovisionada puede quedar sin usar o infrautilizada. Para eliminar los recursos no utilizados, debes monitorizar la utilización y ajustar la capacidad. El autoescalado te ayuda a gestionar la capacidad de la nube y a mantener el nivel de disponibilidad necesario sin la sobrecarga operativa que supone gestionar recursos redundantes. Cuando aumenta la carga de tu aplicación, el escalado automático ayuda a mejorar la disponibilidad de la aplicación aprovisionando recursos adicionales automáticamente. En periodos de poca carga, el escalado automático elimina los recursos que no se usan y ayuda a reducir los costes.

Algunos Google Cloud servicios, como Compute Engine, te permiten configurar el escalado automático de los recursos que aprovisiones. Los servicios gestionados, como Cloud Run, pueden escalar la capacidad automáticamente sin que tengas que configurar nada. Estos son algunos ejemplos de Google Cloud servicios que admiten el escalado automático. Esta lista no es exhaustiva.

  • Compute Engine: los MIGs te permiten escalar automáticamente las aplicaciones sin estado que se han desplegado en máquinas virtuales de Compute Engine para que la capacidad se ajuste a la carga actual. Para obtener más información, consulta Grupos de instancias con autoescalado.
  • GKE: puedes configurar clústeres de GKE para que cambien automáticamente el tamaño de los grupos de nodos en función de la carga actual. Para obtener más información, consulta Escalador automático de clústeres. En los clústeres de GKE que aprovisiones en el modo Autopilot, GKE escala automáticamente los nodos y las cargas de trabajo en función del tráfico.
  • Cloud Run: los servicios que aprovisionas en Cloud Run se escalan horizontalmente de forma automática al número de instancias de contenedor necesarias para gestionar la carga actual. Cuando la aplicación no tiene carga, el servicio reduce automáticamente el número de instancias de contenedor a cero. Para obtener más información, consulta Información sobre el autoescalado de instancias de contenedor.
  • Cloud Run Functions: cada solicitud a una función se asigna a una instancia de la función. Si el volumen de solicitudes entrantes supera el número de instancias de función existentes, Cloud Run Functions inicia automáticamente nuevas instancias de la función. Para obtener más información, consulta el artículo sobre el entorno de ejecución de las funciones de Cloud Run.
  • Bigtable: cuando creas un clúster en una instancia de Bigtable, puedes configurarlo para que se escale automáticamente. Bigtable monitoriza la carga de CPU y almacenamiento, y ajusta el número de nodos del clúster para mantener los índices de utilización objetivo que especifiques. Para obtener más información, consulta Autoescalado de Bigtable.
  • Dataproc Serverless: cuando envías una carga de trabajo por lotes de Apache Spark, Dataproc Serverless escala dinámicamente los recursos de la carga de trabajo, como el número de ejecutores, para ejecutar la carga de trabajo de forma eficiente. Para obtener más información, consulta Autoescalado de Dataproc Serverless para Spark.

Balanceo de carga

El balanceo de carga ayuda a mejorar la fiabilidad de las aplicaciones al dirigir el tráfico solo a los recursos disponibles y al asegurarse de que los recursos individuales no estén sobrecargados.

Ten en cuenta las siguientes recomendaciones de diseño relacionadas con la fiabilidad al elegir y configurar balanceadores de carga para tu implementación en la nube.

Balancear la carga del tráfico interno

Configura el balanceo de carga para el tráfico entre los niveles de la pila de la aplicación, así como para el tráfico entre los clientes externos y la aplicación. Por ejemplo, en una pila de aplicaciones web de tres niveles, puedes usar un balanceador de carga interno para que la comunicación entre los niveles web y de aplicación sea fiable.

Elegir un tipo de balanceador de carga adecuado

Para balancear la carga del tráfico externo a una aplicación distribuida en varias regiones, puedes usar un balanceador de carga global o varios balanceadores de carga regionales. Para obtener más información, consulta Ventajas y riesgos del balanceo de carga global en implementaciones multirregión.

Si los backends están en una sola región y no necesitas las funciones del balanceo de carga global, puedes usar un balanceador de carga regional, que es resistente a las interrupciones de las zonas.

Cuando elijas el tipo de balanceador de carga, ten en cuenta otros factores además de la disponibilidad, como el control geográfico de la finalización de TLS, el rendimiento, el coste y el tipo de tráfico. Para obtener más información, consulta Elegir un balanceador de carga.

Configurar comprobaciones del estado

El escalado automático ayuda a asegurar que tus aplicaciones tengan los recursos de infraestructura adecuados para gestionar la carga actual. Sin embargo, incluso cuando hay suficientes recursos de infraestructura, es posible que una aplicación o algunas de sus partes no respondan. Por ejemplo, todas las VMs que alojan tu aplicación pueden estar en el estado RUNNING. Sin embargo, es posible que el software de aplicación implementado en algunas de las máquinas virtuales haya fallado. Las comprobaciones del estado del balanceo de carga aseguran que los balanceadores de carga solo dirijan el tráfico de la aplicación a los backends que responden. Si tus backends son grupos de instancias gestionados, considera la posibilidad de configurar una capa adicional de comprobaciones de estado para reparar automáticamente las máquinas virtuales que no estén disponibles. Cuando se configura la reparación automática en un MIG, las VMs no disponibles se eliminan de forma proactiva y se crean VMs nuevas.

Límite de frecuencia

En ocasiones, tu aplicación puede experimentar un aumento rápido o sostenido de la carga. Si la aplicación no está diseñada para gestionar el aumento de la carga, es posible que la aplicación o los recursos que utiliza fallen, lo que hará que la aplicación no esté disponible. El aumento de la carga puede deberse a solicitudes maliciosas, como ataques de denegación de servicio distribuido (DDoS) basados en la red. También se puede producir un aumento repentino de la carga por otros motivos, como errores de configuración en el software del cliente. Para asegurarte de que tu aplicación pueda gestionar una carga excesiva, considera la posibilidad de aplicar mecanismos de limitación de frecuencia adecuados. Por ejemplo, puedes definir cuotas para el número de solicitudes de API que puede recibir un servicio Google Cloud .

Las técnicas de limitación de frecuencia también pueden ayudar a optimizar el coste de tu infraestructura en la nube. Por ejemplo, si defines cuotas a nivel de proyecto para recursos específicos, puedes limitar la facturación que puede generar el proyecto para esos recursos.

Nivel de servicio de red

Google Cloud Los niveles de servicio de red te permiten optimizar la conectividad entre los sistemas de Internet y tus Google Cloud cargas de trabajo. Si tienes aplicaciones que ofrecen servicios a usuarios de todo el mundo y tienen backends en más de una región, elige el nivel Premium. El tráfico de Internet entra en la red de alto rendimiento de Google por el punto de presencia (PoP) más cercano al sistema de envío. Dentro de la red de Google, el tráfico se enruta desde el PoP de entrada al Google Cloud recurso correspondiente, como una máquina virtual de Compute Engine. El tráfico saliente se envía a través de la red de Google y sale por el PoP más cercano al destino. Este método de enrutamiento ayuda a mejorar la percepción de la disponibilidad de los usuarios al reducir el número de saltos de red entre los usuarios y los PoPs más cercanos.