Diseña sistemas sólidos

En este documento, se describen las prácticas recomendadas para diseñar sistemas sólidos en Compute Engine. Se brindan consejos generales y se tratan algunas funciones de Compute Engine que pueden ayudar a mitigar el tiempo de inactividad de las instancias y prepararse para los momentos en que las instancias de tu máquina virtual (VM) sufren una falla inesperada.

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

A fin de ayudar a mitigar las fallas de las instancias, debes diseñar tu aplicación en el servicio de Google Compute Engine para una mayor solidez en caso de fallas, interrupciones de la 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 aplicando parches en los sistemas con el software más reciente, realizando pruebas de rutina y mantenimiento preventivo, y, en general, asegurándose de que la infraestructura sea lo más segura, rápida y eficiente posible. Compute Engine utiliza 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 desplazar 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 para que se reinicien en lugar de migrarse, consulta la sección sobre cómo configurar 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 siguiente formato:

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

en el que:

  • [INSTANCE_NAME] es el nombre de la instancia.
  • [ZONE] es la zona donde 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 a fin de crear grupos homogéneos de instancias 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 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, recrea 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 Platform 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, podrás 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 HTTP(S) permite que el tráfico ingrese al sistema de Google Cloud Platform 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íe a otra de forma automática para que el servicio permanezca accesible a través de la misma dirección IP externa.

  • Utilizar el ajuste de escala automático para agregar o borrar instancias de forma automática de un grupo de instancias administrado en función de aumentos o disminuciones en 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 de SO personalizadas, puede resultar beneficioso configurarlas con secuencias de comandos de inicio. Las secuencias de comandos de inicio se ejecutan cada vez que la instancia se reinicia debido a fallas. Se pueden usar para instalar software y actualizaciones, y para garantizar que los servicios se ejecuten dentro de la VM. Codificar los cambios a fin de configurar una instancia en una secuencia de comandos de inicio es más fácil que tratar de averiguar qué archivos o bytes se modificaron 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 las secciones cobre cómo ejecutar secuencias de comandos de inicio y cómo ejecutar secuencias de comandos de apagado.

Crea una copia de seguridad de los datos

Haz una copia de seguridad de los datos con regularidad y en varias ubicaciones. Puedes hacer una copia de seguridad de los archivos en Google Cloud Storage, crear instantáneas de disco persistente o replicar los datos en un disco persistente en otra región o zona.

Realiza los siguientes pasos para copiar archivos de una instancia en Google Cloud Storage:

  1. Regístrate en la instancia:

    gcloud compute ssh example-instance
    
  2. Si nunca utilizaste 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 Google Cloud Storage, puedes omitir este paso y el siguiente.

  3. Sigue las instrucciones para autenticarte en Google Cloud Storage.

  4. Copia tus datos a Google 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 en una computadora local. Para obtener más información, consulta la sección sobre cómo copiar archivos hacia o desde una instancia.

Qué sigue

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine