Cluster HA Con PVE
Short Description
Descripción: cluster...
Description
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
INDICE 1.
INTRODUCCION Y FINALIDAD DEL PROYECTO ............................................................................................. 2
2.
REQUISITOS PREVIOS Y EQUIPAMIENTO HARDWARE UTILIZADO .............................................................. 3
3.
INSTALACION DE PROXMOX VIRTUAL ENVIRONMENT .............................................................................. 4
4.
CREACION DEL CLUSTER DE SERVIDORES .................................................................................................. 12
5.
INSTALACION DE SERVIDOR NFS ............................................................................................................... 19
6.
INSTALACION DEL PRIMER CT OPENVZ ..................................................................................................... 24
7.
ACTIVACION Y CONFIGURACION DE HA .................................................................................................... 31
8.
TESTEANDO EL CLUSTER HA ...................................................................................................................... 40
9.
GLOSARIO Y BIBLIOGRAFIA ........................................................................................................................ 45
10. EXTRA: DESARROLLO DE WEBSITE ............................................................................................................. 46
Pág. 1 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
1. INTRODUCCION Y FINALIDAD DEL PROYECTO El presente proyecto desarrolla la implantación de un clúster de servidores en alta disponibilidad (en adelante HA) destinado a la virtualización de equipos. Para ello, he seleccionado la plataforma Proxmox Virtual Environment (en adelante PVE), el cual es un sistema operativo (en adelante OS) de código abierto basado en Linux (más concretamente en Debian) que permite virtualización KVM y OpenVZ. Con él, se pretende explicar el concepto de clúster de HA basado en PVE, y podremos observar su instalación, su configuración, su administración, la instalación de máquinas virtuales KVM (en adelante VM) y/o contenedores OpenVZ (en adelante CT) y el funcionamiento de algunas de sus características más importantes, como la migración en caliente, o cómo realiza HA en caso de fallo de uno de los nodos. NOTA: Puede que algunas imágenes adjuntas en el documento no coincidan exactamente con la explicación dada, o no concuerden en la línea de tiempo de cada uno de los pasos, debido a las numerosas pruebas que he realizado. Además, algunas fotos se han capturado desde máquinas virtuales debido a la imposibilidad de captura desde un equipo físico (por ejemplo, en la propia instalación de PVE), por lo que algunos datos proporcionados en dichas capturas no coinciden con los equipos físicos (tamaño de discos, hardware, nombres de host, VMs/CTs instaladas, etc.). Además, se incluyen numerosos enlaces que direccinan a un aparado de glosario en este mismo documento, donde se explica brevemente una gran cantidad de conceptos y términos que son necesarios entender o tener cierta idea para poder comprender dicho trabajo. Otros enlaces apuntan directamente a webs externas donde se arroja información relevante o complementaria.
Pág. 2 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
2. REQUISITOS PREVIOS Y EQUIPAMIENTO HARDWARE UTILIZADO Para poder implementar y garantizar un correcto funcionamiento de un clúster HA de servidores PVE se necesita un equipamiento hardware mínimo. La lista de requerimientos completa puede verse en esta web. En ella, se puede comprobar que se necesita un mínimo de tres nodos para poder realizar HA en un clúster, pero se comenta sin embargo que es posible realizarse, con ciertas limitaciones, mediante dos nodos. En esta otra web veremos los requerimientos para una implantación de HA con dos nodos. Resumiendo, podríamos decir que los requisitos generales y óptimos para implementar un clúster HA serían: Servidores con alta redundancia (fuentes, RAID de discos, UPS, etc.). 3 nodos PVE (versión 2.0 en adelante), aunque, como hemos visto, también es posible con 2. Almacenamiento compartido SAN o NAS/NFS para VMs, y/o NFS para CT (es posible usar DRBD con los nodos PVE para no necesitar almacenamiento compartido extra, sin embargo no es aconsejable debido a los numerosos problemas que puede acarrear, como por ejemplo la necesidad de intervención humana para la sincronización del DRBD en caso de fallo de uno de los nodos). Red de Area Local (LAN) redundante (interfaces, cableado, switches, etc.). Distintas LAN separadas por usos (comunicación entre nodos, tráfico de datos de almacenamiento compartido, tráfico de máquinas virtuales). Dispositivo hardware para realizar fencing. Evidentemente, para mi es imposible disponer del equipamiento necesario para poder realizar una implantación real y válida para producción; sin embargo, con un equipamiento más modesto se pueden comprobar los resultados de la administración centralizada del clúster desde una única interfaz web (en adelante GUI), migración de VMs/CTs, incluso sin apagarlas (migración en caliente), y funcionamiento de HA. Para ello, dispongo de tres equipos cedidos para dicho proyecto por el IES Bezmiliana. Con dicho equipamiento implementaré un clúster HA con dos nodos PVE, y un servidor NFS para almacenamiento compartido. Las características hardware más relevantes de los equipos que actuarán como nodos de PVE son:
Procesador: Intel Pentium 4, 3.06 GHz Memoria RAM: 1.5 GB DDRII Disco Duro: 1 x 76 GB Tarjeta de red: 1 x Intel 10/100 Mbps
Las características hardware más relevantes del equipo que actuará como servidor NFS son:
Procesador: Intel Pentium 4, 3.06 GHz Memoria RAM: 500 MB DDRII Disco Duro: 1 x 76 GB Tarjeta de red: 1 x Intel 10/100 Mbps NOTA: Una parte de vital importancia, y que no puede ser relevada ni reemplazada por ningún otro método, es disponer de uno o más dispositivos hardware para realizar fencing. Sin ello, no podremos implantar el correcto funcionamiento de HA. Evidentemente no dispongo de este hardware, pero podremos simular su instalación y activación en PVE, y, con ciertas limitaciones, comprobar el funcionamiento de HA cuando uno de los nodos falla.
Pág. 3 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
3. INSTALACION DE PROXMOX VIRTUAL ENVIRONMENT La instalación de PVE es súmamente sencilla. He usado la última ISO disponible desde la web, la versión 3.4 (a día 24 de marzo de 2015), que he grabado en un CD. Simplemente introducimos dicho CD en el lector del equipo (en el cual debemos tener configurado correctamente el orden de arranque desde la BIOS) y comenzamos la instalación. A continuación se muestra la instalación paso por paso en uno de los nodos PVE: Seleccionamos “Install Proxmox VE” para comenzar la instalación:
Aceptamos términos y condiciones:
Pág. 4 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Seleccionamos el disco o partición donde se instalará proxmox:
Escogemos país, zona horaria, e idioma del teclado:
Pág. 5 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Introducimos contraseña y email para el usuario “root”. Dicha contraseña es la que usaremos para loguearnos a través de la GUI. En mi caso he usado “A123456a”. La dirección de correo es ficticia, ya que no la usaré en este proyecto, pero podría configurarse para que el sistema nos alerte en determinadas situaciones:
Pág. 6 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR A continuación configuramos la red, donde debemos indicar nombre del host (en formato FQDN), dirección IP, máscara, gateway y servidor DNS. Yo he usado los datos que se muestran en la captura: NOTA: El servidor DNS utilizado debería poder resolver el nombre de host utilizado, ya que es un requisito para la implementación de HA. Una alternativa sencilla, y que he realizado para este proyecto, es modificar el archivo “/etc/hosts” para que cada nodo del clúster sea capaz de resolver el nombre de los demás.
Una vez realizado los pasos anteriores, comienza la instalación:
Pág. 7 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Terminada la instalación, deberemos reiniciar el equipo:
Seleccionamos “Proxmox Virtual Environment GNU/Linux” en el gestor de arranque GRUB para arrancar el sistema, o esperamos el tiempo predeterminado de espera:
Pág. 8 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
La pantalla de bienvenida de proxmox indica la dirección y puerto que debemos usar para acceder al panel de administración a traves del servidor web:
Accedemos a la dirección indicada desde algún otro equipo en la misma LAN (yo usaré mi equipo portátil para la administración de PVE). Debido a que no se dispone de certificado web, el navegador nos indicará que la página no es de confianza, pero aceptamos igualmente:
Pág. 9 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Antes de autenticarnos, elegimos el idioma español. Introducimos usuario y contraseña:
Cada vez que iniciamos sesión en la GUI, nos avisa que no tenemos ninguna suscripción. En principio, no hace falta, ya que PVE dispone de todas las funcionalidades sin necesidad de ninguna suscripción. Las suscripciones básicamente sirven para soporte técnico y para poder acceder a más plantillas de CTs OpenVZ.
Pág. 10 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Esta será la visión general de la GUI que usaremos para realizar casi todas las acciones necesarias para la configuración de PVE y la instalación de máquinas virtuales. Algunas otras acciones, necesariamente tendrán que ser administradas mediante línea de comandos (en adelante CLI):
La siguiente tabla muestra un resumen con las características de instalación de los nodos PVE: NOMBRE proxmox01 proxmox02
NOMBRE FQDN proxmox01.castillo.com proxmox02.castillo.com
IP / MÁSCARA 192.168.128.220 / 24 192.168.128.221 / 24
USUARIO root root
CONTRASEÑA A123456a A123456a
Pág. 11 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
4. CREACION DEL CLUSTER DE SERVIDORES El siguiente paso, una vez instalado PVE en ambos servidores, es crear un clúster que albergue a ambos. Dicha implementación deberá realizarse mediante CLI. Podremos acceder al CLI directamente desde el servidor proxmox, aunque este método no es muy cómodo, por lo que la mejor opción es acceder desde un equipo externo (usaré mi equipo portátil). Podremos acceder a través del protocolo SSH si estamos en linux con el comando bajo el mismo nombre, o a través de programas como Putty en Windows, pero lo más cómodo es usar la opción “Shell”, teniendo seleccionada la vista del nodo en el panel izquierdo de la GUI de PVE, la cual, nos habrirá en una nueva ventana del navegador un intérprete de comandos.
La creación del clúster, paso a paso, se muestra a continuación: Primeramente, es recomentable realizar una actualización del OS y de todos los paquetes software que incorpora en cada uno de los nodos:
Pág. 12 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Una vez actualizado, reiniciaremos el servidor (podremos hacerlo con el comando “init 0”, “reboot”, o directamente desde la GUI seleccionando la vista de nodo en la lista de la izquierda y pinchando en la opción “Reiniciar” (arriba a la derecha). A continuación, en uno de los nodos (proxmox01), crearemos el clúster, con el comando “pvecm create nombre”, donde “nombre” será el nombre del clúster:
Pág. 13 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Podremos ver el estado del clúster y los nodos que lo forman con los comandos “pvecm status” y “pvecm nodes” respectivamente. Veremos como el número de nodos de momento es 1. También vemos el número total de votos, el número de votos del nodo, los votos esperados, y el número de quorum, conceptos que veremos más adelante para entender el funcionamiento de HA:
Pág. 14 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Procedemos a añadir el segundo nodo al clúster. Para ello, en CLI del otro nodo (proxmox02), usamos el comando “pvecm add nodo”, donde “nodo” es la IP (o nombre de host) de algún equipo que forme parte del clúster (en mi caso, la IP de proxmox01). En dicho paso, se nos requerirá la contraseña del nodo al que estamos intentando conectarnos para poder completar el proceso:
Pág. 15 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Comprobamos que ahora el clúster posee a ambos nodos, y que ha aumentado el número total de votos, los votos espedados y el quorum. Comprobamos también que todos los nodos PVE son maestros, esto es porque PVE usa un sistema de replicación multi-master, y no el sistema maestro-esclavo que usan otros sistemas de virtualización (como por ejemplo vSphere de VMWare o XenServer de Citrix).
Pág. 16 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Comprobamos también como en la GUI podremos ver a los dos nodos, por lo que podremos administrar mas cómodamente a todos los nodos desde cualquier IP de alguno de los nodos que conformen el clúster:
Pág. 17 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Pág. 18 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
5. INSTALACION DE SERVIDOR NFS PVE necesita de almacenamiento compartido entre todos los nodos para poder almacenar los distintos archivos (VMs/CTs, backups, ISOs, Plantillas CT, etc.). Se ha optado por crear un sencillo servidor NFS basado en Fedora 21. Lo ideal en un entorno de producción sería que este almacenamiento fuera una cabina de almacenamiento SAN o NAS, y que además disponiese de sistema propio de HA o replicación, pero debido a las limitaciones hardware de las que dispongo, no me es posible montar ninguna. Otra opción, si no quisiésemos usar almacenamiento externo compartido, y bastante apto para un clúster de dos nodos, sería instalar DRBD, tal como se muestra en esta web. Pero descarto la instalación después de varias pruebas de este sistema bajo VirtualBox, ya que es bastante problemático a la hora de sincronizar los dos discos entre ambos nodos en caso de fallo de alguno de ellos, necesitando de bastante intervención por parte del administrador (indicar qué nodo ha sido el último en sincronizar, reiniciar servicios, etc). Al usar almacenamiento compartido, PVE es capaz de realizar migración en caliente de VMs/CTs entre los distintos nodos con una velocidad increíble (de segundos a algunos pocos minutos), ya que realmente no migra toda la VM/CT, si no sólo los servicios que corren de un nodo a otro. La elección de usar un servidor NFS, viene dada también porque es necesario este tipo de protocolo para poder instalar CTs OpenVZ, que serán las elegidas para este proyecto debido al alto rendimiento que tienen en comparación con las VMs basadas en KVM (más aún si tenemos en cuenta que contamos con procesadores Intel Pentium a 32 bits, y que no disponen de ninguna instrucción de virtualización por harware). La instalación de Fedora 21 no se va a mostrar, ya que no es motivo de este proyecto, además de ser sumanente sencilla. A método de resumen, tenemos la siguiente tabla: NOMBRE nfs_server
NOMBRE FQDN nfs_server.castillo.com
IP / MÁSCARA 192.168.128.225 / 24
USUARIO root
CONTRASEÑA A123456a
Sí que indicaremos la instalación del servicio NFS, su configuración, la compartición de un directorio, y cómo lo añadiremos posteriormente a PVE a través de la GUI: Instalamos el paquete “nfs-utils” que nos permitirá servir una carpeta compartida por dicho protocolo:
Pág. 19 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Antes de ejecutar el servicio y de compartir una carpeta, desactivaremos SELinux, editando el fichero “/etc/selinux/config”:
Desactivaremos también el cortafuegos (firewalld), ya que dicho servidor no tiene por qué actuar como tal (en un entorno real de producción, otro equipo dedicado se dedicaría a dicha función):
Pág. 20 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Realizado lo anterior, procedemos a ejecutar el servicio NFS:
Creamos una carpeta en la raíz del sistema, llamada “shared_nfs”, y editamos el archivo “/etc/exports” para añadirla. La compartiremos únicamente con los servidores PVE, con permisos de lectura y escritura, y con opción de poder actuar en nombre de root:
Pág. 21 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Usamos el comando “exportfs -av” para compartir la carpeta, y “exports” para ver que ha sido compartida:
Ya tenemos listo nuestro servidor NFS. Ahora toca añadir dicha carpeta a nuestro clúster de servidores PVE. Nos colocamos sobre “Centro de datos” en el panel de pavegación GUI, sobre la pestaña “Almacenamiento”, y pinchamos en “Añadir > Almacenamiento NFS”. Es importante añadir bién todos los campos (nombre, IP o nombre de host del equipo, ruta del almacenamiento compartido). En la pestaña de “contenido”, añadiremos todas las opciones disponibles (imagen de disco, ISOs, plantillas OpenVZ, contenedores, archivos de backups, etc):
Pág. 22 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Una vez añadido, veremos como a cada uno de los nodos le aparece dicho almacenamiento:
Pág. 23 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
6. INSTALACION DEL PRIMER CT OPENVZ Una vez añadido el almacenamiento compartido, podremos instalar nuestro primer CT. Elegiré instalar un CT OpenVZ, ya que ofrece un mejor rendimiento, además de consumir menos recursos. La instalación paso por paso, a continuación: Primeramente seleccionamos el almacenamiento compartido en el panel lateral izquierdo, pestaña “Contenido”. Veremos como primeramente no poseemos contenido alguno. Pinchamos sobre “Plantillas” para poder descargarnos una plantilla OpenVZ. Seleccionaremos el OS Debian 7.0 standard, debido a su gran estabilidad, además de por tener activada por defecto la consola de Proxmox (por lo que podremos usar dicha opción desde la GUI sin ningún tipo de instalación extra):
Pág. 24 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Una vez descargada, podremos instalar nuestro primer CT desde el botón “Crear CT” (si quisiéramos instalar un VM basada en KVM, tendríamos que seleccionar “Crear VM”). El CT instalado será usado como servidor web, por lo que en la pestaña “General”, seleccionamos en qué nodo queremos instalarla, indicamos nombre de host (“webserver01”), seleccionamos el almacenamiento donde se alojará (“shared_nfs”), indicamos contraseña (“A123456a”), y pulsamos “Siguiente”:
En la pestaña “Plantilla”, seleccionamos el OS recien descargado:
Pág. 25 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
En la pestaña “Recursos” indicaremos los recursos hardware para dicho CT. En mi caso, seleccionaré 256 MB para RAM y Swap, y dejaré los otros valores por defecto:
En la pestaña “Redes”, indicaremos la dirección IP ligada al CT (en mi caso, 192.168.128.230):
Pág. 26 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
La pestaña “DNS” no la modificaremos, por lo que pasamos a la última (“Confirmación”), y pincharemos sobre “Finalizado” para instalar el CT (puede demorar bastante):
Pág. 27 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Podremos ver el estado y las distintas opciones del CT pinchando sobre éste en el panel de la izquierda. Las acciones las tenemos en la parte superior derecha, entre las que encontramos “Iniciar”, “Eliminar” o “Migrar”:
Procedemos a iniciar el CT y a abrir su consola. Al igual que la consola de los nodos proxmox, se nos abrirá una nueva ventana del navegador. Iniciamos sesión, e instalaremos el servidor web apache:
Pág. 28 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Una vez instalado, el servicio es iniciado automáticamente. Únicamente editaremos el archivo “/var/www/index.html” para poder determinar cada servidor web en las pruebas de HA que realizaré más adelante. Además, dicho CT será utilizado como plantilla para las próximas instalaciones:
Pág. 29 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Pág. 30 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
7. ACTIVACION Y CONFIGURACION DE HA Ya disponemos de nuestro clúster PVE con nuestro primer CT funcionando, pero sin HA aún. El siguiente paso será activar la configuración para permitirlo. Como he indicado anteriormente, la funcionalidad de HA en PVE es imposible de realizar sin un dispositivo hardware que realice fencing. Sin embargo, si activamos fence en cada uno de los nodos y simulamos en la configuración la adiccion de un dispositivo hardware para manejarlo, podremos activar HA en las VMs/CTs. Aunque se permite la configuración y activación de fence y HA, no podremos probarlo de forma tajante (por ejemplo apagando uno de los nodos, quitando el cable de red o deshabilitando la interfaz ethernet), ya que el sistema se queda “pensando” a la espera de que el dispositivo hardware de fencing realice su tarea, aislando el nodo del clúster y reiniciándolo. En estos casos, las VMs/CTs manejados por HA no migrarán hacia el nodo sano. Una prueba que sí puede realizarse es parando el servicio que maneja HA, con el que podremos comprobar cómo las VMs/CTs migran al nodo activo, y el clúster pasa a tener un solo nodo. La configuración paso a paso es la siguiente: Antes de comenzar con la configuración del clúster HA, incluiremos mediante CLI en el fichero “/etc/hosts” de cada uno de los nodos la equivalencia nombre-IP de todos los nodos del clúster:
El siguiente paso será activar el fence en cada uno de los nodos. Lo haremos descomentando la última línea del archivo “/etc/default/redhat-cluster-pve”. A continuación reiniciaremos el servicio “cman”:
Pág. 31 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
En cada uno de los nodos, unimos el servidor al dominio de fence con el comando “fence_tool join”. Veremos el estado de los nodos unidos a fence con el comando “fence_tool ls”:
Pág. 32 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Puede pasar que después de realizar estos pasos, los nodos del clúster en la GUI aparezcan offline (no sincronizan). Si esto sucede, reiniciamos el servicio “pve-cluster”:
Pág. 33 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
A continuación, modificaremos el archivo “/etc/pve/cluster.conf”, el cual contiene la configuración principal del clúster (información general, de su funcionamiento, y de los nodos que lo conforman). Este fichero no se debe tocar directamente, sino que realizaremos una copia, añadiéndole la extensión “.new” (que será el fichero que editemos). Esta configuración se deberá hacer sólamente en uno de los nodos del clúster (en mi caso en proxmox01), ya que dicho archivo se replica en todos los nodos:
Pág. 34 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
La siguiente imagen muestra la configuración actual del clúster (en formato xml), donde podemos ver entre otros, el nombre del clúster, y la información de cada uno de los nodos (id, nombre, votos). Una parte esencial de este fichero cuando lo editemos, es aumentar en uno la versión del fichero (config_version), ya que PVE detectará la mayor versión para aplicar la configuración. Vemos también la configuración en la pestaña “HA” de la GUI (en la vista de “Centro de Datos”):
Pág. 35 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
La configuración para disponer HA pasa por añadir los dispositivos para realizar fencing. Al no disponer de ellos, simularé su implantación, suponiendo que usaré la tecnología ilo de hp. No añadiremos IP, y el usuario y contraseña serán ficticios, ya que el dispositivo no existe (pero es necesario incluirlo en la configuración para poder activar HA en las VMs/CTs). A cada uno de los nodos, añadiremos la acción que realizará el fence en caso de malfuncionamiento de alguno de los nodos. En esta web hay información más detallada de los distintos dispositivos de fencing, métodos, acciones, etc. Además de aumentar en uno la versión del fichero, en nuestro caso añadiremos a la etiqueta “cman” los valores “two_node=1” y “expected_votes=1”, para indicar que PVE con HA funcionará con sólo dos nodos y un voto:
Una vez editado el fichero anterior, procedemos a validarlo con el comando “ccs_config_validate”, para evitarnos posibles errores antes de activarlo a través de la GUI:
Pág. 36 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Una vez realizada la configuración a través de CLI, nos vamos a la GUI, en la vista “Centro de Datos”, pestaña “HA”, en la que deberemos confirmar los cambios realizados en el fichero de configuración mediante el botón “Activar”:
Pág. 37 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Por último, añadiremos la disponibilidad de HA a nuestro CT creado anteriormente. Para ello, en la misma sección que el punto anterior, pinchamos sobre “Añadir > VM/CT administrado por HA”. Escogemos el ID del CT, y seleccionamos que inicie automáticamente al inicio de proxmox. No olvidar volver a activar la configuración de HA (esto habrá que hacerlo siempre que modifiquemos alguna función de HA). Podremos ver en el resumen del CT como está administrada por HA:
Pág. 38 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Pág. 39 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
8. TESTEANDO EL CLUSTER HA Una vez creado el clúster, instalado el primer CT y activada la administración de HA, sólo queda testear el funcionamiento en caso de fallo (también testearemos la migración en caliente). Para ello, antes de nada, crearemos otros tres CTs dedicados a servidor web. Al ser igual que el primer CT, lo que haremos será crear una plantilla OpenVZ a raíz de él. Los pasos que he seguido son: Primeramente, con el CT arrancado, tendremos que eliminar su IP desde la GUI, en la vista del CT, pestaña “Redes”:
Una vez eliminada la IP, apagamos el CT. Accedemos a la CLI de “fedora_server” (que es donde se almacena el CT) usando Putty, y crearemos un fichero “tar” del CT:
Pág. 40 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR Al haber eliminado anteriormente la IP del CT, una vez hemos creado la plantilla, deberemos volver a añadirla, desde la vista de CT, pestaña “Redes”, y pinchamos en “Añadir > Direccion IP”:
Seguidamente, instalaremos desde la GUI 3 CTs más, usando la plantilla recién creada. Los pasos para la instalación son los mismos que el apartado 6 de este documento, únicamente cambiaremos los nombres de host, las direcciones IP y sobre qué nodo proxmox queremos que se ejecute. La siguiente tabla muestra un resusmen de los CTs instalados: NODO PROXMOX proxmox01 proxmox01 proxmox02 proxmox02
NOMBRE CT webserver01 webserver02 webserver03 webserver04
IP 192.168.128.230 192.168.128.231 192.168.128.232 192.168.128.233
USUARIO root root root root
CONTRASEÑA A123456a A123456a A123456a A123456a
Una vez instalados todos los CTs, los añadiremos a la administración HA, al igual que en el último punto del apartado 7, y las iniciaremos:
Pág. 41 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR Editaremos el fichero “/var/www/index.html” en cada uno de los CTs para cambiarle el nombre a mostrar y poder identificarlos en el navegador:
Para comprobar que los CTs migran al servidor PVE sano, vamos a parar el servicio “RGManager”, que es el que maneja HA, en el nodo “proxmox02”. Recuerdo que al no disponer hardware fencing, no podremos hacer la prueba de otra forma (en este vídeo se puede comprobar como funciona HA en PVE desconectando el cable de red). Para ello, en la vista del servidor PVE, pestaña “Servicios”, pinchamos sobre el servicio citado, y clicamos en “Parar”:
Veremos como las webs de los CTs “webserver03” y “webserver04” han caído, debido a que estaban corriendo bajo el nodo “proxmox02”:
Pág. 42 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
El clúster HA, al detectar la caída del servicio “RGManager”, migrará los CTs del nodo afectado al nodo sano, y reinicia los CTs (en las pruebas que he realizado, tarda de 30 seg. a 1 min. aprox.). Veremos como los CTs ahora corren sobre “proxmox01”, y que las páginas web están arriba:
Pág. 43 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
Para restablecer el nodo caído, iniciaremos el servicio “RGManager” (en un entorno de producción real, el hardware fencing reiniciaría el nodo), y realizaremos una migración en caliente de los CTs desplazados de nuevo al nodo “proxmox02” (suele tardar en torno a 30-45 segundos en mis pruebas):
Pág. 44 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
9. GLOSARIO Y BIBLIOGRAFIA A continuación se incluyen algunos términos técnicos que se deberían conocer para poder entender el grueso del proyecto (por orden alfabético): Clúster: Conjunto o agrupación de ordenadores, normalmente mediante una red de alta velocidad, que actúa como un solo ordenador. Más info en wikipedia. DRBD (Distributed Replicated Block Device): DRBD es un sistema de almacenamiento distribuido y replicado para plataformas Linux. Se consigue mediante una réplica en espejo de un dispositivo de bloque a través de una red de área local, por lo que también se puede entender como un sistema RAID-1 en red. Más info en wikipedia y en la web de PVE. Fencing: Proceso de aislamiento de un nodo servidor dentro de un clúster de nodos cuando éste no está funcionando correctamente. PVE utiliza ciertos dispositivos hardware (fence devices) para realizar fencing y aislar dicho nodo de los demás, para que no se produzcan fallos de funcionamiento. Además, puede realizar una acción con dicho nodo (reboot, shutdown, etc). Más info en wikipedia y en la web de PVE. KVM (Kernel-based Virtual Machine): Solución para implementar virtualización bajo sistemas operativos Linux. Permite ejecutar máquinas virtuales utilizando OS sin modificar. Mas info en wikipedia y en la web oficial. OpenVZ: Tecnología de virtualización para contenedores de OS. Tanto huéspedes como anfitriones deben ser Linux. Usa un núcleo de Linux modificado (no se puede usar cualquier ISO común, y normalmente se pueden descargar plantillas de contenedores de OS Linux modificados). Proporciona mejor rendimiento, escalabilidad, densidad, administración de recursos dinámicos, y facilidad de administración que las distintas tecnologías de virtualización alternativas. Más info en wikipedia y en la web oficial. Quorum: Quorum es un término que se usa en entornos de clúster HA para referirse al número mínimo de votos que necesita un clúster para poder funcionar correctamente (en caso de no disponer de dichos votos, el clúster quedará bloqueado a la espera de completar los votos). Cada uno de los nodos PVE dispone de una pequeña partición con un disco quorum, que aportarán un voto. PVE necesita un mínimo de 3 votos para poder funcionar normalmente (de ahí que necesite un mínimo de tres nodos). Sin embargo, se pueden usar otras técnicas, como por ejemplo dos nodos PVE + un disco de quorum disponible en otro servidor (para poder obtener los 3 votos), o de forma más sencilla, usar el modo de funcionamiento de dos nodos, en el cual sólo se necesita de un voto para que PVE funcione correctamente. Más info en wikipedia.
Pág. 45 / 46
Clúster de Alta Disponibilidad con Proxmox Virtual Environment | Proyecto fin de curso FPII ASIR
10. EXTRA: DESARROLLO DE WEBSITE Como punto extra al presente proyecto, he querido añadir algunos de los puntos más interesantes del desarrollo de una website en este apartado, que aunque es algo que tiene poco que ver con lo visto anteriormente, he visto interesante su inclusión para poder mostrar las capacidades obtenidas en el periodo de prácticas del módulo. Dicha web será un proyecto de negocio real bajo el dominio www.clasesparamayores.com. USANDO HTML, PHP, JQUERY y BOOTSTRAP COMO BASE La web está desarrollada en HTML5, y hace un amplio uso de las clases predefinidas del framework de Twitter Bootstrap para el diseño, debido a su comodidad y a las numerosas ventajas que ofrece (full-responsive, efectos, posibilidad de aplicar temas, etc.). Dicho framework, se apoya a su vez en jQuery, que también es usado para desarrollar los archivos javaScript, debido igualmente a su facilidad y comodidad de uso, y con el que conseguiremos vistosos efectos y recargas parciales mediante la técnica AJAX. Por último, como lenguaje del lado de servidor, se usa PHP, ya que será montado bajo un servidor web Apache. A través de este lenguaje he optimizado las partes de la página que son repetitivas, y además servirá de interlocutor con la futura base de datos. ACCESIBILIDAD E INDEXACION MEDIANTE RECARGAS AJAX La base principal sobre la que se apoya esta website es conseguir una navegación completa mediante recargas AJAX (Asincronous JavaScript And XML), sin que por ello deje de ser accesible e indexable para los navegadores sin javaScript activo o para los robots de búsqueda. Para ello, he usado esta guía, en la que mediante “history.pushState” (para guardar una url en el historial del navegador) y el evento “popstate” (que escucha las llamadas al historial en el navegador cliente), se puede conseguir una navegación accesible e indexable mediante una carga parcial por AJAX. En palabras llanas, con el archivo javaScript desarrollado, cada vez que el usuario clica sobre un link “”, este no realiza su función por defecto, si no que se llama a una función que carga mediante AJAX una parte concreta del contenido “fichero” indicado en el link, en un “” concreto de la web (según la sección donde nos encontremos). Además, cada fichero “.php” es “autosuficiente”, debido a que se ha realizado una división de éstos con respecto a las partes comunes o estáticas de la web (cabecera, menú, formulario, etc), incluídas en cada fichero mediante la orden “include” o “include_once”. La recarga AJAX sólo carga el “” de cada fichero que cambia con respecto a los demás ficheros. Así, si se realiza un refresco de la página mediante el navegador, o se introduce una página concreta en la barra de direcciones, se podrá cargar la página completa. DOBLE VALIDACION DE FORMULARIO La parte del formulario es también un punto interesante, ya que valida tanto del lado del cliente como del servidor. Para la parte de cliente, he usado un Plugin para jQuery jqueryvalidation, el cual ha sido modificado para incluir opciones de validación específicas y válidas para dicho formulario. La validación se realiza en tiempo real de cara al usuario, ya que mientras pasa de un campo a otro, se indicará si dicho campo está correcto, o por el contrario, cual es el error concreto. Para aumentar la seguridad a la hora de insetar los datos en la futura base de datos, una vez se envía la petición del formulario al servidor (ya validada en el cliente), éste vuelve a validar todos los campos, para corroborar que todo está correcto.
Pág. 46 / 46
View more...
Comments