Finalmente llegó el día de actualizar un viejo servidor Ubuntu Server 10.04 Lucid, el cual estaba prestando servicios Web de forma ininterrumpida desde 2011. Al ser hijo de Debian, es una tarea generalmente muy sencilla y sin grandes dolores de cabeza.

Como muchos administradores de sistemas sabrán, en abril de 2015 finaliza el soporte para las versiones Ubuntu Server 10.04.* LTS. Por lo tanto es hora de migrar a 12.04 LTS ("Precise"), y por qué no luego a 14.04 LTS ("Trusty"). Siempre que sea posible, por cuestiones de compatibilidad, claro está.

Tal como mencioné en el artículo Cómo migrar un servidor en producción desde Debian 6 a 7, existe una serie de requisitos antes de efectuar una migración en un servidor en producción.

Requisitos

Compatibilidad

Antes de pensar siquiera en la posibilidad de migrar, se deberá determinar si las versiones de software que incluye la nueva versión son compatibles con las aplicaciones y servicios instalados en el servidor, especialmente para el caso del software desarrollado a medida.

Si existe alguna pieza de software a medida que no es compatible con las nuevas versiones, se deberá adaptar o reemplazar antes de continuar.

Backup

Es necesario guardar una copia de respaldo de toda la información importante. Realizar un backup de absolutamente todos los archivos de datos aplicaciones, bases de datos y configuración del servidor. Si es posible guardar una imagen ISO de cada uno de los discos.

Procedimiento

El upgrade de versión en sistemas operativos GNU/Linux es una tarea que suele estar muy bien documentada en cada distribución que lo provee. Revisar cada uno de los detalles y validar el procedimiento en el servidor objetivo.

En el momento de ejecutar la migración se deberá contar con espacio suficiente en disco en el servidor (para descargar e instalar todos los nuevos paquetes).

Si se trata de un servidor remoto, se deberá disponer de una conexión a Internet confiable y segura. Preferentemente se debe contar con el acceso a una consola remota del tipo iDRAC de DELL o iLO de HP. Estas consolas proveen el acceso directo al bus de sistema desde una interfaz de red (como si estuviésemos sentados físicamente en la consola del equipo). Esto es necesario para no dejar al sistema en un estado de actualización inconsistente en caso de producirse un fallo de red.

Si se trata de un servidor virtual, ejecutar el procedimiento desde la consola del sistema, accediendo directamente a través de las herramientas provistas por el hipervisor (depende de cada tecnología, por ejemplo en QEMU/KVM se utiliza el cliente "virt-manager" o directamente VNC).

Escenario de prueba

Crear un laboratorio (puede ser una máquina virtual) replicando exactamente la configuración actual del servidor, para luego ejecutar, verificar y documentar una migración a la nueva versión.

En debian y derivados es posible obtener la selección de paquetes instalados ejecutando el siguiente comando en el servidor en producción:

# dpkg -l | grep ^ii | awk '{print $2}' | tr '\n' ' ' > sel.txt

Luego, para instalar la misma selección en el servidor de prueba en el laboratorio, ejecutar:

# cat sel.txt | xargs apt-get install

Siguiendo el procedimiento, migrar el servidor de prueba, detectar fallos, y documentar todo detalladamente.

La documentación generada en este paso será utilizada como base para la migración en producción.

Planificar la migración en producción

Si no surgen inconvenientes irreconciliables en el laboratorio, se deberá definir una fecha para la migración en el servidor en producción. El upgrade de versión implicará un corte en el servicio, por lo que se debe planificar con tiempo y notificar a todos los usuarios involucrados.

A partir de las pruebas en el laboratorio, tiempos de descarga, y una evaluación de riesgo, se deberá estimar un downtime del servicio durante la migración.

Backup

¿Olvidé mencionar que es necesario hacer una copia de seguridad de toda la información alojada en el servidor?

Migración

El proceso de migración está conformado por las siguientes tareas:

  1. Hacer un backup
  2. Hacer un backup
  3. Definir una fecha y notificar a los usuarios de los diferentes sitios y aplicaciones hospedadas, mediante canales de comunicación oficiales, acerca del downtime del servicio.
  4. Hacer un backup
  5. Descargar un último backup de los datos modificados a último momento antes de la migración.
  6. Ejecutar la migración siguiendo la documentación creada previamente en el laboratorio.
  7. Verificar el correcto funcionamiento de todos los componentes y dar aviso a los usuarios acerca de la restauración de los servicios.
  8. Hacer un backup

Notificar con la debida anticipación, a los usuarios de los servicios provistos por el servidor, acerca del corte del servicio (de acuerdo a los tiempos prudenciales calculados durante las pruebas de laboratorio). Es deseable coordinar con aquellos usuarios que cargan datos en los diferentes sistemas, para que no realicen modificaciones desde el momento de la generación del backup completo, hasta el momento posterior a la migración (para minimizar el tamaño del último backup antes de comenzar la migración). Para determinar el alcance y limitaciones será necesario reunirse con los referentes de cada sistema/servicio.

Antes de comenzar la migración se deberá descargar un último backup fresco de los datos que hayan sido modificados por usuarios externos (sobre los que no se puede ejercer control) o por el sistema.

Ejecutar la migración siguiendo la documentación generada en el laboratorio. Antes de comenzar, se deberá verificar el acceso a la consola de sistema del servidor (si se trata de un servidor remoto y se cuenta con acceso a la misma), y los números de contacto telefónico del soporte técnico e información del cliente, si se trata de un servidor en la nube (para el caso de que surja una emergencia o situación inesperada).

Al finalizar la migración se deberá verificar el correcto funcionamiento de todos los servicios y aplicaciones. Una vez que se compruebe que todo funciona correctamente, se deberá notificar a los usuarios sobre la restauración del servicio.

Migración a "Precise" (12.04) desde "Lucid" (10.04)

El primer paso consiste en actualizar a la última versión de todos los paquetes de la versión actual:

$ sudo apt-get update
$ sudo apt-get upgrade

En caso de ser necesario, por ejempo si hay una versión más actual del kernel, ejecutar un dist-upgrade y reiniciar:

$ sudo apt-get dist-upgrade
$ sudo reboot

Luego remover paquetes no necesarios:

$ sudo apt-get autoremove

Y finalmente, liberar el espacio ocupado por paquetes descargados (necesario para el upgrade):

$ sudo apt-get clean

Comprobar la versión actual:

root@ubuntuserver:~# uname -a
Linux ubuntuserver 2.6.32-28-server #55-Ubuntu SMP Mon Jan 10 23:57:16 UTC 2011 x86_64 GNU/Linux
root@ubuntuserver:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.4 LTS
Release:        10.04
Codename:       lucid
root@ubuntuserver:~# cat /etc/issue
Ubuntu 10.04.4 LTS \n \l

Ahora el servidor está listo para comenzar el migrar a "Precise". El upgrade de versión se realiza utilizando la herramienta do-release-upgrade. En caso de no encontrarse en el sistema, es posible instalarla ejecutando:

$ sudo apt-get install update-manager-core

Comanzar la migración:

$ sudo do-release-upgrade

Seguir las instrucciones. En el primer paso abrirá una nueva instancia del servidor SSH en el puerto 1022 como salvoconducto en caso de fallos.

Durante la actualización de paquetes, se ofrece demasiadas veces cambiar la contraseña de root de MySQL, no hacerlo, sólo presionar la tecla enter dejando el campo en blanco para que no la cambie. Esto lógicamente sólo sucede si el servidor posee instalado el paquete mysql-server.

Siempre mantener los archivos de configuración instalados actualmente, salvo que no hayan sido modificados (es responsabilidad del administrador de sistemas saber cuales archivos de configuración fueron modificados y cuales no). En caso de que un servicio no inicie (es común que suceda con MySQL, si se ha hecho un tuneo muy fino del archivo de configuración, y se migra a una versión mucho más nueva), sólo bastará con revisar qué opciones de configuración son obsoletas para eliminarlas o modificarlas, para luego reiniciar el servicio.

Finalmente reiniciar el sistema y comprobar la versión actual:

root@ubuntuserver:~# uname -a
Linux ubuntuserver 3.2.0-75-generic #110-Ubuntu SMP Tue Dec 16 19:11:55 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root@ubuntuserver:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:        12.04
Codename:       precise
root@ubuntuserver:~# cat /etc/issue
Ubuntu 12.04.5 LTS \n \l

Referencias

Ubuntu Community Help Wiki - Network Upgrade for Ubuntu Servers (Recommended)

Ubuntu Wiki - Releases


Tal vez pueda interesarte


Compartí este artículo