Cómo migrar instancias entre clústeres de DreamCompute

Generalidades

DreamCompute ofrece múltiples clústeres (también llamados a menudo zonas de disponibilidad) que son instalaciones independientes de OpenStack con sus propios servidores, almacenamiento y panel de control. Algunos clústeres tienen características diferentes, como almacenamiento SSD o hardware diferente que es útil para una tarea determinada. La migración de instancias y datos entre clústeres no está automatizada en este momento, pero esta guía te muestra cómo lograrlo tú mismo.

Esta guía asume que te sientes cómodo trabajando con SSH, así como con algunas utilidades de línea de comando como dd y la CLI de OpenStack. Para obtener más información sobre esas utilidades, consulta los siguientes artículos.

Cosas a tener en cuenta

A continuación, se incluyen algunas cosas que debe tener en cuenta y planificar antes de una migración.

Las direcciones IP cambiarán

Cada clúster tiene bloques asignados de direcciones IP, por lo tanto, las direcciones IP flotantes, IPv4 públicas y IPv6 públicas no se pueden transferir entre clústeres. Si estás usando redes privadas (opcional en US-East 2), la dirección específica asignada 10.x.x.x también puede cambiar.

Llaves de SSH

Cada clúster administra sus claves SSH por separado, por lo que si ya tienes tus claves configuradas en el clúster de origen, debes configurar las mismas claves (o nuevas) en el clúster de destino. Puedes obtener la clave pública de cualquier par de claves en tu proyecto desde la página ('Project' > 'Compute' > 'Key Pairs') del panel de DreamCompute.

Para acceder a esa página, solo haz clic en el nombre de la llave de emparejamiento.

Planifica una ventana de mantenimiento

Para evitar que los archivos abiertos causen daños u otro comportamiento extraño, es más seguro mover los datos cuando la instancia no se está ejecutando. La copia de los datos suele ser bastante rápida para volúmenes más pequeños, pero para volúmenes más grandes puede llevar algún tiempo. Recuerda, la copia debe completarse antes de que se pueda restaurar el servicio.

Además, el DNS debe actualizarse de las antiguas IP públicas a las nuevas. Dependiendo del tiempo de vida (TTL) de tu proveedor de DNS, este proceso puede tardar desde unos minutos hasta 24 horas. Las zonas DNS administradas por DreamHost pueden tener el TTL de 5 minutos.

Instancias Efímeras

Las instancias efímeras no pueden tener acceso a sus datos por otras instancias cuando están apagadas. Estas instancias solo se pueden migrar mientras se ejecutan, por lo que es mejor cerrar tantos servicios como sea posible para limitar la posibilidad de daños. Por favor mira la última sección a continuación para ver instrucciones sobre la migración de instancias en ejecución.

Migrar una instancia respaldada por volumen mediante la CLI de OpenStack

Para este tipo de movimiento, es necesario eliminar la instancia para que deje un volumen para migrar.

Este método requiere que no selecciones "Sí" para la opción "Eliminar volumen al eliminar la instancia" cuando creaste tu instancia. Si lo hiciste, pasa a la última sección para instrucciones sobre la migración de instancias en ejecución. Si continúas, puedes destruir permanentemente y perder tus datos.

Como descripción general, estos son los componentes involucrados en la realización de esta tarea:

 CLÚSTER FUENTE         CLÚSTER DE DESTINO

+---------------+     +----------------------+     +-------------------+
| Temp Instance |---->| Glance Image Service |---->| Migrated Instance |
+---------------+     +----------------------+     +-------------------+
        |(mount)
+----------------+
| Volume To Copy |
+----------------+

Proceso de Migración

  1. Crea una "fotocopiadora" temporal lanzando una nueva instancia utilizando el flavor más pequeño disponible. Esta guía usa comandos de Ubuntu. También se recomienda que hagas que la instancia sea efímera, ya que no será necesaria una vez que se complete la migración.
  2. Instala el software necesario para acceder al servicio de imágenes Glance en esta nueva instancia:
    [user@instance]$ sudo -i
    [root@instance]# apt-get install python-dev python-pip
    [root@instance]# pip install python-openstackclient
    
  3. Corre openstack help y compruebe si faltan otros módulos. Instálalos con:
    [root@instance]# pip install MODULENAME
    
  4. Configura tu archivo openstack.rc para el clúster DESTINATION en esta nueva instancia. Consulta el siguiente artículo para obtener instrucciones sobre cómo descargar este archivo:
  5. Después de descargar el archivo, cárgalo en su instancia o copia/pega su contenido en un archivo en la instancia. En el siguiente ejemplo, el contenido se ha guardado en un archivo llamado dreamcompute-CLUSTER.sh, pero puedes nombrarlo como quieras. Una vez que termine, corre el archivo:
    [root@instance]# . dreamcompute-CLUSTER.sh
    
  6. Ingresa tu contraseña de DreamCompute en el mensaje "Ingresa tu contraseña de OpenStack". Esta es la misma contraseña que usas para iniciar sesión en el panel de DreamCompute.
  7. Ahora que tu sesión de shell tiene las credenciales de autenticación necesarias para conectarte al clúster de DESTINO, corre el siguiente comando para ver las imágenes de OpenStack actualmente en el clúster de DESTINO:
    [root@instance]# openstack image list
    
  8. Elimina la instancia que deseas mover, liberando su volumen para que pueda adjuntarse a la instancia recién creada.
  9. Para adjuntar el volumen a la nueva instancia, ve al menú Volúmenes, haz clic en el cuadro desplegable en la columna Acciones en el lado derecho, luego haz clic en 'Editar archivos adjuntos'.
  10. Determina la letra de unidad del nuevo volumen. Generalmente /dev/vda será la unidad de arranque de tu instancia, por lo que puede ser /dev/vdb o /dev/vdc. Una forma de verificarlo es con el comando fdisk:

    [root@instance]# fdisk -l /dev/vdb | grep Disk
    [root@instance]# fdisk -l /dev/vdc | grep Disk
    

    El que coincide con el tamaño del nuevo volumen es el que se va a utilizar. Toma nota de la letra de la unidad (la parte /dev/vdX).

  11. Usa dd para canalizar los datos directamente al servicio de imágenes del glance. No olvides cambiar la letra de la unidad en el ejemplo a continuación por la que encontraste arriba. También puedes cambiar cualquier texto en MAYÚSCULAS para adaptarse a tu gusto.
    [root@instance]# dd if=/dev/vdX | openstack image create \
                   --private --container-format bare \
                   --disk-format raw "INSTANCENAME"
    
  12. Espera a que este comando termine de correrse. Si tienes éxito, debería mostrar la información sobre la nueva imagen que se creó.

Ahora estás listo para ir al clúster de DESTINO para iniciar una nueva instancia y seleccionar la imagen que se acaba de cargar como fuente. Si los datos están destinados a ser persistentes, es mejor especificar que deseas crear un nuevo volumen la pestaña Source cuando lances la nueva instancia.

Migrar una instancia efímera con la CLI de OpenStack

No se recomienda este tipo de migración. Sin embargo, puede ser necesario en algunas situaciones, por lo que se incluye aquí.

  1. Cierra tantos servicios en la instancia como sea posible (como servidores de bases de datos, http servidores, etc.), idealmente dejando solo las herramientas del sistema predeterminadas y sshd en ejecución.
  2. Instala el software necesario para acceder al servicio de imágenes del glance en la instancia:
    [user@instance]$ sudo -i
    [root@instance]# apt-get install python-dev python-pip
    [root@instance]# pip install python-openstackclient
    
  3. Corre openstack help y comprueba si faltan otros módulos. Instálalos con:
    [root@instance]# pip install MODULENAME
    
  4. Configura tu archivo openstack.rc para el clúster de DESTINO en esta nueva instancia. Consulta el siguiente artículo para obtener instrucciones sobre cómo descargar este archivo:
  5. Después de descargar el archivo, cárgal en tu instancia o copia/pega tu contenido en un archivo en la instancia. En el siguiente ejemplo, el contenido se ha guardado en un archivo llamado dreamcompute-CLUSTER.sh, pero puedes nombrarlo como quieras. Una vez que termine, corre el archivo:
    [root@instance]# . dreamcompute-CLUSTER.sh
    
  6. Ingresa tu contraseña de DreamCompute en el mensaje "Ingresa tu contraseña de OpenStack". Esta es la misma contraseña que usa para iniciar sesión en el panel de DreamCompute.
  7. Ahora que tu sesión de shell tiene las credenciales de autenticación necesarias para conectarte al clúster de DESTINO, corre el siguiente comando para ver las imágenes de OpenStack actualmente en el clúster de DESTINO:
    [root@instance]# openstack image list
    
  8. Determina la letra de la unidad examinando la salida de df -h para el sistema de archivos root (/). Generalmente esto es /dev/vda1.
  9. Usa dd para canalizar los datos desde el disco directamente al servicio de imágenes de vistazo. Cambie cualquier texto en MAYÚSCULAS para adaptarse a tu gusto.
    [root@instance]# dd if=/dev/vda | openstack image create \
                   --private --container-format bare \
                   --disk-format raw "INSTANCENAME"
    
  10. Espera a que el comando termine de correrse. Si tiene éxito, debería mostrar la información sobre la nueva imagen que se creó.

Ahora estás listo para ir al clúster de DESTINO para iniciar una nueva instancia y seleccionar la imagen que se acaba de cargar como fuente. Si los datos están destinados a ser persistentes, es mejor especificar que deseas crear un nuevo volumen en la pestaña Source cuando lances la nueva instancia.

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?