Diseña sistemas sólidos

En este documento, se describen las prácticas recomendadas para diseñar sistemas sólidos 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 sólido 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.

Comprende los tipos de fallas

En algún momento, una o varias de tus instancias de VM podrían perderse debido a fallas del sistema o del hardware. Algunas de esas fallas son las siguientes:

Sugerencias para diseñar sistemas sólidos

Para ayudar a mitigar las fallas de las instancias, debes diseñar tu aplicación en el servicio de Compute Engine a fin de que sea sólida ante fallas, interrupciones de red y desastres inesperados. Un sistema sólido debería ser capaz de manejar las fallas correctamente, incluida la redirección del tráfico de una instancia caída a una instancia en vivo o la automatización de tareas durante el reinicio.

A continuación, se detallan algunos consejos generales para diseñar un sistema sólido 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 instancias de tu máquina virtual.

La migración en vivo es una tecnología que Google creó para trasladar las instancias 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 instancia puede experimentar una disminución del rendimiento durante un corto período. También tienes la opción de configurar las instancias de la máquina virtual para que finalicen y se reinicien lejos del evento de mantenimiento. Esta opción es adecuada para las instancias que exigen un rendimiento máximo y constante y, también, para los casos en que la aplicación en general esté diseñada para manejar fallas o reinicios de instancias.

Si quieres configurar las máquinas virtuales 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.

Para obtener más información sobre la migración en vivo, consulta la documentación sobre la migración en vivo.

Distribuye tus instancias

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

Usa nombres de DNS internos específicos de la zona

Si usas nombres de DNS o nombres de instancia internos para acceder a las instancias en tu red interna de Compute Engine, usa nombres de DNS zonales. 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. Un nombre de dominio interno completamente calificado (FQDN) para una instancia tiene el formato siguiente:

  • Instancias que usan DNS zonales: [INSTANCE_NAME].[ZONE].c.[PROJECT_ID].internal
  • Instancias que usan un DNS global: [INSTANCE_NAME].c.[PROJECT_ID].internal

En el ejemplo anterior, se ilustra lo siguiente:

  • [INSTANCE_NAME] es el nombre de la instancia.
  • [ZONE] es la zona en la que se encuentra la instancia.
  • [PROJECT_ID] es el proyecto al que pertenece la instancia.

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

Si en el proyecto se utilizan nombres de DNS globales, puedes preparar las aplicaciones con nombres de DNS zonales y rutas de búsqueda. Para obtener más información, consulta la sección sobre cómo migrar a nombres de DNS zonales.

Crea grupos de instancias

Usa grupos de instancias administrados para crear grupos homogéneos de instancias, de modo que los balanceadores de cargas puedan dirigir el tráfico a más de una instancia de VM en caso de que alguna esté en mal estado.

Los grupos de instancias administrados 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 instancias de VM según señales específicas, mientras que la reparación automática realiza la verificación de estado y, si es necesario, vuelve a crear las instancias en mal estado de forma automática.

El grupo de instancias administrado también está disponible para regiones, por lo que puedes crear un grupo de instancias de VM distribuidas en varias zonas dentro de una sola región. Para obtener más información, consulta Distribuye instancias mediante grupos de instancias regionales administrados.

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 el servicio de balanceo de cargas, puedes hacer lo siguiente:

  • Implementar tu aplicación en instancias dentro de varias zonas con grupos de instancias regionales administrados. Luego, puedes configurar una regla de reenvío que distribuya el tráfico a todas las instancias de máquina virtual 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 instancias 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 para que el servicio permanezca accesible a través de la misma dirección IP externa.

  • Usar el ajuste de escala automático para agregar instancias a un grupo de instancias administrado o quitarlas de este automáticamente según aumente o disminuya la carga.

Además, el servicio de balanceo de cargas ofrece la verificación de estado de la VM, lo que proporciona asistencia para detectar y manejar las fallas de la instancia.

Para obtener más información, consulta la descripción general del balanceo de cargas y la documentación del balanceo de cargas.

Usa secuencias de comandos de inicio y apagado

Compute Engine ofrece secuencias de comandos de inicio y de apagado que se ejecutan cuando una instancia se inicia o se cierra, respectivamente. Estas secuencias de comandos pueden automatizar tareas como instalar software, ejecutar actualizaciones, hacer copias de seguridad, registrar datos, etc., cuando la instancia se inicia por primera vez o cuando se cierra, ya sea de forma intencional o no.

Las secuencias de comandos de inicio y de apagado son una forma invaluable y eficiente de arrancar o cerrar las instancias de manera correcta. En lugar de configurar tus instancias 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 instancia debido a fallas, y se pueden usar para instalar software y actualizaciones, como también garantizar que los servicios se ejecuten dentro de la VM. Codificar los cambios para configurar una instancia en una secuencia de comandos de inicio es más fácil que intentar averiguar qué archivos o bytes cambiaron en una imagen personalizada.

Las secuencias de comandos de apagado pueden realizar tareas de último minuto, como crear copias de seguridad de los datos, guardar registros y finalizar conexiones de forma correcta antes de detener una instancia.

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 hacer una copia de seguridad de los archivos en Cloud Storage, crear instantáneas de discos persistentes o replicar los datos en un disco persistente en otra región o zona.

Para copiar archivos de una instancia a Cloud Storage, realiza lo siguiente:

  1. Regístrate en la instancia:

    gcloud compute ssh example-instance
    
  2. Si nunca usaste la herramienta gsutil en esta instancia, configura tus credenciales.

    gcloud init
    

    De forma alternativa, si configuraste la instancia para usar una cuenta de servicio con un alcance de Cloud Storage, puedes omitir este paso y el siguiente.

  3. Sigue las instrucciones para autenticar en Cloud Storage.

  4. Copia tus datos a Cloud Storage mediante el siguiente comando:

    gsutil cp <file1> <file2> <file3> ...  gs://<your bucket>
    

También puedes usar la herramienta gcloud compute para copiar archivos a una computadora local. Para obtener más información, consulta la sección sobre cómo copiar archivos hacia una instancia o desde ella.

Próximos pasos