OpenVZ

From Blogx Populi - Marsupi - Moviments.net - Wiki
Jump to: navigation, search
Icono de esbozo

Este artículo necesita desarrollarse más. Ampliándolo ayudarás a mejorar Blogx Populi.
Tal vez puedas ayudarte con los wikis catalán e inglés si tienen una página equivalente.


OpenVZ es una tecnología de virtualización en el nivel de sistema operativo basada en el núcleo Linux. OpenVZ permite que un servidor físico ejecute múltiples instancias de sistemas operativos aislados, conocidos como Servidores Privados Virtuales (SPV) o Entornos Virtuales (EV).

Implementación de ejemplo (en Blogx Populi)

Instalación

  • Agregar fuentes openvz en el sources.list
echo -e "\ndeb http://download.openvz.org/debian-systs lenny openvz" >> /etc/apt/sources.list

Nota: actualmente se puede poner las fuentes para etch o para lenny de i386 de 32 bits y x86_64

wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add - && apt-get update
  • Instalar el kernel binario que trae debian y todas las dependencias que nos recomienda, importante comprobar si en las dependencias están los paquetes vzctl vzquota si no, después de reinciar tendremos que instalarlo.
apt-get install linux-image-openvz-amd64

En debian lenny, el grub se actualiza sólo para que arranque con el nuevo kernel. Si no, en otras distribuciones:

update-grub

Y modificar la variable default para que arranque el kernel de openvz. También se puede aprovechar para comentar los otros arranques que mete por defecto, para que arranque en modo monousuario.

Después de todo esto ya reiniciamos la máquina para poder trabajar con el nuevo kernel. Una vez arrancada la máquina con el kernel 2.6.26-2-openvz-amd64. Si estás con Debian lenny o siguientes sáltate el siguiente paso, si no: tendrás que modificar el archivo /etc/sysctl.conf:

# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled

net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0

net.ipv4.ip_forward=1

# Enables source route verification
net.ipv4.conf.all.rp_filter = 1

# Enables the magic-sysrq key
kernel.sysrq = 1

# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0


# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

Si te da el warning:

vps-net_add WARNING: Function proxy_arp for eth1 is set to 0.

Se soluciona añadiendo la siguiente linea:

net.ipv4.conf.eth1.proxy_arp=1
  • Podemos comprobar si todo funciona bien con el comando:
sysctl -p

Por temas de compatibilidad y ya que tenemos una partición /var, hacemos un enlace simbólico para meter alli la jaula de los Virtual Servers.

ln -s /var/lib/vz /vz

Ahora instalamos los templates para Debian, se puede hacer de manera diferente, como bien lo explica en el wiki de openvz. Creando el template que más nos guste, los repositorios de openVZ que hemos puesto al principio poseen unos paquetes que contienen la versión 4.0 (etch) y la versión 5.0 (lenny) de Debian, tanto si la base es etch o lenny he decido hacerlo desde apt:

apt-get install vzctl-ostmpl-debian-5.0-amd64-minimal

Para instalar squeeze hay que bajar el archivo debian-squeeze-testing-standard_6.0-1_amd64.tar.gz ahora mismo no disponible en lenny y copiarlo en /var/lib/vz/template/cache

Luego instalamos vzprocps, grupo de utilidades para darnos información del sistema y vzdump utilidad para hacer backups y restaurar VE:

apt-get install vzprocps vzdump

Y con esto ya tenemos creada nuestra máquina de openvz, asi que ya solo falta arrancarla o rearrancarla.

/etc/init.d/vz [start - stop -restart]

Administración

Creación de máquinas virtuales

Podremos crear máquinas virtuales a partir de los templates que tengamos descargados en nuestra anfitriona en el directorio /var/lib/vz/template/cache

Para conseguir nuevos templates los podemos bajar de la página oficial de OpenVZ (ahí encontraremos templates oficiales y otros producidos por la comunidad). También podemos crear nuestros propios templates.

Ahora es el momento de crear nuestras máquinas virtuales, primero tener en cuenta que openvz se reserva la numeración de la 0-100, así que la primera máquina que podremos crear sera la 101.

  • Crear la Máquina test101 (según la versión que desees crear):
vzctl create 101 --ostemplate debian-6.0-x86

o

vzctl create 101 --ostemplate debian-7.0-amd64-minimal

Configuramos los parametros de red:

vzctl set 101 --ipadd  x.x.x.101 --save

El DNS:

vzctl set 101 --nameserver  x.x.x.x --save

Y el nombre del host virtual:

vzctl set 101 --hostname test101.moviments.net --save

Le indicamos que esa máquina arranque al inicio:

vzctl set 101 --onboot yes --save

Definimos el espacio de disco (ej 20Gb):

vzctl set 101 --diskspace 20000000:22000000 --save

Configuración de máquinas virtuales

Y la arrancamos ahora manualmente, para no reiniciar.

vzctl start 101

Una vez arrancada la máquina virtual para entrar en ella haremos:

vzctl enter 101

Una vez dentro, exportaremos la variable PATH:

export PATH=/sbin:/usr/sbin:/bin:/usr/bin

Actualizamos el sistema:

apt-get update
apt-get upgrade

Desactivamos el acceso a Root.

usermod -L root

Desactivamos las consolas getty:

sed -i -e '/getty/d' /etc/inittab

Desactivamos haciendo sync () para escribir en todos los archivos de registro de syslog, para mejorar el rendimiento Entrada/Salida:

sed -i -e 's@\([[:space:]]\)\(/var/log/\)@\1-\2@' /etc/syslog.conf

Linkamos /proc/mounts a /etc/mtab:

rm -f /etc/mtab
ln -s /proc/mounts /etc/mtab

Borramos todos aquellos servicios que no vamos a usar:

update-rc.d -f klogd remove
update-rc.d -f quotarpc remove
update-rc.d -f exim4 remove
update-rc.d -f inetd remove

Modificación de máquinas virtuales

  • Cambiar los parámetros equivalentes a la RAM (por ejemplo para 512MB):
vzctl set 101 --kmemsize 512m --save
vzctl set 101 --privvmpages 512m --save

Copia de seguridad (usable) de máquina virtual

  • In this example, a VPS 105 is cloned to create 106. The data that you will create for a VPS is located in the /vz/private/ directory. Be sure to use the switch -a when you use cp as it is important in getting the permissions right. The -a options maintains all of the archival attributes which is very important.
cp -a /vz/private/105 /vz/private/106

Next you need to copy the configuration for the VPS so that all of the settings are available. The configuration files are found in /etc/vz/conf. Once you have copied the configuration file over you will need to edit two lines:

HOSTNAME=”servidor105″
IP_ADDRESS=”192.168.1.15″

These two lines are important to set up the correct IP Address and the hostname to distinguish the virtual servers.

cp /etc/vz/conf/105.conf /etc/vz/conf/106.conf

para cambiarlas por las siguientes líneas:

HOSTNAME=”servidor106″
IP_ADDRESS=”192.168.1.16″

Copia de seguridad (para ser restaurada) de máquina virtual

Comprimir en directorio de backup

vzdump --compress --dumpdir /root/ 106

Restaurarla

vzrestore /root/vzdump-openvz-106-2011_06_09-13_17_26.tgz 107

Montar particiones del host anfitrión a la máquina virtual

Tenemos el ejemplo de un hd externo con los backups

amfitrión] mount -t auto /dev/sdc2 /mnt/hd
amfitrión] mount -n -t simfs /mnt/hd /var/lib/vz/root/105/mnt/hd -o /mnt/hd
amfitrión] vzctl enter 105
root@v-www-conway:/# ls /mnt/hd
backup_conway  backups_vonneuman  ibdata1      ib_logfile1  mysql               wikies
backup_sda3    debian-5.0.flag    ib_logfile0  lost+found   mysql_upgrade_info
root@v-www-conway:/# mount
/dev/simfs on / type simfs (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid)
proc on /proc type proc (rw,nosuid,nodev,noexec)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec)
/dev/sdc2 on /mnt/hd type ext3 (rw,data=ordered)
root@v-www-conway:/# fdisk -l
cannot open /proc/partitions
root@v-www-conway:/# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/simfs             20G   13G  6.6G  66% /
tmpfs                 4.0G     0  4.0G   0% /lib/init/rw
tmpfs                 4.0G     0  4.0G   0% /dev/shm
/dev/sdc2             114G   47G   62G  43% /mnt/hd

Mas info Bind mounts

Permitir montar tuneles TUN desde el Container

vzctl stop 101
vzctl set 101 --devnodes net/tun:rw --save
vzctl set 101 --devices c:10:200:rw --save
vzctl set 101 --capability net_admin:on --save
vzctl exec 101 mkdir -p /dev/net
vzctl exec 101 chmod 600 /dev/net/tun
vzctl start 101
vzctl enter 101
modprobe tun

y si no funciona

modprobe -n tun

con esta opción deberemos ejecutar este comando cada vez que se levanta la maquina

http://www.overdose.ro/2011/09/create-an-openvpn-server-inside-an-openvz-container/

nota: he tenido que instalar psmisc (para el killall) y module-init-tools (para modprobe), la maquina virtual era muy pero que muy básica hehe

Eliminar máquina virtual

Cuando nos cansemos de nuestra máquina virtual creada:

vzctl stop 101
vzctl destroy 101

Esto nos dejará, todavía, de seguridad la configuración de la máquina virtual en un archivo .destroyed

/etc/vz/conf/101.conf.destroyed

Que podemos borrar para deshacernos del todo.

Véase también

  • Proxmox: frontend para las máquinas virtuales de OpenVZ

Enlaces externos