Diseño de sistemas resilientes


Este documento describe las mejores prácticas para diseñar sistemas resilientes en Compute Engine. Proporciona consejos generales y cubre algunas funciones de Compute Engine que pueden ayudar a mitigar el tiempo de inactividad de las instancias y prepararse para momentos en que sus instancias de Compute Engine fallen inesperadamente.

Un sistema resiliente es un sistema que puede soportar una cierta cantidad de fallas o interrupciones sin interrumpir su servicio ni afectar la experiencia de sus usuarios al utilizar su servicio. Si bien Compute Engine hace todo lo posible para evitar este tipo de interrupciones, ciertos eventos son impredecibles y es mejor estar preparado para ellos.

Tipos de fallas

En algún momento, es posible que una o más de sus instancias informáticas se pierdan debido a fallas del sistema o del hardware. La siguiente lista contiene algunos tipos de escenarios de error que puede mitigar:

Consejos para diseñar sistemas resilientes

Para ayudar a mitigar los fallos de las instancias informáticas, diseñe su aplicación para que sea resistente a fallos, interrupciones de la red y desastres inesperados. Un sistema resistente maneja las fallas con elegancia, por ejemplo, redirigiendo el tráfico de una instancia inaccesible a una instancia activa o automatizando tareas al reiniciar.

A continuación se ofrecen algunos consejos generales que le ayudarán a diseñar un sistema resistente a los fallos.

Utilice la migración en vivo

Google Cloud realiza periódicamente mantenimiento en su infraestructura parcheando los sistemas con el software más reciente, realizando pruebas de rutina y mantenimiento preventivo y, en general, garantizando que su infraestructura sea lo más segura, rápida y eficiente posible. Compute Engine emplea migración en vivo para garantizar que el mantenimiento de esta infraestructura sea transparente de forma predeterminada para sus instancias informáticas.

La migración en vivo es una tecnología que aleja sus instancias en ejecución de los sistemas que están a punto de someterse a trabajos de mantenimiento. Compute Engine hace esto automáticamente para los tipos de instancias admitidos.

Durante la migración en vivo, su instancia podría experimentar una disminución en el rendimiento durante un breve período de tiempo. Para las instancias que exigen un rendimiento máximo y constante, puede configurar las instancias para que se reinicien en otro host en lugar de someterse a una migración en vivo. Si eliges esta opción, Compute Engine detiene la instancia y la reinicia en un host que no esté involucrado en un evento de mantenimiento. Terminar y reiniciar la instancia es adecuado para aplicaciones generales que también están diseñadas para manejar fallas o reinicios de la instancia.

Para configurar sus instancias para la migración en vivo o configurarlas para que se reinicien en lugar de migrar, consulte Establecer la política de mantenimiento del host para una instancia informática .

Distribuye tus instancias

Cree instancias en más de una región y zona para tener instancias informáticas alternativas a las que señalar si se interrumpe una zona o región que contiene una de sus instancias. Si crea todas sus instancias en la misma zona o región, no podrá acceder a ninguna de esas instancias si esa zona o región se vuelve inaccesible.

Utilice nombres DNS internos específicos de la zona

Establezca el tipo de DNS interno predeterminado para su proyecto u organización en DNS zonal. En sus aplicaciones, utilice nombres DNS zonales al acceder a otras instancias informáticas. Los servidores DNS internos están distribuidos en todas las zonas, por lo que puede confiar en los nombres DNS zonales para resolver incluso si hay fallas en otras ubicaciones.

El DNS global es menos resistente debido a fallas en un solo punto. El DNS zonal mitiga el riesgo de interrupciones entre regiones. El DNS zonal no requiere que el nombre de la instancia sea único en todas las regiones de un proyecto, lo que permite una creación de instancias más rápida.

Para verificar si una instancia usa nombres DNS zonales o nombres DNS globales, consulte Determinar el nombre DNS interno para una VM .

Si su proyecto usa nombres DNS globales, puede cambiar y usar nombres DNS zonales. Para obtener más información, consulte Usar DNS zonal para su tipo de DNS interno .

Crear grupos de máquinas virtuales

Utilice grupos de instancias administrados para crear grupos homogéneos de máquinas virtuales para que los balanceadores de carga puedan dirigir el tráfico a más de una máquina virtual en caso de que una sola máquina virtual deje de funcionar.

Los grupos de instancias administrados (MIG) también ofrecen funciones como ajuste de escala automático y reparación automática . El escalado automático le permite hacer frente a picos de tráfico aumentando o reduciendo el número de máquinas virtuales en función de señales específicas. La reparación automática realiza comprobaciones de estado y, si es necesario, recrea automáticamente las máquinas virtuales en mal estado.

Los MIG también están disponibles para regiones, por lo que puede crear un grupo de máquinas virtuales distribuidas en varias zonas dentro de una sola región. Para obtener más información, consulte Creación y gestión de MIG regionales .

Usar equilibrio de carga

Google Cloud ofrece un servicio de equilibrio de carga que le ayuda a soportar períodos de mucho tráfico para no sobrecargar sus instancias informáticas. Con Cloud Load Balancing , puede hacer lo siguiente:

  • Implemente su aplicación en máquinas virtuales dentro de múltiples zonas utilizando MIG regionales . Luego, puede configurar una regla de reenvío que pueda distribuir el tráfico entre todas las máquinas virtuales en todas las zonas dentro de la región. Cada regla de reenvío puede definir un punto de entrada a su aplicación mediante una dirección IP externa.

  • Implemente máquinas virtuales en varias regiones mediante el equilibrio de carga global. El equilibrio de carga HTTP(S) permite que su tráfico ingrese al Google Cloud sistema en la ubicación más cercana al cliente. El equilibrio de carga entre regiones proporciona redundancia de modo que, si no se puede acceder a una región, el tráfico se desvía automáticamente a otra región. De esta manera, su servicio sigue siendo accesible utilizando la misma dirección IP externa.

  • Utilice el ajuste de escala automático para agregar o eliminar automáticamente máquinas virtuales de un MIG en función de los aumentos o disminuciones de la carga.

Además, Cloud Load Balancing ofrece verificación del estado de las VM, brindando soporte para detectar y manejar fallas de las VM.

Utilice scripts de inicio y apagado

Compute Engine ofrece scripts de inicio y apagado que se ejecutan cuando una instancia arranca o se apaga, respectivamente. Los scripts de inicio y apagado pueden automatizar tareas como instalar software, ejecutar actualizaciones, realizar copias de seguridad y registrar datos.

Tanto los scripts de inicio como los de cierre son una forma eficiente e invaluable de iniciar o cerrar limpiamente sus instancias. En lugar de configurar sus instancias usando imágenes personalizadas, puede resultar beneficioso configurar instancias usando scripts de inicio.

Los scripts de inicio se ejecutan cada vez que la instancia se reinicia o se reinicia debido a fallas y se pueden usar para instalar software y actualizaciones. También puede utilizar scripts de inicio para asegurarse de que los servicios se estén ejecutando dentro de la instancia. Codificar los cambios para configurar una instancia en un script de inicio suele ser más fácil que intentar averiguar qué archivos o bytes han cambiado en una imagen personalizada.

Los scripts de apagado se ejecutan cuando su instancia se cierra, ya sea intencionalmente o no. Pueden realizar tareas de último momento, como realizar copias de seguridad de datos, guardar registros y cerrar conexiones correctamente antes de detener una instancia.

Para obtener más información, consulte Ejecución de scripts de inicio y Ejecución de scripts de apagado .

Copia de seguridad de tus datos

Haga una copia de seguridad de sus datos con regularidad y en múltiples ubicaciones. Puede cargar sus archivos en Cloud Storage , crear instantáneas de disco o replicar sus datos en un disco en otra zona mediante replicación sincrónica o en otra región mediante replicación asincrónica .