Preparación de los contenedores para realizar una migración

Refers to:

  • Plesk=Linux=

Created:

2016-12-12 03:48:15 UTC

Modified:

2016-12-21 20:32:45 UTC

0

Was this article helpful?


Have more questions?

Enviar una solicitud

Preparación de los contenedores para realizar una migración

Información

Este artículo describe los pasos a realizar para evitar posibles incidencias durante una migración. La mayoría de incidencias de migración pueden evitarse fácilmente teniendo las plantillas de SO debidamente actualizadas y disponiendo de repositorios válidos para todas las aplicaciones y plantillas EZ de SO. La solución también es aplicable a contenedores que ya hayan sido migrados.

Síntomas

Un contenedor no se inicia tras la migración. Se observa un error similar al siguiente:

    ~# vzctl start 102
Starting the Container ...
Container is mounted
Setting permissions 20002 dev 0x7d00
Set up ioprio: 4
Adding offline management to Container(1): 4643 8443
Adding IP addresses: 10.20.30.40
Error: Unable to execute bash: No such file or directory
Container is unmounted
Failed to start the Container

Existen otros síntomas de la existencia de un problema, como puede ser el hecho de que no se pueden mostrar las propiedades de los archivos en algún directorio:

CT-102-bash-4.2# ls -al /usr/bin/ | grep '\\?'
ls: cannot access /usr/bin/mailq: No such file or directory
ls: cannot access /usr/bin/hoststat: No such file or directory
ls: cannot access /usr/bin/praliases: No such file or directory
ls: cannot access /usr/bin/purgestat: No such file or directory
ls: cannot access /usr/bin/newaliases: No such file or directory
?????????? ? ? ? ? ? hoststat
?????????? ? ? ? ? ? mailq
?????????? ? ? ? ? ? newaliases
?????????? ? ? ? ? ? praliases
?????????? ? ? ? ? ? purgestat
CT-12264-bash-4.2#

Esto puede afectar al arranque de servicios importantes, como por ejemplo SSH:

# /etc/rc.d/init.d/sshd restart
Stopping sshd: [FAILED]
Starting sshd: /usr/sbin/sshd: error while loading shared libraries: libpam.so.0: cannot open shared object file: No such file or directory
[FAILED]

En este caso, el siguiente comando para el contenedor montado o iniciado devuelve alguna salida, como por ejemplo find: ...: No such file or directory :

    ~# find /vz/root/$CTID -xdev -ls >/dev/null

Reemplace "$CTID" por el ID del contenedor en cuestión.

Resolución

Antes de realizar la migración, prepare los nodos hardware de origen y de destino, así como el contenedor que desea migrar tal y como se describe a continuación.

  1. Establezca SCAN_PRIVATE a "yes" para garantizar que el archivo vzpackages enumerará todos los paquetes (y todas sus versiones) instalados en el contenedor mediante las herramientas de gestión de paquetes de Virtuozzo en función de los enlaces existentes en el área privada del contenedor. Edite /etc/vztt/vztt.conf en ambos nodos:

    ~# grep SCAN_PRIVATE /etc/vztt/vztt.conf 
    #SCAN_PRIVATE="yes"
    ~# sed -i 's/#SCAN_PRIVATE/SCAN_PRIVATE/' /etc/vztt/vztt.conf
    ~# grep SCAN_PRIVATE /etc/vztt/vztt.conf
    SCAN_PRIVATE="yes"

    NOTA : esta opción aumentará el tiempo de duración de la migración. Le recomendamos comentarla de nuevo antes de proceder con la migración.

  2. Sincronice los paquetes para el contenedor que desea migrar:

    ~# vzpkg sync_vzpackages $CTID

    Reemplace "$CTID" por el ID del contenedor.

  3. También puede resultar útil realizar vzpkg repair para el contenedor migrado si la migración resultó fallida antes de este paso. Generalmente, este comando se ejecuta automáticamente durante la migración:

    ~# vzpkg repair /vz/private/$CT_ID /etc/sysconfig/vz-scripts/$CTID.conf

    El paso 3 puede devolver el siguiente error:

    Error: The next package(s) are not available

Este error denota que los paquetes enumerados no se encuentran en el área de la plantilla y que estos no están disponibles en los repositorios configurados - por ejemplo, debido a que estos paquetes pertenecen a una versión obsoleta del SO.

Supongamos que nuestro contenedor se basa en la plantilla centos-5-x86_64 :

    ~# vzpkg list 113
centos-5-x86_64 2012-04-16 15:13:10

El error es el siguiente:

Error: The next package(s) are not available:
samba-swat.x86_64 0:3.0.33-3.29.el5_5
samba-common.x86_64 0:3.0.33-3.29.el5_5
glibc-common.x86_64 2.5-49.el5_5.4
openldap.x86_64 2.3.43-12.el5_5.2
krb5-libs.i386 1.6.1-36.el5_5.5
krb5-libs.x86_64 1.6.1-36.el5_5.5
nss.x86_64 3.12.6-2.el5.centos
glibc.i686 2.5-49.el5_5.4
nscd.x86_64 2.5-49.el5_5.4
samba.x86_64 0:3.0.33-3.29.el5_5
dhclient.x86_64 12:3.0.5-23.el5_5.1
device-mapper-multipath.x86_64 0.4.7-34.el5_5.4

Todos los paquetes ausentes detallados aquí pertenecen a Centos 5.5 (tal y como puede verse en la parte el5_5 en la versión del paquete).

Añada los repositorios de Centos 5.5. Los demás repositorios para CentOS pueden añadirse siguiendo el mismo método y reemplazando "5.5" por el ID de la versión actual:

~# echo http://vault.centos.org/5.5/os/x86_64 >> /vz/template/centos/5/x86_64/config/os/default/repositories
~# echo http://vault.centos.org/5.5/updates/x86_64 >> /vz/template/centos/5/x86_64/config/os/default/repositories

**NOTA**: si la lista contiene un gran número de repositorios, la actualización de los metadatos (que se efectúa cada vez que se alcanza el tiempo de espera de expiración en 24 horas) tardará mucho en completarse. Es por este motivo que le recomendamos eliminar los repositorios adicionales una vez finalizada la migración.

Tras añadir o eliminar repositorios, actualice los metadatos en el servidor para la plantilla EZ del SO:

    ~# vzpkg update metadata centos-5-x86_64 -r

A continuación, `vzpkg repair` debería poder localizar los paquetes necesarios.

Algunos paquetes no contienen el ID de la versión. En este caso, deberá comprobar manualmente todos los repositorios disponibles. Ejemplos de estos paquetes son `httpd` y `mod_ssl`.

Los sufijos digitales, como puede ser el caso de `.2` en la versión `.el5_5.2`, indican que estas versiones se distribuyen en las actualizaciones de una versión determinada.

**NOTA**: estas instrucciones son aplicables a Virtuozzo, Virtuozzo hypervisor 5.0 y Virtuozzo containers para Linux 4.6, 4.7 con contenedores basados en plantillas EZ de SO.

En el caso de versiones anteriores, sólo son válidas para Virtuozzo hypervisor 4.0 (la última versión) y Virtuozzo containers 4.0 a partir de la versión 4.0.0-520.
El comando vzpkg repair sólo puede usarse si es posible crear contenedores nuevos basados en la plantilla de SO en cuestión.

  1. A veces no es posible encontrar un mirror con los paquetes ausentes, recopilados en el tercer paso. En este caso, copie dichos archivos del nodo de origen:

    ~# rsync -a --ignore-existing --rsh="ssh" root@${SOURCE_NODE}:/vz/template/centos/5/x86_64/ root@${DESTINATION_NODE}:/vz/template/centos/5/x86_64/

    NOTA: la opción ignore-existing es esencial en este comando, ya que los archivos, ya usados por los contenedores en ejecución, no deben actualizarse.

¿Tiene más preguntas? Enviar una solicitud
Inicie sesión para dejar un comentario.