Archivo

Archive for 10 septiembre 2008

OpenVZ en Ubuntu Hardy

septiembre 10, 2008 2 comentarios
Aprovechando el nuevo equipo de Empresa tuve que migrar los EV ( entornos virtuales ) del viejo equipo al nuevo, y estuve pensando en postearlo, pero como lo de la migración a secas es una gilipollez, pues voy a postear la instalación y configuración de OpenVZ y un EV ( Entorno Virtual ) que será Debian Etch.

OpenVZ según la wikipedia es una tecnología de virtualización en el nivel de sistema operativo basada en el núcleo y sistema operativo 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). Más info aquí.

Objetivo: Instalación de OpenVZ y un EV Debian Etch

Escenario: Ubuntu Hardy. En debian acaba de portarse a lenny, pero hardy lo tenía más a mano. De todas formas, los EV pueden migrarse fácilmente si después se quiere integrar en Lenny.

Pasos:

– Instalar el último núcleo de OpenVZ y sus utilidades:
aptitude install linux-image-2.6.24-19-openvz vzctl vzquota

– Reiniciar y arrancar con el núcleo de OpenVZ

– Tenemos que hacer unos cambios en el fichero /etc/sysctl.conf, entre otras cosas para que haga forward y nuestros EV tengan red:
net.ipv4.ip_forward=1
Guardamos y ejecutamos este comando para que se apliquen los cambios:
sysctl -p

– Instalación del EV Debian Etch a través de una plantilla:
Podéis encontrar plantillas de varias distribuciones linux aquí:
Nosotros bajamos debian-4.0-amd64-minimal.tar.gz y la copiamos en /var/lib/vz/templates/cache
Yo bajé debian para amd64 porque mi ubuntu es de 64bits, si utilizáis ubuntu de 32bits, bajar debian-4.0-i386-minimal.tar.gz

Ahora vamos a crear el EV. Cada EV se identifica por un Id que le asignamos al crearlo.
Por defecto, la máquina anfitriona es el Id 0. Además OpenVZ se reserva los Ids del 0 al 100 para cuestiones internas ( actualizaciones, etc ) por lo que empezaremos asignando Ids a nuestros EV a partir del 101.
Para la creación de un EV, y asignación de recursos, cuotas, etc ( mirar man ) se usa el comando vzctl.

Creamos el EV Debian Etch con el Id 101 a partir de la plantilla
debian-4.0-amd64-minimal:
vzctl create 101 –ostemplate debian-4.0-amd64-minimal

– Configuracion del EV:

* Que se inicie en el arranque:
vzctl set 101 –onboot yes –save

* Parámetros de Red:
vzctl set 101 –hostname nombre.del.host –save
vzctl set 101 –ipadd le.damos.una.ip –save
vzctl set 101 –nameserver ip.del.dns –save

* Especificar clave de root para el EV:
vzctl set 101 –userpasswd root:pass

– Operaciones Básicas con el EV:

* Arrancar el EV:
vzctl start 101

* Detener el EV:
vzctl stop 101

* Reiniciar el EV:
vzctl restart 101

* Eliminar el EV:
vzctl destroy 101

* Entrar en el EV:
vzctl enter 101

* Ejecutar un comando desde fuera del EV en el EV:
vzctl exec 101 comando
Ej: vzctl exec 101 /etc/init.d/ssh start

* Listar los EVs del sistema:
vzlist -a

– Ahora podéis conectaros de 2 formas, entrando en él
vzctl enter 101
o a través de ssh
ssh -l root ip.EV

– Migración de EV 101 de Server1 a Server2:

Migrar un EV de un server con OpenVZ a otro con, lógicamente, OpenVZ, es lo más sencillo del mundo.
Sólo se necesita un requisito, que el acceso por ssh sea sin contraseña, ya que la migración se realiza por medio de este servicio.

Hay dos tipos de migración:

* Migración online:
Server1: vzmigrate –online ip.Server2 101

* Migración offline:
Server1: vzmigrate ip.Server2 101

Las ventajas que yo le veo a OpenVZ es su sencillez en la instalación, tanto del propio OpenVZ como de los EVs. Además de lo fácil que resulta migrar los EVs
de un servidor que se nos quedó pequeño a otro con más potencia.

Una de las curiosidades que me he encontrado leyendo la documentación, es cómo la gente aprovecha OpenVZ no para el principal fin para el que fué
creado, tener varias máquinas virtuales en un único servidor para sacarle el máximo rendimiento al hardware, sino que muchos únicamente tienen un
único EV en el servidor, que tiene asignado el máximo de recursos de éste.
¿ Por qué ? Pues precisamente para aprovecharse de la facilidad de
migración, y ser independiente del hardware. De esta forma, si tienes un servidor crítico que te está dando fallos, no tienes que volver a instalar
todo de 0, migras el EV a otro servidor, y en 10 minutos está todo funcionando otra vez.

Como véis las ventajas son muchas.

En este enlace tenéis el Open-VZ-Users-Guide.pdf del que saqué esta información ( está en inglés ), y dónde podéis entrar en más detalle sobre la
asignación y modificación de recursos al EV ( cpu, memoria, disco, etc ).

Espero que no haya sido un tostón.

Actualización 1:

Asignar máximo de recursos a un EV

Para asignar el máximo de recursos a un EV y que éste aproveche al máximo el hardware del equipo anfitrión tendremos que hacer varias cosas:

1. Asignar CPU al límite:

Ejecutamos vzcpucheck para ver la utilización de la cpu y el poder real:
Current CPU utilization: 2000
Power of the node: 122225

Para cambiar los valores usamos cpuunits, que indica el minimo de cpu garantizado para nuestro EV; y cpulimit que indica el máximo en porcentaje de uso del cpu.

Vamos a poner que nuestro EV 101 use el 90% de nuestra cpu con un minimo de 120000, ya que sólo vamos a tener este EV en el anfitrion:

vzctl set 101 --cpuunits 120000 --cpulimit 90 --save

2. Tamaño de disco:
Por defecto el tamaño de disco por defecto es 1GB. Tendremos que aumentarlo al valor que queramos:

vzctl stop 101
vzctl set 101 --diskspace 50000000:55000000 --save
vzctl start 101

Esto nos asigna un tamaño de 50GB con un margen de 5GB.

Categorías:Uncategorized

Acceder Mediante SSH Sin Contraseña

septiembre 9, 2008 1 comentario

Sí, vale, lo reconozco, ya sé que hay tropecientas mil páginas dónde cuentan como se hace. Pero también es verdad que siempre que lo necesito hacer estoy 10 minutos buscando, así que lo pongo aquí y lo tengo a mano. Además que este blog no lo lee nadie, así que iros a protestar a otro lado.

Objetivo: Entrar como usuario root ( sí, que vale otra vez, que no se debe entrar como root, que pesados que sois ) desde server2 a server1 sin contraseña.

Método:

En server2, como usuario root ejecutar:
ssh-keygen -t rsa y dar a enter las veces que haga falta.
Esto creará:

  • /root/.ssh/id_rsa –> Clave privada
  • /root/.ssh/id_rsa.pub –> Clave publica

Si en el server1, en la ruta /roo/.ssh/ no existe el fichero authorized_keys:

  • Copiamos el archivo de server2 /root/.ssh/id_rsa.pub y lo pegamos en server1 en /root/.ssh/ con el nombre authorized_keys

Si ya existe el fichero authorized_keys en server1:

  • Copiamos el archivo de server2 /root/.ssh/id_rsa.pub a /tmp en server1 y lo agregamos a authorized_keys con:

cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys desde server1

Si ahora entramos desde server2 por ssh como root, no nos debería pedir contraseña.

Categorías:Linux