Diseña sistemas resilientes


En este documento, se describen las prácticas recomendadas para diseñar sistemas resilientes en Compute Engine. Proporciona consejos generales y cubre algunas características en Compute Engine que pueden ayudar a mitigar el tiempo de inactividad de la instancia y a prepararse para los momentos en que las instancias de la máquina virtual (VM) fallan inesperadamente.

Un sistema resiliente es aquel que puede tolerar una cierta cantidad de fallas o alteraciones sin interrumpir el servicio ni afectar la experiencia del usuario. Si bien Compute Engine hace todo lo posible para evitar estas alteraciones, algunos eventos son impredecibles y lo mejor es estar preparado.

Tipos de fallas

En algún momento, una o varias de tus VM podrían perderse debido a fallas del sistema o del hardware. La siguiente lista contiene algunos tipos de situaciones de falla que puedes mitigar:

Sugerencias para diseñar sistemas resilientes

Para ayudar a mitigar las fallas de VM, diseña tu aplicación a fin de que sea resistente a las fallas, las interrupciones de red y los desastres inesperados. Un sistema resiliente controla las fallas con facilidad, por ejemplo, mediante el redireccionamiento del tráfico de una VM inaccesible a una VM en vivo o la automatización de tareas durante el reinicio.

A continuación, se detallan algunos consejos generales para diseñar un sistema resiliente frente a fallas.

Usa la migración en vivo

Google realiza el mantenimiento de su infraestructura de forma periódica. Para ello, aplica parches en los sistemas con el software más reciente, realiza pruebas de rutina y mantenimiento preventivo, y, en general, se asegura de que la infraestructura sea lo más segura, rápida y eficiente posible. Compute Engine usa la migración en vivo a fin de garantizar que el mantenimiento de esta infraestructura sea transparente de forma predeterminada para las VM.

La migración en vivo es una tecnología que mueve las VM en ejecución de los sistemas que están por someterse a trabajos de mantenimiento. Compute Engine hace esto de manera automática.

Durante la migración en vivo, tu VM puede experimentar una disminución del rendimiento por un corto período. Para las VM que exigen un rendimiento máximo y constante, puedes usar una configuración que se detenga y se reinicie en un host que no esté involucrado en un evento de mantenimiento. Esta opción es adecuada para las aplicaciones generales que también se compilan a fin de controlar fallas o reinicios de la VM.

Si quieres configurar las VM para la migración en vivo o a fin de que se reinicien en lugar de migrarse, consulta la sección Configura las opciones de programación de la instancia.

Distribuye tus VM

Crea VM en más de una región y zona para contar con VM alternativas a las que dirigir el tráfico si una zona o región que contiene una de tus VM se interrumpe. Si alojas todas tus VM en la misma zona o región, no podrás acceder a ninguna de esas si esa zona o región se vuelven inaccesibles.

Usa nombres de DNS internos específicos de la zona

Configura el tipo de DNS interno predeterminado para tu organización o proyecto en DNS zonal. En tus aplicaciones, usa nombres de DNS zonales cuando accedas a otras VMs. Los servidores DNS internos se distribuyen en todas las zonas, por lo que puedes confiar en los nombres de DNS zonales como solución, incluso si hay fallas en otras ubicaciones.

El DNS global es menos resiliente debido a fallas en un solo punto. El DNS zonal mitiga el riesgo de interrupciones interregionales. El DNS zonal no requiere que los nombres de VMs sean únicos en todas las regiones de un proyecto, lo que permite una creación de VMs más rápida.

Para verificar si una VM usa nombres de DNS zonales o globales, consulta la sección sobre cómo determinar el nombre de DNS interno de una instancia de VM.

Si tu proyecto usa nombres DNS globales, puedes cambiar a nombres DNS zonales. Para obtener más información, consulta la sección sobre cómo migrar a nombres de DNS zonales.

Crea grupos de VM

Usa grupos de instancias administrados a fin de crear grupos homogéneos de VM de modo que los balanceadores de cargas dirijan el tráfico a más de una instancia de VM en caso de que una sola VM esté en mal estado.

Los grupos de instancias administrados (MIG) también ofrecen funciones como el ajuste de escala automático y la reparación automática. El ajuste de escala automático te permite lidiar con los picos de tráfico mediante el aumento o la disminución de la cantidad de VM según señales específicas. La reparación automática realiza la verificación de estado y, si es necesario, vuelve a crear las VM en mal estado de forma automática.

Los MIG también están disponibles para las regiones, por lo que puedes crear un grupo de VM distribuidas en varias zonas dentro de una sola región. Para obtener más información, consulta Crea y administra MIG regionales.

Usa el balanceo de cargas

Google Cloud ofrece un servicio de balanceo de cargas que te permite soportar períodos de mucho tráfico para no sobrecargar tus instancias. Con Cloud Load Balancing, puedes hacer lo siguiente:

  • Implementar tu aplicación en VM dentro de varias zonas con MIG regionales. Luego, puedes configurar una regla de reenvío que distribuya el tráfico a todas las VM en todas las zonas dentro de la región. Cada regla de reenvío puede definir un punto de entrada a tu aplicación a través de una dirección IP externa.

  • Implementar VM en varias regiones a través del balanceo de cargas global. El balanceo de cargas de HTTP(S) permite que el tráfico ingrese al sistema de Google Cloud en la ubicación más cercana al cliente. El balanceo de cargas interregional brinda redundancia de modo que, si no puede accederse a una región, el tráfico se desvía a otra de forma automática. De esta manera, se puede acceder al servicio mediante la misma dirección IP externa.

  • Usa el ajuste de escala automático para agregar o borrar VM de forma automática de un MIG en función de los aumentos o las disminuciones en la carga

Además, Cloud Load Balancing ofrece verificaciones de estado de VM, lo que proporciona asistencia para detectar y manejar las fallas de la VM.

Usa secuencias de comandos de inicio y apagado

Compute Engine ofrece secuencias de comandos de inicio y de apagado que se ejecutan cuando una VM se inicia o se cierra, respectivamente. Con las secuencias de comandos de inicio y cierre, se pueden automatizar tareas como instalar software, ejecutar actualizaciones, hacer copias de seguridad y registrar datos.

Las secuencias de comandos de inicio y de apagado son una forma invaluable y eficiente de arrancar o cerrar las VM de manera correcta. En lugar de configurar tus VM con imágenes personalizadas, puede resultar beneficioso configurarlas con secuencias de comandos de inicio.

Las secuencias de comandos de inicio se ejecutan cada vez que se reinicia la VM debido a fallas, y se pueden usar para instalar software y actualizaciones. También puedes usar secuencias de comandos de inicio para asegurarte de que los servicios se ejecuten dentro de la VM. Codificar los cambios para configurar una VM en una secuencia de comandos de inicio a menudo es más fácil que intentar averiguar qué archivos o bytes cambiaron en una imagen personalizada.

Las secuencias de comandos de apagado se ejecutan cuando la VM se apaga, ya sea de forma intencional o no. Pueden realizar tareas de último minuto, como crear copias de seguridad de los datos, guardar registros y cerrar conexiones de forma correcta antes de detener una VM.

Para obtener más información, consulta Ejecuta secuencias de comandos de inicio y Ejecuta secuencias de comandos de cierre.

Crea una copia de seguridad de los datos

Crea una copia de seguridad de los datos con regularidad y en varias ubicaciones. Puedes cargar tus archivos a Cloud Storage, crear instantáneas de discos persistentes o replicar los datos en un disco persistente en otra región o zona.