Escrito el 29 abril 2016 por Luis Ignacio Díaz Martínez
Tabla de contenidos
Los sistemas de virtualización están a la orden del día. Actualmente existen muchos tipos, entre ellos, se encuentra la virtualización por software, o también conocida como ‘virtualización de nivel de sistema operativo’.
Hoy hablaré de OpenVZ, como instalarlo… y algunos primeros pasos. Este, funciona solamente bajo entornos GNU/Linux ya que, deberemos de instalar un Kernel modificado para habilitar sus funciones y módulos. Veremos con que sencillez seremos capaces de replegar una instancia virtual y lo simple que es gestionarlas.
La gran ventaja de este tipo de virtualización es que no necesitamos una máquina con un gran hardware. Mientras sea capaz de ejecutar y correr el sistema operativo GNU/Linux principal será capaz de virtualizar las instancia.
Como ‘entorno’ podemos utilizar cualquier máquina que tenga GNU/Linux en sus últimas versiones. En cuanto a hardware se refiere no necesitamos una gran máquina… tan solo un equipo que arranque el sistema.
En mi caso, estoy utilizando un servidor ‘HP Proliant Microserver Gen8’ con un procesador sencillo y 16gb de RAM. Tengo instalado ‘ubuntu server 14.04’.
La instalación de ‘OpenVZ’ no es para nada complicada. Tan solo instalaremos el nuevo kernel en nuestro sistema.
Primero, añadiremos el repositorio de ‘OpenVZ’ a nuestro ‘source.list’.
1 |
echo "deb http://download.openvz.org/debian wheezy main" >> /etc/apt/sources.list |
Ahora añadiremos la firma del repositorio, actualizamos el repositorio y los paquetes…
1 2 3 4 |
wget http://ftp.openvz.org/debian/archive.key apt-key add archive.key apt-get update apt-get upgrade |
Una vez ya tenemos el repositorio… instalaremos lo necesario…
1 |
apt-get install linux-image-openvz-amd64 |
Una vez se han instalado los paquetes deberemos de reiniciar el equipo completo para que cargue con el nuevo kernel!
Una vez reiniciado, para comprobar que se ha cargado correctamente…
1 2 |
root@jarvis:/home/luigdima# uname -a Linux jarvis 2.6.32-openvz-042stab106.4-amd64 #1 SMP Fri Mar 27 15:27:00 MSK 2015 x86_64 x86_64 x86_64 GNU/Linux |
Como podemos ver, está rodando correctamente.
Atención! si tu sistema es de 32 bits el kernel que deberías de utilizar es ‘linux-image-openvz-686’.
Antes de empezar podemos crear perfiles y configuraciones acordes con la capacidad máxima de nuestro equipo anfitrión. Utilizando el comando ‘vzsplit’ conseguiríamos crear una configuración a medida para ‘x’ número de instancias en base al total de recursos físicos. En conclusión, divide el pastel en porciones iguales.
1 |
vzsplit |
Cuando ejecutamos la orden pasaremos por un pequeño asistente.
Para iniciar una primera instancia (máquina o entorno virtual) necesitaremos escoger que sistema operativo queremos instalar. Por ello, nos valdremos del siguiente listado que nos proporciona ‘OpenVZ’.
En mi caso, he escogido «debian-7.0-x86.tar.gz«. Por lo tanto, nuestra plantilla se llamará ‘debian-7.0-x86’.
Así que creamos la instancia de la siguiente forma:
1 |
vzctl create 151 --ostemplate debian-7.0-x86 --config basic |
Hemos utilizado el comando ‘vzctl’ junto al parámetro ‘create ‘ el cual crea una máquina, con el id ‘151’ (podemos poner en su lugar cualquier valor numérico). Por otro lado, con el parámetro ‘–ostemplate’ seleccionamos la plantilla que vamos a utilizar (en mi caso, Debian). Y por último, con ‘–config’ aplicamos el tipo de perfil de configuración que queremos que tenga esa máquina.
A continuación vamos a editar ciertos parámetros de la instancia. Realizaremos estos cambios mediante las ordenes que nos ofrece el comando ‘vzctl’; pero recordad, que, también podemos realizar está acción editando el fichero de configuración que anteriormente hemos nombrado.
Aplicaremos que nuestra máquina virtual se ejecute al encender el anfitrión:
1 |
vzctl set 151 --onboot yes --save |
Con el parámetro ‘–save’ indicamos que guarde dicho cambio en configuración.
Ahora, realizaremos algunos cambios básicos en la configuración de red…
1 2 3 |
vzctl set 151 --hostname nombre-prueba --save vzctl set 151 --ipadd 192.168.1.133 --save vzctl set 151 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --save |
Una vez aplicadas estas modificaciones no hará falta reiniciar el equipo. Todas, se realizan el caliente.
Si queremos modificar más parámetros y de forma manual podemos editar el fichero de configuración…
1 |
nano /etc/vz/conf/[idMaquina] |
Empezaremos a manipular la instancia. Así como encenderla, saber su estado… y como no, acceder a ella.
Iniciar la máquina sencillamente es…
1 |
vzctl start 151 |
Parar pararla tampoco se nos complica el tema…
1 |
vzctl stop 151 |
Para eliminar una instancia lo realizaremos de la siguiente forma:
1 2 |
vzctl stop 151 vzctl destroy 151 |
Asignar una contraseña al usuario ‘root’ es de las primeras cosas que deberíamos hacer…
1 |
vzctl exec 151 passwd |
Para acceder a nuestra máquina es tan sencillo como utilizar el comando ‘vzctl enter <id>’…
1 |
vzctl enter 151 |
Para listar las máquinas que tenemos (en ejecución o no) utilizaremos ‘vzlist‘:
1 |
vzlist -a |
Donde nos devolverá lo siguiente:
1 2 3 |
root@jarvis:/home/luigdima# vzlist -a CTID NPROC STATUS IP_ADDR HOSTNAME 151 - stopped 192.168.21.151 mark151 |
Con el parámetro ‘-a’ nos referimos ‘list all containers’; para saber más opciones de listado nos ayudaremos de la opción ‘vzlist –help’.
Podemos ver los procesos que está ejecutando una máquina en concreto por medio de ‘vzpid’.
1 |
vzpid [numero proceso] |
Que nos devolvería algo como esto…
1 2 3 |
1 luigdima@jarvis:~⟫ vzpid 61758 Pid CTID Name 61758 151 apache2 |
Así podemos observar que el proceso con número ‘61758’ se está ejecutando en la instancia número ‘151’.
Podemos modificar varios parámetros de la asignación de hardware, como por ejemplo, la memoria RAM o el tamaño del disco duro. Estos cambios en concreto se realizan en caliente, y por lo tanto no es necesario reiniciar la instancia para aplicar los cambios.
A continuación asignaremos un tamaño de 3 gigabytes como mínimo y 3 como máximo a la máquina ‘151’. Esto se puede modificar sobre caliente en cualquier momento!
1 |
vzctl set 151 --diskspace 3G:3G --save |
Podemos cambiar el tamaño de la memoria ‘RAM’ y ‘SWAP’ en caliente, como ya hemos comentado, sin necesidad de reiniciar la instancia…
1 |
vzctl set 151 --ram 1G --swap 1G --save |
Podemos realizar una copia de seguridad de nuestra instancia utilizando el siguiente binario…
1 |
vzdump 151 |
Cuidado! cuando realizamos esto la instancia pasará a un estado de ‘suspensión’.
Si queremos clonar una instancia (realizar una copia) es tan sencillo como hacer uso del binario ‘vzrestore’…
1 |
vzrestore /vz/dump/[ruta_dump] [id_nuevo] |
Nota! Tendremos de cambiar la dirección ‘IP’ para no generar conflicto.
Una de las grandes funcionalidades de ‘OpenVZ’ es poder migrar las máquinas en cualquier momento hacía otro nodo (equipo) el cual lo pueda ejecutar.
1 |
vzmigrate --live 192.168.1.233 151 |
El comando habla por si mismo… lo único que necesitamos es que ambos equipos se vean entre si… y tengan asignadas claves SSH para su acceso remoto sin la utilización de un usuario y una clave.
Estas son las referencias que he utilizado para redactar este artículo…