lunes, diciembre 11, 2006

Servidores virtuales en Debian con VServer (parte I)

Se dice que
"Necesidad, que es la madre de la invención" - Platón en "La República". (1)
por supuesto algunos disienten,
"No pienso que la necesidad es la madre de la invención - la invención, en mi opinión, surge directamente de la ociocidad, posiblemente también de la holgazanería. Para ahorrarse problemas uno mismo." - Agatha Christie en "Una Autobiografía". (2)
En cualquier caso, menos mal que lo que yo necesitaba ya estaba inventado (punto a favor para la definición 2).

El tópico de hoy es Servidores virtuales en Debian con VServer. Pero primero ¿qué es un servidor virtual?
"Un servidor virtual privado (también designado como servidor virtual dedicado o servidor virtual y abreviado como VPS o VDS) es un servidor que se ejecuta mediante virtualización en tándem con otros servidores virtuales en una computadora física." - Wikipedia
Las posibilidades en virtualización son varias, cada una con un buen compendio de ventajas y desventajas. Pueden encontrar una comparativa de máquinas virtuales en Wikipedia. Las implementaciones más conocidas son:
El sistema operativo en mi máquina de trabajo es Debian Etch, una versión de Debian que aún no está liberada como estable (aunque pronto lo estará). Nuestros servidores corren actualmente Debian Sarge (la versión estable actual) con las correspondientes actualizaciones de seguridad.

La virtualización es útil, en mi caso, para verificar el comportamiento de las aplicaciones en el entorno de trabajo en el que serán ejecutadas sin necesidad de tener un equipo adicional ni requerir un inicio dual con dos sistemas operativos en el equipo de desarrollo (lo que sería sumamente tedioso dado implica reiniciar el equipo para cambiar entre el entorno de desarrollo y el de implementación).

De las opciones anteriormente mencionadas opté por Linux-VServer sin muchas razones más que la facilidad de instalación.

La tecnología Linux-VServer es, según su página web:
... un concepto de particionamiento liviano basado en Contextos de Seguridad que permite la creación de muchos Servidores Virtuales Privados (VPS) independientes que se ejecutan simultáneamente sobre un único servidor virtual a máxima velocidad, compartiendo eficientemente los recursos de hardware.

Un VPS provee un entorno operativo casi idéntico al de un servidor Linux convencional. Todos los servicios como servidores de ssh, correo, web y bases de datos pueden ser iniciados en e VPS, sin modificación (o con mínimas modificaciones en casos especiales), tal como cualquier en otro servidor real.

Cada VPS tiene su propia base de datos de cuentas de usuarios y su propio usuario root, y está aislado de los demás servidores virtuales, exceptuando el hecho de que comparten los mismos recursos de hardware."

A diferencia de Xen, donde un host puede ejecutar VPS con distintos sistemas operativos, Linux-VServer es un virtualizador que opera a nivel de Sistema Operativo y utiliza el mismo kernel en el host y en los diferentes VPS, con lo cual está limitado a Linux, y preferentemente a la misma distribución que el host. Esta característica le brinda a su vez una gran ventaja: muy buen rendimiento. Pueden encontrar mucha más información leyendo el Paper sobre Linux-VServer disponible en la web del proyecto.

Esta guía es una traducción con ligeras modificaciones de "Linux-Vserver on Debian Testing (Etch), the easy way", publicada en el sitio HowtoForge.

1. Preparación del host

Necesitaremos una imagen de kernel con los parches para VServer. Debian ya nos provee imágenes preparadas, de las cuales se puede optar para la más conveniente de acuerdo a la arquitectura del host. En mi caso, descargaré linux-image-vserver-k7.

# apt-get install linux-image-vserver-k7

También será necesario descargar las utilidades para VServer:

# apt-get install util-vserver vserver-debiantools

Una vez hecho todo esto se debe reiniciar el equipo para iniciar con el nuevo kernel. Al finalizar el arranque, verificar que el kernel iniciado es el que contiene los parches VServer con

# uname -r
2.6.18-3-vserver-k7

Este kernel no es muy diferente al estándar, los módulos disponibles son prácticamente los mismos. Incluso es posible iniciar un servidor X (si es que no inició automáticamente), aunque sólo lo recomiendo si tienen bastante memoria disponible (mas de 512, preferentemente).

2. Creación de un servidor virtual

Antes de continuar debemos establecer ciertas variables que serán necesarias para la creación del nuevo VPS:
  • vsroot - Esto apuntará a un directorio o partición donde se mantendrán los archivos para cada VPS. Por defecto es /var/lib/vservers
  • Hostname - El hostname de nuevo sistema
  • Domain - El dominio del nuevo sistema (usualmente el mismo de host)
  • IP Address- La dirección IP del nuevo VPS
  • CIDR Range - La máscara de la IP anterior
  • Dist - La distribución a instalar
  • Debian Mirror - El espejo desde el cual se deben descargar los paquetes
  • Interface - La interfaz de red a utilizar, si no es eth0
Para este ejemplo, crearé un servidor virtual con los siguientes datos:
  • vsroot: /var/lib/vservers
  • hostname: mendieta
  • domain: example.com
  • ip address: 192.168.3.101 <= puede ser pública o privada
  • máscara: /24
  • dist: sarge
  • mirror: http://ftp.br.debian.org/
  • interface: eth0
Nota: si son impacientes y no quieren esperar a bajar los paquetes desde el mirror porque tienen un CD de Sarge, pueden montar rápidamente un mirror casero aprovechando un servidor web o ftp existente. Por ejemplo utilizando vsftpd, solo deben crear un directorio debian dentro de la raíz anónima (usualmente /home/ftp) y copiar allí los directorios /pool y /dist del cdrom (o crear un enlace simbólico, lo que prefieran) . En tal caso el mirror será http://localhost/debian/
De esta forma se agiliza mucho la instalación. No hay que olvidarse de, en el corto plazo, efectuar una actualización contra los repositiorios security.debian.org, a fin de no quedar utilizando versiones comprometidas de los servicios disponibles.

Bien con eso alcanza para crear el primer VPS. Sólo hay que llamar a newvserver con los parámetros dados:

# newvserver --vsroot /var/lib/vservers/ --hostname mendieta --domain example.com --ip 192.168.3.101/24 --dist sarge --mirror ftp://localhost/debian/ --interface eth0

Tras un ratito de descarga y configuración donde hay que responder algunas preguntas (la clave que se asignará a root, por ejemplo), el VPS estará disponible.

3. Control del servidor virtual

Para controlar el servidor virtual se utiliza el comando vserver de la siguiente forma:

vserver [start | stop | restart | enter]

Por ejemplo, para iniciar el servidor recientemente creado, solo hay que ejecutar

# vserver mendieta start

Si se desea detener el VPS, reemplazar start por stop.

Finalmente, para ingresar al servidor virtual, se debe ejecutar:

# vserver mendieta enter
mendieta:/#

Y allí ya tenemos un VPS con Debian Sarge en el cual podemos instalar lo que sea necesario utilizando apt-get o aptitude.

Hasta acá llego con el post de hoy. La segunda parte tratará sobre la instalación y configuración de servicios tanto en el VPS como en el host, y el establecimiento de reglas de enrutado a fin de permitir el acceso externo a los servicios brindados por el VPS.

Como siempre, espero que todo haya sido de utilidad.

No hay comentarios.: