Debian OpenVZ
De ICEnetX Docs
Open Vz
Open Vz es una herramienta de virtualización a nivel sistema operativo, esto quiere decir que los servidores se virtualizan encima del sistema operativo real, podemos decir que simplemente se aisla los servidores, esta técnica tiene como principal ventaja el rendimiento ya que este es igual a la ejecución nativa, la desventaja es que requiere realizar cambios en el kernel del sistema operativo raíz.
Estos cambios consisten en modificar el kernel de linux preparándolo para virtualizar, por medio de los parches que ofrecen en el sitio web de open vz.
Open Vz esta formado por 2 partes, OpenVz Kernel que es GPL y las user-level-tools que son QPL y nos permiten trabajar con las maquinas virtuales y administrarlas.
Open Vz es un software de virtualización linux sobre linux, esto quiere decir que no se pueden instalar otros sistemas operativos dentro de openvz pero si diferentes distribuciones de linux y versiones del kernel.
Gentoo y Debian Etch ofrecen soporte para virtualizar utilizando Open Vz en forma bien integrada con la distribución, de la misma forma en que Suse lo hace con Xen.
Especificaciones para esta guia
Me referiré como (NH) Nodo de Hardware (Hardware Node) al servidor físico en el cual se va a emplear open vz y (EV) Entorno Virtualizado (Virtual Enviroment) para los servidores virtuales.
Cuando utilice el símbolo # me refiero a un comando que debe ser ejecutado como root. Cuando utilice el símbolo $ es un comando que debe ejecutarse como usuario. Con \_[ ] Me refiero a una opción del kernel. \_[M] se refiere a seleccionar una opción del kernel como modulo. \_[*] quiere decir que la opción en el kernel debe colocarse como parte del kernel.
El manual de usuario de OpenVz esta orientado a sistemas RedHat/Fedora por lo que este documento esta basado en el Wiki de OpenVz y en la propia experimentación, si no se piensa utilizar un sistema basado en Redhat recomiendo la guía de usuario de OpenVz únicamente para aprender a administrar y dar mantenimiento a los EV.
Para hacer cosas locas con OpenVz como Clusters virtualizados, Integración masiva de Plesk y servicios recomiendo totalmente el uso del wiki http://wiki.openvz.org/, cuenta con mucho soporte y unos foros muy activos sostenidos por una amplia comunidad.
Requisitos
Sistema operativo GNU/Linux (open vz solo puede virtualizar sistemas linux)
1.- Al menos 600mb por cada maquina virtual. 2.- 1gb de ram mínimo para un máximo de 30 maquinas virtuales. 3.- Procesador Pentium, Celeron, Xeon, AMD. 4.- Se recomienda colocar la información critica de los EV en RAID. 5.- El NH debe contener únicamente OpenVz y SSH, el resto de los servicios deben distribuirse dentro de las maquinas virtuales.
OpenVz sobre Debian etch 4.0 Stable
En esta guía instalaremos OpenVz usando los paquetes que etch trae incluidos, quiero enfatizar que el proceso de instalación de una plantilla (la base de los EV que crearemos) para un entorno virtualizado en OpenVz será diferente para cada distribución, si queremos instalar un EV con Fedora, otro con Gentoo, otro con Debian, en un Nodo Hardware, necesitaremos crear diferentes plantillas y cada una lleva un procedimiento distinto, pero para fines prácticos crearemos un NH con Debian que generara EV con Debian, es decir, Debianes sobre Debian xD, también quiero recordar que esto esta pensado para entornos de producción reales y que Fedora no es una distro para producción; por ultimo si eres un experto en Linux o un professional entenderás el por que de la distribución que estas poniendo, para lo que yo necesito, los EV deben ser homogéneos en su base.
Lo primero será instalar Debian en nuestro servidor utilizando el esquema de particionado que necesitemos, en mi caso fueron 2 discos duros SCSI de 70 y 30gb configurados en RAID Nivel 0.
Debido al esquema de virtualizacion que decidimos usar, será necesario modificar el kernel, openvz trabaja mejor en gentoo ya que portage nos ofrece una administración mas simple y sencilla y soporte nativo y directo con su kernel modificado openvz-sources, pero para este caso usaremos Debian.
Ya que tengamos Debian instalado, procederemos a cargar SSH y las fuentes del Kernel y el parche de openvz:
# apt-get install ssh linux-source-2.6.18 kernel-patch-openvz
Lo cual nos instalara SSH y nos colocara el archivo de las fuentes de LINUX junto a los parches:
# /usr/src/linux-source-2.6.18.tar.bz2 # /usr/src/kernel-patches/
Nos moveremos a /usr/src y descomprimiremos las fuentes:
# cd /usr/src # tar –xvjf linux-source-2.6.18.tar.bz2
Ahora sera necesario hacer un vinculo simbolico a las nuevas fuentes:
# ln –s linux-source-2.6.18 linux
Para no escribir una configuración para el Kernel prácticamente desde 0, vamos a hacer nuestro kernel a la debian, es decir, una copia exacta del que tenemos corriendo actualmente pero con el nuevo soporte para OpenVz, para esto copiaremos el archivo de configuración del kernel que está en /boot y aplicaremos el parche de OpenVz:
# cp /boot/config-2.6.18 /usr/src/linux/.config # cd linux # ../kernel-patches/all/apply/openvz
Listo :D nuestro kernel esta parchado, pero antes de proceder, instalaremos los paquetes de desarrollo para ncurses y las herramientas básicas para desarrollo, de otro modo ni el menú del kernel ni el kernel podrán ser generados, las pondremos así:
#apt-get install libncurses5-dev build-essential # make menuconfig
Una vez que el menú aparezca nos fijamos en el detalle, una de las entradas en el menú es OpenVz., desactivaremos las opciones de seguridad del kernel ya que openvz tiene sus propias implementaciones, por lo que podemos estar tranquilos desactivando lo siguiente:
Security options \_[ ] Enable access key retention support \_ [ ] Enable different security models
Guardamos los cambios y a continuación compilaremos el kernel, generaremos un deb con nuestro kernel que soporta openvz para debian etch, cuando termine la compilación, instalaremos nuestro nuevo kernel:
# export PATCH_THE_KERNEL=YES
# make-kpkg --rootcmd fakeroot \
--revision custom01 \
--added-patches openvz \
--append-to-version +openvz \
--initrd \
binary-arch
# dpkg –i linux-image-2.6.18+openvz_custom01_i386.deb
# update-initramfs –c –k 2.6.18-1-openvz
# /usr/sbin/update-grub
Esto instalara el kernel con openvz y agregara al menú del grub una nueva entrada que será con la que necesitamos arrancar debian para poder usar openvz, la entrada dice:
Debian GNU/Linux, kernel 2.6.18+openvz
Finalmente instalamos las herramientas para administrar los EV y reiniciamos:
# apt-get install vzctl # apt-get install vzquota # reboot
Nota: Se pueden descargar Kerneles ya compilados con openvz para debian en http://download.openvz.org/kernel/debian .
Templates
Los templates son la base de una maquina virtual, podemos considerarlos moldes para nuestros EV, podemos generar muchos templates de muchas distribuciones de linux y fácilmente crear EV a partir de ellos, estos templates pueden ser generados por nosotros o descargados de el sitio web de openvz, lo que yo recomiendo es crear nuestros propios templates con lo que necesitemos.
Es muy importante destacar que los templates se crean diferente dependiendo la distribución que usamos, asi pues mientras con debian es necesario hacer un bootstrap de un repositorio de debian generando un sistema base, con gentoo por ejemplo se usa un stage3.
También hay que tener en cuenta que nuestros templates caducan ¿A que nos referimos con que caducan? Cuando creamos un template, este contiene un sistema base generado en un espacio y tiempo en particular, este template no se actualiza, simplemente existe, si nuestro template se mantiene igual por años, este template sera de un sistema base muy viejo y que probablemente no nos sirva o necesite aplicar infinidad de parches, es decir un EV creado a partir de un template antiguo nos generara un entorno antiguo.
Creando un template con Debian
Lo primero sera instalar el paquete debootstrap y posteriormente bootstrapear debian xD
# apt-get install debootstrap # debootstrap --arch i386 etch /vz/private/777 http://mirrors.kernel.org/debian/
Esto creara en la ruta /vz/private/777 una copia del sistema debian mas mínimo que puedas imaginar, ahora aplicaremos las reglas básicas para que sea un EV y el nombre que openvz usara para identificar el template:
# vzctl set 777 --applyconfig vps.basic --save # sh -c 'echo "OSTEMPLATE=debian-4.0" >> /etc/vz/conf/777.conf'
Ya que necesitas configurar este sistema base y afinarlo, le colocaremos una configuración de red básica y lo arrancaremos en forma temporal, esto se retirara ya que estemos listos para generar el template:
# vzctl set 777 --ipadd x.x.x.x --save # vzctl set 777 --nameserver x.x.x.x --save # vzctl start 777
Los primeros dos comandos colocan la IP y los DNS en esta maquina virtual temporal, posteriormente la arrancamos, así es, arrancamos nuestro sistema básico como si fuera una maquina virtual ya generada.
Entraremos a esta EV directamente desde el NH usando:
# vzctl enter 777
Ahora estamos frente a nuestra maquina virtual temporal, todo lo que hagamos aquí afectara únicamente al EV y no al NH.
Configurando el sistema mínimo
Configuramos las rutas para poder usar los comandos como dios manda:
# export PATH=/sbin:/usr/sbin:/bin:/usr/bin
Repositorios:
Editamos /etc/apt/source.list y agregamos los repositorios que todos nuestros EV usaran, en mi caso:
- deb http://ftp.us.debian.org/debian/ etch main
- deb-src http://ftp.us.debian.org/debian/ etch main
- deb http://security.debian.org/ etch/updates main contrib
- deb-src http://security.debian.org/ etch/updates main contrib
Guardamos, salimos y actualizamos el sistema:
# apt-get update # apt-get upgrade
Instalamos SSH ya que sera nuestra forma principal de administrar los EV:
# apt-get install ssh
Protegemos /root
# chmod 700 /root
Quitaremos las consolas TTY ya que nos vamos a necesitar en servidores virtuales, digo de todas formas no tenemos un monitor en cada uno jaja
# sed -i -e '/getty/d' /etc/inittab
Reparamos mtab:
# rm -f /etc/mtab # ln -s /proc/mounts /etc/mtab
Quitamos paquetes no necesarios:
# apt-get remove --purge ppp pppoeconf pppoe pppconfig
Quitamos servicios que no necesitamos en el template y que podemos activar posteriormente en cada maquina virtual:
# update-rc.d -f klogd remove # update-rc.d -f quotarpc remove # update-rc.d -f exim4 remove # update-rc.d -f inetd remove
Quitamos las llaves de SSH o de otro modo todos nuestros EV tendrán las mismas:
# rm -f /etc/ssh/ssh_host_*
Limpiamos el cache de apt:
# apt-get clean
Cambiando el idioma a español
# apt-get install locales # dpkg-reconfigure locales # locales-gen
Listo, nuestro template esta moldeado a un sistema Debian básico, si tu necesitas otro tipo de configuraciones, es el momento de hacerlo, de otro modo terminaremos la sesión con exit.
Removemos las configuraciones que hicimos para la red en el template, primero editamos el archivo /vz/private/777/etc/resolv.conf y borramos su contenido, luego quitamos la IP que asignamos antes y detenemos el EV:
# vzctl set 777 --ipdel all --save # vzctl stop 777
Generando el template
# tar -zcf /vz/template/cache/debian-4.0-i386-minimal.tar.gz .
Ya tenemos un template creado y listo para funcionar, recomiendo dejar el EV 777 con el que generamos el template, de esta manera podemos evitarnos todo este trabajo cuando nuestro templeate caduque. Cuando el template este un poco antiguo podemos entrar al EV 777, actualizar y generar el template creando el archivo tar.gz de nuevo, esto nos permite prolongar la vida de los templates.
Si no deseas mantenerlo coloca lo siguiente:
# vzctl destroy 777 # rm /etc/vz/conf/777.conf.destroyed
Puedes manejar muchos templates, pero si lo que pretendes es tener EV's homogéneos, configurar la variable DEF_OSTEMPLATE de modo que no tengas que especificar la distribución que usaras en forma manual, esta variable se encuentra en /etc/vz/vz.conf :
DEF_OSTEMPLATE = "debian-4.0-i386-minimal"
Usando OpenVz
OpenVz viene con un conjunto de herramientas para trabajar con los EV, la principal es vzctl que nos permite hacer tareas administrativas.
Nota: La herramienta mas importante es vzctl.
- vzctl: Es el esqueleto para administrar openvz, nos permite hacer funciones básicas como crear o borrar EV's
- vzcalc: Permite calcular el uso de recursos de las maquinas virtuales.
- vzdqload: Para trabajar con las cuotas de usuarios y grupos
- vzmigrate: Permite migrar EV's de un NH a otro.
- vzsplit: Genera ejemplos de archivos de configuración para sistemas con ciertos recursos
- vzcfgvalidate: Valida los archivos de configuración de los EV's
- vzdqcheck: Cuenta el uso del disco duro
- vzlist: Proporciona información sobre los EV's
- vzpid: Despliega el ID del EV al que pertenece un proceso pasándole como parámetro el pid
- vzcpucheck: Muestra información sobre el procesador y su uso
- vzmemcheck: Despliega los parámetros de memoria de los EV's
- vzquota: Nos permite manejar las cuotas del disco duro
Sobre los ID
Cada maquina virtual va a asociada a un ID, este ID es único he identifica a este entorno virtualizado, podemos crear tantos como nuestro hardware soporte, pero nunca usaremos ID's menores o iguales a 100 ya que estan reservadas. Para una fácil administración recomiendo por ejemplo asociar el ID con la IP facilitando recordarlo, ej. 192.168.0.101 es el EV con ID 101 ...
Creación de EV
Para crear un entorno virtualizado solo necesitamos teclear:
# vzctl create 101 --ostemplate debian-4.0-i386-minimal
Si tenemos configurada la variable DEF_OSTEMPLATE sera suficiente hacer:
# vzctl create 101
Automaticamente tendremos un entorono virtualizado con ID 101, ahora hagamos que este EV arranque en forma automática cuando iniciemos el sistema:
# vzctl set 101 --onboot yes --save
Poniendo a punto nuestro entorno virtualizado
Vamos a configurar los parámetros de red para el EV 101, hasta donde se no podemos usar dhcp con openvz por lo que le daremos una configuración estática:
# vzctl set 101 --hostname virtual1 --save # vzctl set 101 --ipadd 192.168.0.101 --save # vzctl set 101 --nameserver 192.168.0.254 --save
Arrancamos el EV:
# vzctl start 101
Ya casi estamos, vamos a entrar al EV para activar el SSH:
# vzctl enter 101
Esto nos colocara en el prompt de nuestro EV, vamos a generar las llaves SSH para esta maquina:
# ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa # ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa # /etc/init.d/ssh start # exit
Listo, el EV esta listo para usarse, podemos administrarlo por SSH:
- ssh root@192.168.0.101
desde cualquier lugar de la red o incluso internet si lo tenemos con una IP publica.
Administración de openvz
Lo primero que vamos a aprender es a saber si todo esta en orden, el comando vzlist nos permite conocer el estado de todos nuestros EV:
virtual:~# vzlist
VPSID NPROC STATUS IP_ADDR HOSTNAME
101 34 running 192.168.7.101 virtual1
102 4 running 192.168.7.102 virtual2
103 4 running 192.168.7.103 virtual3
virtual:~#
Aquí podemos ver 3 EV que están corriendo, podemos saber su hostname y la dirección ip, para un desplegado completo usaremos el parámetro -a
virtual:~# vzlist -a
VPSID NPROC STATUS IP_ADDR HOSTNAME
101 34 running 192.168.7.101 virtual1
102 4 running 192.168.7.102 virtual2
103 4 running 192.168.7.103 virtual3
777 - stopped - -
virtual:~#
Como se puede ver el EV 777 que usamos para la creación del template y que no destruí esta detenido. Podríamos iniciarlo con vzctl start 777 pero no xD.
Apagando y Reiniciando un EV
Para reiniciar:
# vzctl restart 101
Para apagar:
# vzctl stop 101
Borrando EV's
Para borrar un EV primero hay que detenerlo, borrarlo, desmontarlo y borrar la carpeta donde estaba, esto lo hacemos así, imaginando que el ID es 123:
# vzctl stop 123 # vzctl destroy 123 # rm /etc/vz/conf/123.conf.destroyed # umount /vz/private/123 # rm -rf /vz/private/123
Ejecutando comandos desde el NH sin usar SSH
Podemos ejecutar comandos sobre cualquier EV desde el NH, esto se vuelve poco practico si podemos usar vzctl enter, pero también nos puede ser útil para una consulta rápida o hacer un cambio simple como reiniciar apache:
# vzctl exec 101 "/etc/init.d/apache2 restart"
o que tal un ls? xD
# vzctl exec 101 ls
Cambiando password de root desde el NH
Para esto solo hay que hacer:
# vzctl set 101 --userpasswd root:password_nueva
Administración del procesador
Las cuestiones referentes al procesador no se parecen a lo que nos podemos imaginar, básicamente necesitamos conocer 3 variables y al mismo tiempo entender el concepto, en openvz no se asigna capacidad de procesamiento en MHZ ni nada por el estilo.
Para conocer el estado actual de openvz referente al procesador, usaremos el comando vzcpucheck:
virtual:~# vzcpucheck Current CPU utilization: 98750 Power of the node: 100091 virtual:~#
Las variables de configuración son 3:
- cpuunits: Esta variable almacena el valor mínimo que una maquina virtual debe tener aun que el procesador este a tope, una maquina virtual no podra bajar de esta cantidad, aun si no esta haciendo nada.
- cpulimit: Este parámetro nos permite configurar un porcentaje del cual nuestro EV no podrá exceder, es decir podemos indicar que un EV no pase del 20% de uso del cpu por ejemplo.
- ve0cpuunits: Esta variable es similar cpuunits pero afecta únicamente al NH, con esto le decimos que el NH no podrá tener menos capacidad de procesador que el valor que especifiquemos ahí.
ve0cpuunits se encuentra en el archio vz.conf que en debian esta en /etc/vz/vz.conf, cpulimit y cpuunits se especifican en el archivo de configuración de cada maquina virtual o con el comando:
vzctl set 101 --cpuunits 30000 --cpulimit 50 --save
Aqui especificamos que el EV 101 cuente mínimo con el 30 por ciento si el valor de "Power of the node" del comando vzcpucheck es de 100000, ademas le indicamos que no exceda el 50% de todo el poder de procesamiento.
Una vez que conozcamos el valor de "Power of the node" podremos decidir. El valor de "Power of the node" es un valor que tomaremos como valor absoluto, es la capacidad del proc, así si queremos asignar al EV 102 el 10% mínimo de nuestro proc multiplicaremos este valor por .1 y el resultado sera lo que hay que poner como cpuunits.
Administrando el espacio en disco duro
Por default openvz asigna 1024mb para cada maquina virtual, podemos modificar este parámetro fácilmente pero primero debemos detener el EV:
# vzctl stop 101 # vzctl set 101 --diskspace 20000000:22000000 --save # vzctl start 101
Esto asignara 20gb de disco duro para el EV 101 y nos dará 2gb de chance por si nos pasamos, también podemos modificar la variable QUOTATIME en el archivo de configuración de este EV, QUOTATIME nos permite establecer cuanto tiempo podemos exceder el espacio establecido en disco duro.
Con esto tenemos todos los conocimientos básicos para trabajar manejar nuestro openvz sobre debian.
Manejo de quotas para usuariso y grupos
OpenVz nos permite manejar quotas para grupos y usuarios como se aria en un sistema linux normalmente, para esto sera necesario tener instalado el paquete quotatool de debian:
#apt-get install quotatool
La configuración para las quotas es sencilla pero debe hacerse con cuidado, existe una variable llamada DISK_QUOTA en él archivo de configuración general de openvz y en cada uno de los archivos de configuración de los EV's, la configuración mas adecuada es colocar DISK_QUOTA=yes en el archivo principal y habilitar en cada EV la misma variable solo si vamos a utilizar las quotas de segundo nivel.
#cat /etc/vz/vz.conf |grep DISK_QUOTA DISK_QUOTA=yes
Esto nos muestra que las quotas están activadas en el nodo principal.
Ahora que sabemos que podemos usar quotas, sera necesario cambiar la variable DISK_QUOTA a yes en el entorno virtual que queremos restringir. Además agregaremos la nueva variable QUOTAUGIDLIMIT al archivo de configuración de este EV, esta variable almacena un numero que debe ser mayor al numero de usuarios reales del EV que se encuentran en /etc/passwd del EV:
#vactl stop 101 #vzctl set 101 --quotaugidlimit 100 --save #Unable to apply new quota values: ugid quota not initialized #Saved parameters for VPS 101 #vzctl start 101
Esto nos activara el sistema de quotas, para comprobarlo daremos:
# vzquota stat 101 –t
resource usage softlimit
1k-blocks 38281 1000000
inodes 45703 90000
User/group quota: on,active
Ugids: loaded 34, total 34, limit 100
Ugid limit was exceeded: no
El comando vzquota nos muestra mucha información, pero lo importante es ver on en la linea que dice User/group quota: on,active, de otro modo no podremos manejar quotas para usuarios y grupos.
Ahora podemos manejar las quotas normalmente en el entorno virtual:
vzctl enter 101 edquota usuario
Esto nos abrirá el archivo de configuración de las quotas con algún editor, puede ser vim, nano o emacs, el archivo es binario y se encuentra en la raiz de la partición, este archivo se llama aquota.user y no debe ser editado sin el comando edquota.
Disk quotas for user usuario (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/simfs 4 0 5120 1 0 0
En este caso hemos modificado el parámetro hard que nos permite restringir a 5mb el espacio que el usuario puede ocupar en el sistema.
Administración de memoria
Openvz administra los parámetros de memoria en base a 4 variables por maquina virtual:
- VMGUARPAGES= Memoria disponible para el EV
- OOMGUARPAGES= Garantía de memoria cuando se pasa el valor de privvmpages
- PRIVVMPAGES= Cantidad de memoria asignara por aplicación
- KMEMSIZE= Memoria no swappeable del kernel
La forma mas fácil de modificar estos valores por ejemplo para configurar una maquina virtual con 256mb de memoria:
vzctl set 101 --vmguarpages 256M --save vzctl set 101 --oomguarpages 256M --save vzctl set 101 --privvmpages 49152:53575 --save
Plantillas para la memoria
Como ya se vio en el documento "Instalacion, configuracion y Administracion de OpenVz", hay un archivo de configuración por cada maquina virtual en la ruta /etc/vz/conf/VID.conf en estos archivos se coloca básicamente cuanta memoria, procesador y disco duro podrá usar un entorno virtualizado , sin embargo, la dificultades técnicas de administración de memoria en OpenVz me lleva a colocar las configuraciones estándar para memoria con paridad desde 64mb hasta 2gb en ram.
Estas configuraciones servirán de plantilla para modificar los archivos conf de las maquinas virtuales. Dejo como referencia esta web: http://wiki.vpslink.com/
Entorno Virtual con 64mb de ram
ONBOOT="yes"
# UBC parameters (in form of barrier:limit) # Primary parameters vpslink => 64 MB
# Memory Resource Limits KMEMSIZE="3697698:3892314" LOCKEDPAGES="128:128" OOMGUARPAGES="13107:2147483647" PHYSPAGES="0:2147483647" PRIVVMPAGES="14860:14860" SHMPAGES="6400:6400" VMGUARPAGES="14860:2147483647"
# Buffer Resource Limits DCACHESIZE="1006632:1006632" DGRAMRCVBUF="167772:335544" OTHERSOCKBUF="335544:671088" TCPRCVBUF="335544:671088" TCPSNDBUF="335544:671088"
# Process and File Limits AVNUMPROC="64:64" NUMFILE="2048:2048" NUMFLOCK="128:128" NUMIPTENT="192:192" NUMOTHERSOCK="128:128" NUMPROC="80:80" NUMPTY="8:8" NUMSIGINFO="128:128" NUMTCPSOCK="128:128"
Entorno Virtual con 128mb de ram
ONBOOT="yes"
# UBC parameters (in form of barrier:limit) # Primary parameters vpslink => 128 MB
# Memory Resource Limits KMEMSIZE="7395396:7784628" LOCKEDPAGES="256:256" OOMGUARPAGES="26214:2147483647" PHYSPAGES="0:2147483647" PRIVVMPAGES="29720:29720" SHMPAGES="12800:12800" VMGUARPAGES="29720:2147483647"
# Buffer Resource Limits DCACHESIZE="2013265:2013265" DGRAMRCVBUF="335544:671088" OTHERSOCKBUF="671088:1342177" TCPRCVBUF="671088:1342177" TCPSNDBUF="671088:1342177"
# Process and File Limits AVNUMPROC="128:128" NUMFILE="4096:4096" NUMFLOCK="256:256" NUMIPTENT="384:384" NUMOTHERSOCK="256:256" NUMPROC="160:160" NUMPTY="16:16" NUMSIGINFO="256:256" NUMTCPSOCK="256:256"
Entorno Virtual con 256mb de ram
ONBOOT="yes"
# UBC parameters (in form of barrier:limit) # Primary parameters vpslink => 256 MB
# Memory Resource Limits KMEMSIZE="14790793:15569256" LOCKEDPAGES="512:512" OOMGUARPAGES="52428:2147483647" PHYSPAGES="0:2147483647" PRIVVMPAGES="59441:59441" SHMPAGES="25600:25600" VMGUARPAGES="59441:2147483647"
# Buffer Resource Limits DCACHESIZE="4026531:4026531" DGRAMRCVBUF="671088:1342177" OTHERSOCKBUF="1342177:2684354" TCPRCVBUF="1342177:2684354" TCPSNDBUF="1342177:2684354"
# Process and File Limits AVNUMPROC="256:256" NUMFILE="8192:8192" NUMFLOCK="512:512" NUMIPTENT="768:768" NUMOTHERSOCK="512:512" NUMPROC="320:320" NUMPTY="32:32" NUMSIGINFO="512:512" NUMTCPSOCK="512:512"
Entorno Virtual con 512mb de ram
ONBOOT="yes"
# UBC parameters (in form of barrier:limit) # Primary parameters vpslink => 512 MB
# Memory Resource Limits KMEMSIZE="29581586:31138512" LOCKEDPAGES="1024:1024" OOMGUARPAGES="104857:2147483647" PHYSPAGES="0:2147483647" PRIVVMPAGES="118882:118882" SHMPAGES="51200:51200" VMGUARPAGES="118882:2147483647"
# Buffer Resource Limits DCACHESIZE="8053063:8053063" DGRAMRCVBUF="1342177:2684354" OTHERSOCKBUF="2684354:5368709" TCPRCVBUF="2684354:5368709" TCPSNDBUF="2684354:5368709"
# Process and File Limits AVNUMPROC="512:512" NUMFILE="16384:16384" NUMFLOCK="1024:1024" NUMIPTENT="1536:1536" NUMOTHERSOCK="1024:1024" NUMPROC="640:640" NUMPTY="64:64" NUMSIGINFO="1024:1024" NUMTCPSOCK="1024:1024"
Entorno Virtual con 1024mb de ram
ONBOOT="yes"
# UBC parameters (in form of barrier:limit) # Primary parameters vpslink => 1024 MB
# Memory Resource Limits KMEMSIZE="59163173:62277025" LOCKEDPAGES="2048:2048" OOMGUARPAGES="209715:2147483647" PHYSPAGES="0:2147483647" PRIVVMPAGES="237764:237764" SHMPAGES="102400:102400" VMGUARPAGES="237764:2147483647"
# Buffer Resource Limits DCACHESIZE="16106127:16106127" DGRAMRCVBUF="2684354:5368709" OTHERSOCKBUF="5368709:10737418" TCPRCVBUF="5368709:10737418" TCPSNDBUF="5368709:10737418"
# Process and File Limits AVNUMPROC="1024:1024" NUMFILE="32768:32768" NUMFLOCK="2048:2048" NUMIPTENT="3072:3072" NUMOTHERSOCK="2048:2048" NUMPROC="1280:1280" NUMPTY="128:128" NUMSIGINFO="2048:2048" NUMTCPSOCK="2048:2048"
Entorno Virtual con 2048mb de ram
ONBOOT="yes"
# UBC parameters (in form of barrier:limit) # Primary parameters vpslink => 2048 MB
# Memory Resource Limits KMEMSIZE="118326348:124554051" LOCKEDPAGES="4096:4096" OOMGUARPAGES="419430:2147483647" PHYSPAGES="0:2147483647" PRIVVMPAGES="475529:475529" SHMPAGES="204800:204800" VMGUARPAGES="475529:2147483647"
# Buffer Resource Limits DCACHESIZE="32212254:32212254" DGRAMRCVBUF="5368709:10737418" OTHERSOCKBUF="10737418:21474836" TCPRCVBUF="10737418:21474836" TCPSNDBUF="10737418:21474836"
# Process and File Limits AVNUMPROC="2048:2048" NUMFILE="65536:65536" NUMFLOCK="4096:4096" NUMIPTENT="6144:6144" NUMOTHERSOCK="4096:4096" NUMPROC="2560:2560" NUMPTY="256:256" NUMSIGINFO="4096:4096" NUMTCPSOCK="4096:4096"
Clonación de Entornos Virtuales
Podemos clonar un VE fácilmente, podemos generar un archivo tar.gz con que contenga una imagen de un VE que podremos mover a donde sea necesario, ya sea otro nodo hardware, hacer varias copias o simplemente como respaldo.
cd /vz/private rsync -vaP /vz/private/106/ ./106respaldo tar -cvf 106respaldo.tar 106respaldo gzip -9 106respaldo.tar
Montando puntos de montaje externos dentro de un VE
Dentro de un entorno virtual, es posible colocar puntos de montaje que se encuentren en el Nodo Hardware, para esto sera necesario agregar un archivo de nombre VEID.mount en /etc/vz/conf/ con un contenido similar a este:
#!/bin/bash
mount -n --bind /home/usuario1 /vz/root/101/home/usuario1
exit ${?}
Es muy importante señalar que el punto de montaje destino debe ser en /vz/root y no en /vz/private. El Script VEID.mount debe tener permisos de ejecución.
WVZ Un panel de administración
Es posible administrar los Nodos Hardware utilizando una herramienta web llamada WVZ, wvz requiere PHP y un servidor web corriendo en el nodo hardware. Dadas las caracteristicas del mismo, es importante proteger muy bien este panel permitiendo el acceso unicamente desde determinadas direcciones IP's con iptables y utilizar al menos auth basic en el servidor web.
Dado que el panel no tiene grandes requisitos, es buena idea utilizar un servidor web muy ligero como nginx, lighttpd o cherokee y php en modo fast-cgi. Puedes conseguir WVZ en http://homaly.dunanet.hu/wvz/ .
Procedemos a descomprimir wvz en el nodo hardware:
# tar -xvzf /home/gaper/wvz-0.1.0.tar.gz # cd wvz-0.1.0/ # vim install.sh
Modificamos las siguientes variables:
WVZDIR=/vz/wvz WVZTMPDIR=/vz/wvz/tmp HTTPUSER=nginx HTTPGROUP=nginx WVZWWWDIR=/home/htdocs
Iniciamos la instalación:
# ./install.sh
Ahora es necesario editar el archivo de configuración de la interfaz web editando /home/htdocs/_config.php
$rootpass = "g3nt00"; $v = "/vz/wvz/suwvz";
Esto nos dejara el panel funcionando en http://localhost/ es recomendable cambiar el password de root (el password de root de wvz debería ser diferente al password de root en el sistema).
