Instrucciones para instalar Proxmox sin RAID en OVH y alternativas prácticas al cluster Proxmox sin multicast
Revisado para Proxmox VE 3.0
rev. 28/08/2013
Tiempo de ejecución: 30 minutos
Equipo utilizado para este ejemplo:
mSP 2013 (32GiB de RAM y 2x2TB de disco)
TODO lo explicado en el tutorial fue utilizado en equipos en producción con excelentes resultados
Fuentes de información:
Foros de OVH.es (principalmente)
Web Oficial de Proxmox
Búsquedas en Google
Pruebas ensayo-error
Manager OVH
Reinstalar con estas particiones eligiendo particionado personalizado formateando sólo el primer disco.
Código:
1 primaria ext3 / - 10240MB
2 primaria swap none - 2048MB
En nuestro servidor de DNS o registrador de dominios hacemos un
registro de tipo A con el hostname que vamos a usar en nuestro servidor Proxmox y su IP como destino.
Luego vamos al
Manager de OVH → Servicios → Inversa IPv4
Ponemos el nombre de máquina que decidimos para el registro A
Accedemos al servidor por consola SSH
Código:
ssh -p 22 root@nodo1.sudominio.com
Actualizamos el sistema y cambiamos el password que nos mandó OVH
Código:
aptitude update && aptitude upgrade -y && passwd
Editamos
/etc/hostname y dejamos sólo una línea con nuestro hostname. Ej: nodo1.midominio.com
Código:
nano /etc/hostname
Editamos
/etc/hosts y editamos la línea que aparece con el hostname generado por OVH y lo adaptamos al que elegimos nosotros. Ej: xxx.xx.xx.xxx nodo1.sudominio.com nodo1
Reiniciamos para que tenga efecto:
Regeneramos y reemplazamos nuestra clave public/private con el mismo nombre y sin passphrasse, para que reflejen nuestro nuevo nombre host:
Código:
ssh-keygen -t rsa
Cambiamos nuestro puerto de SSH por otro no estándar. Ej: Port 2222
Código:
nano /etc/ssh/sshd_config && /etc/init.d/ssh restart
Volvemos a acceder al servidor usando el nuevo puerto
Código:
ssh -p 2222 root@nodo1.clondns.com
Info: aquí yo veo interesante hacer el punto 3 del apartado “Cosas Opcionales” que hay al final de este manual, aplicándolo entre nuestro ordenador de trabajo y el servidor. Se trata de utilizar la llave que hemos generado para hacer login y evitarnos tener que escribir la contraseña cada vez que nos conectamos por ssh.
Ahora, paramos el servicio VZ, copiamos el directorio
/var/lib/vz a
/tmp,
eliminamos el enlace simbólico /vz y eliminamos el contenido de
/var/lib/vz, todo con esta línea.
NO REINICIAR O PERDEREMOS /vz
Código:
/etc/init.d/vz stop && cp -ar /var/lib/vz /tmp/ && unlink /vz && rm -rf /var/lib/vz/*
Ahora vamos a modificar el particionado
Vaciamos completamente el disco 2 cambiando la tabla actual a MSDOS.
Código:
parted /dev/sdb mklabel msdos && partprobe
Creamos la
partición 3 en el
disco 1 ocupando todo el espacio libre. Fijarse en marcar justo el número de cluster siguiente al de END de la segunda partición (swap), porque fdisk va a sugerirnos un pequeño espacio al principio del disco. Con esta línea tendremos el dato mano para copiarlo bien.
Código:
fdisk -l && fdisk /dev/sda
Elegimos estas opciones por orden: Nueva partición, primaria, partición 3
Cambiamos el tipo de partición y grabamos todo: Tipo de formato, partición 3, LVM, grabar.
Creamos una
partición de backup en el
disco 2 que ocupe
todo el espacio.
Usar estas opciones.
Por último, aplicamos la nueva tabla en caliente y comprobamos que todas las particiones están como las queremos. Si no, habrá que repetir los pasos anteriores.
Código:
partprobe && fdisk -l
Damos formato a la partición de backup, como recomiendan los desarrolladores de Proxmox, siempre
ext3.
Código:
mkfs.ext3 /dev/sdb1
Pasamos a preparar el LVM para poder hacer snapshot
Info: Orden de creación de las diferentes partes del LVM es PV → VG → LV
info: Orden de eliminación de las diferentes partes del LVM es LV → VG → PV
Vamos a ver entonces que tenemos de cada tipo.
Código:
pvdisplay && vgdisplay && lvdisplay
Si existe alguno, los eliminamos en el orden inverso a como se crean usando este comando de ejemplo. En el comando debes indicar el nombre del grupo LVM (VG) que necesitas eliminar y el volumen físico (PV). Indicando el grupo junto a lvremove puedes eliminar todos sus volúmenes lógicos (LV) que contiene de golpe.
Código:
lvremove vg1 && vgremove vg1 && pvremove /dev/sda3
Ahora que está todo sin LVM vamos a crear los que necesitamos. Antes de empezar, tener claro que
LVM prefiere usar GiB en sus visualizaciones por consola, así que para tener números redondos yo usaré
múltiplos de 1024MB durante todo el proceso.
Creamos el volumen físico y el grupo de volúmenes. Puedes cambiar
vg1 por tu nombre favorito.
Código:
pvcreate /dev/sda3 && vgcreate vg1 /dev/sda3
Vemos el espacio disponible para decidir cuanto dejamos libre.
Podemos ser generosos, siempre se puede reducir en caliente después de monitorizar el uso real que hacen nuestras máquinas, incrementando el lv1.
Info: ¿Como decidir cuanto necesito dejarle? Sabiendo que aquí guarda los cambios del CT que se producen desde el inicio del backup hasta que lo termina, deberás pensar en cuanto tiempo tardará en hacer el snapshot y cuantos GiB de cambios puede haber en ese tiempo.
Si se llena el LVM temporal al 100%, no terminará el backup.
IMPORTANTE: sumar 1GiB al espacio que queramos para snapshot. Si quieres 50GiB, deja 51GiB libres.
Info: ¿Por que? Porque luego le modificaremos el valor predeterminado a vzdump y necesitamos un pequeño margen de error. Si asignamos X GiB y resulta que faltan 10MB libres para que entre, fallará.
Creamos el Volumen donde estarán nuestros CT y otras cosas (/vz) restando los 50GiB que he decidido dejar para las snapshots, más 1GiB de margen extra. En mi caso: 1,81TiB x 1024MB = 1853,44GB – ~51GiB=
1800GB
Código:
lvcreate --size 1800G --name lv1 vg1
Ahora verificamos el espacio que quedó realmente libre para ver si está todo como queremos.
Si no quedó libre la cantidad que queríamos, ejecutar
lvremove vg1 y vuelves a crear el grupo y el volumen.
Ahora vamos al
.conf de vzdump para pedirle que use todo el espacio libre. Por defecto usa 1024MB.
Info: Proxmox, en backup manual o programado, sólo hace un snapshot a la vez, por lo que no utiliza varios LVM temporales a la vez. Va haciendo una cola de espera y los hace por turnos. El espacio que dejamos libre, sólo lo usará un snapshot, así que vamos a decirle que lo use entero. Si no, no servirá de nada dejarle tanto espacio libre. Imprescindible para snapshot grandes o con mucho movimiento de datos durante el backup.
Código:
nano /etc/vzdump.conf
Y añadiremos esta variable fija. En este caso para que use 50GiB del espacio libre.
Código:
#size: MB
size: 51200
Verificamos toda la estructura: nombres de volumen, tamaños, espacios libres...
Código:
pvdisplay && vgdisplay && lvdisplay
Como todo está bien, aprovechado al máximo con seguridad, seguimos dando formato al volumen lógico (LV).
Código:
mkfs.ext3 /dev/vg1/lv1
Montamos el nuevo LV, recuperamos la carpeta /vz a su sitio y rehacemos el enlace simbólico, con esta línea.
Código:
mount -t ext3 /dev/vg1/lv1 /var/lib/vz && cp -ar /tmp/vz /var/lib/ && ln -s /var/lib/vz /vz
Creamos el directorio de backups y lo montamos en el segundo disco.
Código:
mkdir /backups_nodo1 && mount -t ext3 /dev/sdb1 /backups_nodo1
Ahora editamos el
fstab para optimizar el rendimiento del disco evitando escrituras innecesarias.
Añadimos la opción
noatime a la partición 1 y quitamos la opción
discard (si la hay),
Código:
/dev/sda1 / ext3 errors=remount-ro,noatime 0 1
añadimos las dos nuevas particiones a continuación de
/dev/sda2 para que se monten al arrancar.
Código:
/dev/vg1/lv1 /var/lib/vz ext3 defaults,noatime 0 2
/dev/sdb1 /backups_nodo1 ext3 defaults,noatime 0 3
LISTO, podemos reiniciar el servidor y empezar a usarlo
Info: aunque ya hemos terminado lo mínimo recomendable para empezar a usar Proxmox, te aconsejo que leas el apartado de “Cosas Opcionales” de la siguiente hoja.
Cosas opcionales
1. Si eres perfeccionista, entra al Manager de Proxmox, pulsa el nodo y cambia el Tiempo a tu zona horaria.
2. Si vas a hacer una migración de todas las máquinas y quieres que sea lo más rápido posible, valora el aumentar el límite de ancho de banda de vzdump.
Si lo haces con máquinas paradas, asigna el 100% de tu ancho de banda.
Si vas a hacerlo en live, revisa tus estadísticas de uso y asigna lo que normalmente está libre para que tus clientes lo noten menos y tu hagas la migración lo más rápido posible.
Código:
nano /etc/vzdump.conf
Añade esta variable fija. Con este valor usará hasta 50Mbps de tu ancho de banda disponible.
Cálculo: 1Mbits = 128 KBps
Código:
#bwlimit: KBPS (KiloBytesps)
bwlimit: 6400
3. Generar y compartir claves pública/privada para conectarnos entre nuestros nodos sin contraseña
Imprescindible si quieres usar vzmigrate desde la consola. Si ya tienes una generada, haz sólo la línea 3.
Código:
destino # mkdir ~/.ssh
origen # ssh-keygen -t rsa
origen # cat .ssh/id_rsa.pub | ssh -p 2222 root@nodo1.sudominio.com 'cat >> .ssh/authorized_keys'
Y comprobamos que al conectarnos con ssh desde el equipo origen no nos pide contraseña.
Código:
ssh -p 2222 root@nodo1.sudominio.com
Esto también es útil hacerlo con tu ordenador de trabajo para “consolear” más cómodo.
4. Con este comando puedes migrar máquinas en modo live usando el vzmigrate
Imprescindible hacer el punto 3 antes de seguir. Luego con este comando puedes migrar las máquinas e ir deteniéndolas en local si la migración fue correcta.
Me evito las complicaciones del cluster sin multicast.
Código:
vzmigrate -r no --ssh="-p 2222" --rsync="-z --bwlimit=11520" --keep-dst --live -v -v IP_NODO_PROXMOX 101 && vzctl stop 101
Y esta es la explicación del comando:
Código:
vzmigrate : la herramienta de migración
-r no : sin eliminar el CT en origen
--ssh="-p 2222" : indicando el puerto ssh del equipo destino
--rsync="-z –bwlimit=11520" : usando compresión en el protocolo de envío y límite de 90Mbps de ancho de banda
--keep-dst : si se interrumpe el proceso, mantiene lo ya ha copiado en destino y sincronizar en el reintento
--live : migrar sin parar el CT en origen
-v -v : va mostrando por consola los archivos que va copiando
IP_NODO_PROXMOX : IP del Proxmox destino. NO DEL CT
101 : es el CTID del contenedor que vamos a mover.
Para mover varios CT seguidos, poner los CTID separados con :
Ej: 101:102:103:12
5. Crear un directorio compartido entre dos servidores para traspasar datos de forma segura es una buena idea. Para mandar backups directamente a otro nodo o restaurar copias que tenemos en otro nodo. El otro equipo no tiene por que ser Proxmox. Simplemente con tener SSH ya sirve. Puede ser un equipo de backups o nuestro equipo de oficina. Usaremos
sshfs para esta gran utilidad. Una vez más,
adiós cluster.
Comprobamos que tenemos kernel 2.6.14 o superior.
Instalamos sshfs.
Código:
aptitude install sshfs
Cargamos el módulo.
Hasta aquí sólo hace falta hacerlo una vez.
Ahora, cada vez que nos haga falta enlazar un directorio en destino, usamos un comando como este en el equipo origen. El directorio origen donde vamos a hacer el montaje deberá estar ya creado, como siempre. Si no existe, lo creamos con la primera línea (mkdir). Si no usa la segunda directamente.
Código:
mkdir /home/usuario/backups_nodo1
sshfs -p 2222 root@nodo1.sudominio.com:/backups_nodo1 /home/usuario/backups_nodo1
Para desconectar el directorio.
Código:
fusermount -u /home/usuario/backup_nodo1
6. Hacer un backup de los metadatos de la estructura de nuestro LVM, no del contenido:
Esta copia es almacenada en un archivo dentro de
/etc/lvm/archive
Debemos descargarnos al menos los dos últimos archivos *.vg y guardarlos en local. Nos servirán para una recuperación de la estructura del LVM usando este comando.
Esto nos permita recuperar la estructura del LVM y por tanto, facilitar el trabajo a otras herramientas para recuperar los datos. Es como recuperar la tabla de particiones del LVM.