[Proxmox] Clusters
Un clúster es un grupo de múltiples ordenadores conectados mediante una red que trabajan coordinadamente. Los clúster permiten aumentar la escalabilidad, disponibilidad y fiabilidad.
Un clúster puede ser de gran interés en el ámbito empresarial, ya que pueden aprovechar las características mencionadas anteriormente para poder mantener sus equipos actualizados por un precio más económico que el que les supondría actualizar todos sus equipos informáticos, además, tendrían más capacidad de computación y disponibilidad. Un clúster está formado por diversos componentes de hardware y software.
Definiciones
- Nodo. Cada una de las máquinas que componen el clúster. Pueden ser desde simples ordenadores personales a servidores dedicados conectados por una red. La regla general es que los nodos deben tener características similares como: arquitectura, componentes, sistema operativo, etc.
- Sistemas operativos. Se utilizan sistemas operativos de tipo servidor con características de multiproceso y multiusuario, así como capacidad para abstracción de dispositivos y trabajo con interfaces IP virtuales.
- Middleware. Es el software que actúa entre el sistema operativo y los servicios o aplicaciones finales. El middleware recibe los trabajos entrantes del clúster y los redistribuye de manera que el proceso se ejecute más rapido y el sistema no sufra sobrecargas en un servidor.
- Conexión de red. Los nodos del clúster se pueden conectar con una simple red Fast Ethernet o utilizar tecnologías de red más avanzadas como Gigabit Ethernet, Infiniband, SCI, etc.
- Protocolos de comunicación. Definen la intercomunicación entre los nodos del clúster.
- Sistema de almacenamiento. El almacenamiento puede ir desde sistemas comunes de almacenamiento interno del servidor hasta redes de almacenamiento compartido como NAS o SAN.
- Servicios y aplicaciones. Servicios y aplicaciones a ejecutar sobre el clúster.
Tipos de clusters
- Clúster de alta disponibilidad (HA, High Availability): tiene como propósito principal proporcionar la máxima disponibilidad de los servicios que ofrece. Esto se consigue mediante software que monitoriza constantemente el clúster, detecta fallos y permite recuperarse frente a ellos. Si lo que se quiere es lograr que las MVs desplegadas en el clúster estén operativas la mayor parte del tiempo, este tipo de cluster es el más adecuado.
- Clúster de alto rendimiento (HP, High Performance): se utiliza para ejecutar programas paralelizables que requieren una gran capacidad computacional. Se utilizan normalmente en la comunidad científica o industrias que tengan que resolver problemas complejos o simulaciones.
- Clúster de balanceo de carga (LB, Load Balancing): este tipo de clúster permite distribuir las peticiones de servicio entrantes hacia un conjunto de equipos que las procesa. Se utiliza principalmente para servicios de red sin estado, como un servidor web o un servidor de correo electrónico, con altas cargas de trabajo y de tráfico de red.
Características de un cluster
- Favorece la alta disponibilidad.
- Alta disponibilidad es mantener un servicio constantemente o la mayor cantidad de tiempo posible de forma automática.
- Cuando falle un nodo sus máquinas virtuales se pasarán a otro nodo que funcione, para no perder el servicio.
- Se trabajará a nivel de
Centro de datos
, porque es una orquestación de todos los nodos. - Si se van a usar Clústeres es recomendable tener en el nodo dos interfaces físicas, para dedicar una de ellas al manejo del cluster.
Creación de un cluster
- Se instala Proxmox en los equipos que constituirán los nodos del cluster. Proxmox nos recomienda que el clúster debe contar con tres nodos además de una máquina para el almacenamiento compartido.
- Declarar un almacenamiento compartido para que luego las copias de las máquinas de un nodo a otro duren poco tiempo. Estos procesos serían mucho mas lentos si no usáramos almacenamiento compartido ya que tendríamos que copiar las imágenes de las máquinas de un nodo a otro. Con el almacenamiento compartido no hay necesidad alguna de copia y las migraciones duran segundos.
- En uno de los servidores vamos a
Vista por servidor
→Centro de datos
→Cluster
→ Crear cluster- Se abre una ventana donde habrá que definir el nombre del clúster y su correspondiente red.
Almacenamiento distribuido/sincronizado
Distribuido
Un sistema de almacenamiento distribuido es una infraestructura que puede repartir los datos entre varios servidores físicos y, a menudo, entre más de un centro de datos. Suele adoptar la forma de un clúster de unidades de almacenamiento, con un mecanismo de sincronización y coordinación de datos entre los nodos del clúster. Este sistema tiene las siguiente ventajas:
- Escalabilidad. La principal motivación para distribuir el almacenamiento es escalar horizontalmente, añadiendo más espacio de almacenamiento al clúster.
- Redundancia. Los sistemas de almacenamiento distribuido pueden almacenar más de una copia de los mismos datos, con fines de alta disponibilidad, copia de seguridad y recuperación de desastres.
- Coste. El almacenamiento distribuido permite utilizar hardware básico y más barato para almacenar grandes volúmenes de datos a bajo coste.
- Rendimiento. El almacenamiento distribuido puede ofrecer un mayor rendimiento que un único servidor en algunos casos. Por ejemplo, puede almacenar datos más cerca de sus consumidores o permitir el acceso masivo en paralelo a archivos de gran tamaño.
Una limitación inherente a los sistemas de almacenamiento distribuido es que estos sistemas vienen definidos por el teorema de CAP. Este teorema establece que un sistema distribuido no puede mantener la consistencia, la disponibilidad y la tolerancia a la partición (capacidad de recuperarse ante un fallo de partición que contiene parte de los datos), se tiene que renunciar,al menos, a una de estas tres propiedades.
Ceph
- Con la integración de Ceph, una plataforma de almacenamiento definido por software de código abierto, Proxmox VE tiene la capacidad de ejecutar y gestionar el almacenamiento directamente en los nodos del hipervisor. Ceph es un almacén de objetos distribuido y un sistema de archivos diseñado para ofrecer un rendimiento, una fiabilidad y una escalabilidad excelentes.
- Algunas ventajas de Ceph en Proxmox VE son:
- Fácil configuración y gestión mediante CLI y GUI.
- Thin provisioning.
- Compatibilidad con snapshots.
- Self-healing.
- Escalabilidad hasta los exabytes.
- Configuración de grupos con diferentes carácteristicas de rendimiento y redundancia.
- Replicación de datos.
- Funciona con hardware básicos.
- No necesita controladores RAID.
- Código abierto.
Para crear un clúster hiperconvergente con Proxmox y Ceph, se debe utilizar al menos tres servidores, preferiblemente idénticos, para la configuración. Además, es recomendable tener un ancho de banda de, al menos, 10Gb.
Sincronizado
Si el cluster no cumple con las especificaciones recomendadas para crear un sistema de almacenamiento distribuido vía Ceph, se puede optar por una solución alternativa que pasa por crear una partición ZFS idéntica en cada servidor, y configurar tareas de replicación periódicas entre los mismos. A esta práctica se le conoce como almacenamiento sincronizado.
ZFS es un sistema de archivos local y gestor de volúmenes lógicos creado por Sun Microsystems Inc. para dirigir y controlar la ubicación, el almacenamiento y la recuperación de datos en sistemas informáticos de clase empresarial. El sistema de archivos y gestor de volúmenes ZFS se caracteriza por la integridad de los datos, una gran escalabilidad y funciones de almacenamiento integradas como: replicación, deduplicación, compresión, snapshots, clones, protección de datos, etc.
Para crear un volúmen ZFS en Proxmox, basta con dirigirse a Disks > ZFS dentro del nodo y hacer clic sobre Create: ZFS.
La replicación de datos entre los dos servidores fı́sicos se realizará a través de una red interna (10.10.10.0/24) previamente configurada en System > Network.
En Proxmox, basta con dirigirse a Replication
dentro del nodo y hacer clic sobre Add
. Aparecerá un panel donde se deberá escoger la MV a replicar, el nodo destino y la perioricidad, entre otras cosas.