Cuando ejecutas una pila de aplicaciones en recursos distribuidos en la nube, el tráfico de red debe enrutarse de manera eficiente a los recursos disponibles en varias ubicaciones. En esta parte de la guía de confiabilidad de infraestructura de Google Cloud, se describen las técnicas de administración del tráfico y la carga que puedes usar para mejorar la confiabilidad de tus cargas de trabajo en la nube.
Planificación de la capacidad
Para asegurarte de que la aplicación implementada en Google Cloud tenga los recursos de infraestructura adecuados, debes estimar la capacidad necesaria y administrar la capacidad implementada. En esta sección, se proporcionan lineamientos para ayudarte a planificar y administrar la capacidad.
Prevé la carga de la aplicación
Cuando preves la carga, ten en cuenta factores como la cantidad de usuarios y la velocidad a la que la aplicación puede recibir solicitudes. En tus previsiones, considera las tendencias de carga históricas, las variaciones estacionales, los aumentos repentinos de carga durante eventos especiales y el crecimiento generado por los cambios empresariales, como la expansión a geografías nuevas.
Estima los requisitos de capacidad
Según la arquitectura de implementación y el objetivo de rendimiento y la confiabilidad de tu aplicación, calcula la cantidad de recursos de Google Cloud necesarios para manejar la carga esperada. Por ejemplo, si planeas usar grupos de instancias administrados de Compute Engine (MIG), decide el tamaño de cada MIG, tipo de máquina de VM y cantidad, tipo y tamaño de los discos persistentes. Puedes usar la calculadora de precios de Google Cloud para estimar el costo de los recursos de Google Cloud.
Planifica la redundancia adecuada
Cuando estimes los requisitos de capacidad, proporciona una redundancia adecuada para cada componente de la pila de aplicaciones. Por ejemplo, para lograr la redundancia N+1, cada componente de la pila de aplicaciones debe tener al menos un componente redundante más allá del mínimo necesario para manejar la carga de previsión.
Compara la aplicación
Ejecuta 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 en la aplicación y los recursos que consume la aplicación, 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 normales y máximas, y repite las pruebas de comparativas en intervalos regulares.
Administra las cuotas
Las quotas de los servicios de Google Cloud son límites por proyecto, lo que te ayuda a controlar el consumo de los recursos de la nube. Las cuotas son de dos tipos: las cuotas de recursos son los recursos máximos que puedes crear, como la cantidad de clústeres de Google Kubernetes Engine (GKE) regionales en una región. Las cuotas de frecuencia limitan la cantidad de solicitudes a la API que se pueden enviar a un servicio en un período específico. Las cuotas pueden ser zonales, regionales o globales. Revisa las cuotas actuales de recursos y las cuotas de tarifa de API para los servicios que planeas usar en tus proyectos. Asegúrate de que las cuotas sean suficientes para la capacidad que necesitas. Cuando sea necesario, puedes solicitar un aumento de cuota.
Reserva la capacidad de procesamiento
Para asegurarte de que la capacidad de los recursos de Compute Engine esté disponible cuando sea necesario, puedes crear reservas. Una reserva proporciona capacidad garantizada en una zona específica para una cantidad específica de VMs de un tipo de máquina que elijas. Una reserva puede ser específica de un proyecto o compartirse en varios proyectos. Para obtener más información sobre las reservas, incluidas las consideraciones de facturación, consulta Reservas de recursos zonales de Compute Engine.
Supervisa el uso y vuelve a evaluar los requisitos de forma periódica
Después de implementar los recursos necesarios, supervisa el uso de capacidad. Es posible que encuentres oportunidades para optimizar los costos mediante la eliminación de los recursos inactivos. Vuelve a evaluar periódicamente los requisitos de capacidad y considera cualquier cambio en el comportamiento de la aplicación, los objetivos de rendimiento y confiabilidad, la carga del usuario y el presupuesto de TI.
Ajuste de escala automático
Cuando ejecutas una aplicación en recursos que se distribuyen en varias ubicaciones, la aplicación permanece disponible durante las interrupciones en una de las ubicaciones. Además, la redundancia ayuda a garantizar que los usuarios experimenten un comportamiento coherente de la aplicación. Por ejemplo, cuando hay un aumento en la carga, los recursos redundantes garantizan que la aplicación siga funcionando a un nivel predecible. Pero cuando la carga en la aplicación es baja, la redundancia puede provocar un uso ineficiente de los recursos de la nube.
Por ejemplo, es posible que el componente del carrito de compras de una aplicación de comercio electrónico necesite procesar pagos para el 99.9% de los pedidos dentro de los 200 milisegundos después de la confirmación del pedido. Para cumplir con este requisito durante los períodos de carga alta, puedes aprovisionar capacidad de procesamiento y almacenamiento redundante. Pero cuando la carga en la aplicación es baja, es posible que una parte de la capacidad aprovisionada permanezca sin uso o se use poco. Para quitar los recursos que no se usan, debes supervisar el uso y ajustar la capacidad. El ajuste de escala automático te ayuda a administrar la capacidad de la nube y a mantener el nivel requerido de disponibilidad sin la sobrecarga operativa de administrar recursos redundantes. Cuando la carga en tu aplicación aumenta, el ajuste de escala automático ayuda a mejorar la disponibilidad de la aplicación mediante el aprovisionamiento de recursos adicionales de forma automática. Durante los períodos de carga baja, el ajuste de escala automático quita los recursos que no se usan y ayuda a reducir los costos.
Algunos servicios de Google Cloud, como Compute Engine, te permiten configurar el ajuste de escala automático para los recursos que aprovisiones. Los servicios administrados, como Cloud Run, pueden escalar la capacidad de forma automática sin que tengas que configurar nada. Los siguientes son ejemplos de servicios de Google Cloud que admiten el ajuste de escala automático. Esta lista no es exhaustiva.
- Compute Engine: Los MIG te permiten escalar aplicaciones sin estado que se implementan en las VMs de Compute Engine de forma automática para hacer coincidir la capacidad con la carga actual. Si quieres obtener más información, consulta Ajuste de escala automático para grupos de instancias.
- GKE: Puedes configurar los clústeres de GKE para cambiar de forma automática el tamaño de los grupos de nodos a fin de que coincidan con la carga actual. Para obtener más información, consulta Escalador automático del clúster. Para los clústeres de GKE que aprovisionas en el modo Autopilot, GKE escala de forma automática los nodos y las cargas de trabajo en función del tráfico.
- Cloud Run: Los servicios que aprovisionas en Cloud Run escalan de forma automática a la cantidad de instancias de contenedor necesarias para manejar la carga actual. Cuando la aplicación no tiene carga, el servicio escala automáticamente en cero la cantidad de instancias de contenedor. Para obtener más información, consulta Acerca del ajuste de escala automático de instancias de contenedor.
- Cloud Functions: Cada solicitud a una función se asigna a una instancia de la función. Si el volumen de solicitudes entrantes excede la cantidad de instancias de función existentes, Cloud Functions inicia de forma automática instancias nuevas de la función. Para obtener más información, consulta Entorno de ejecución de Cloud Functions.
- Bigtable: Cuando creas un clúster en una instancia de Bigtable, puedes configurarlo para que realice ajustes de escala automáticos. Bigtable supervisa la carga de almacenamiento y CPU, y ajusta la cantidad de nodos en el clúster para mantener las tasas de uso objetivo que especifiques. Para obtener más información, consulta Ajuste de escala automático de Bigtable.
- Dataproc sin servidores: Cuando envías una carga de trabajo por lotes de Apache Spark, Dataproc sin servidores escala de forma dinámica los recursos de la carga de trabajo, como la cantidad de ejecutores para ejecutarla de manera eficaz. Si deseas obtener más información, consulta Dataproc sin servidores para el ajuste de escala automático de Spark.
Balanceo de cargas
El balanceo de cargas ayuda a mejorar la confiabilidad de la aplicación, ya que enruta el tráfico solo a los recursos disponibles y garantiza que los recursos individuales no se sobrecarguen.
Ten en cuenta las siguientes recomendaciones de diseño relacionadas con la confiabilidad cuando elijas y configures balanceadores de cargas para la implementación en la nube.
Balanceo de cargas del tráfico interno
Configura el balanceo de cargas para el tráfico entre los niveles de la pila de aplicaciones, no solo para el tráfico entre los clientes externos y la aplicación. Por ejemplo, en una pila de aplicación web de 3 niveles, puedes usar un balanceador de cargas interno para una comunicación confiable entre los niveles web y de la aplicación.
Elige un tipo de balanceador de cargas adecuad
Para balancear las cargas del tráfico externo a una aplicación que se distribuye en varias regiones, puedes usar un balanceador de cargas global o varios balanceadores de cargas regionales. Si deseas obtener más información, consulta Beneficios y riesgos del balanceo de cargas global para implementaciones multirregionales.
Si los backends están en una sola región y no necesitas las funciones del balanceo de cargas global, puedes usar un balanceador de cargas regional, que sea resistente a las interrupciones zonales.
Cuando elijas el tipo de balanceador de cargas, considera otros factores además de la disponibilidad, como el control geográfico sobre la finalización de TLS, el rendimiento, el costo y el tipo de tráfico. Para obtener más información, consulta Cómo elegir un balanceador de cargas.
Configura las verificaciones de estado
El ajuste de escala automático ayuda a garantizar que tus aplicaciones tengan los recursos de infraestructura
adecuados para manejar la carga actual. Pero incluso cuando existen suficientes recursos de infraestructura, una aplicación o partes de ella podrían no responder. Por ejemplo, todas las VMs que alojan tu aplicación pueden estar en el estado RUNNING
. Sin embargo, el software de aplicación que se implementa en algunas de las VMs podría fallar.
Las verificaciones de estado del balanceo de cargas garantizan que los balanceadores de cargas enruten el tráfico de la aplicación solo a los backends que sean receptivos. Si tus backends son MIG, considera configurar una capa adicional de verificaciones de estado para la reparación automática de las VMs que no están disponibles. Cuando se configura la reparación automática para un MIG, las VMs no disponibles se borran de forma proactiva y se crean VMs nuevas.
Límite de frecuencia
A veces, la aplicación puede experimentar un aumento rápido o continuo en la carga. Si la aplicación no está diseñada para manejar la mayor carga, la aplicación o los recursos que usa puede fallar, lo que hace 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 (DSD) basados en la red. También puede ocurrir un aumento repentino en la carga debido a otras razones, como errores de configuración en el software del cliente. Para garantizar que tu aplicación pueda manejar una carga excesiva, considera aplicar mecanismos de límite de frecuencia adecuados. Por ejemplo, puedes establecer cuotas para la cantidad de solicitudes a la API que puede recibir un servicio de Google Cloud.
Las técnicas de límite de frecuencia también pueden ayudar a optimizar el costo de tu infraestructura de nube. Por ejemplo, si configuras las cuotas a nivel de proyecto para recursos específicos, puedes limitar la facturación que el proyecto puede generar en esos recursos.
Nivel de servicio de red
Los niveles de servicio de red de Google Cloud te permiten optimizar la conectividad entre los sistemas en Internet y las cargas de trabajo de Google Cloud. Elige el nivel Premium para las aplicaciones que entregan servicios a nivel global y tienen backends en más de una región. El tráfico de Internet ingresa a la red de Google de alto rendimiento en el punto de presencia (PoP) más cercano al sistema que lo envía. Dentro de la red de Google, el tráfico se enruta desde el PoP de entrada al recurso de Google Cloud adecuado, como una VM de Compute Engine. El tráfico de salida se envía a través de la red de Google y sale desde el PoP más cercano al destino. Este método de enrutamiento ayuda a mejorar la percepción de disponibilidad de los usuarios, ya que reduce la cantidad de saltos de red entre los usuarios y los PoPs más cercanos a ellos.