Crear cluster Proxmox con Ceph
Seguimos investigando nuevas tecnologías. En este caso he limpiado todo mi laboratorio, no sé si temporalmente, de VMware (¡¡SACRILEGIO!!) para llevarlo a Proxmox con Ceph. Proxmox en su versión 6, que da soporte diferentes funcionalidades muy interesantes y que van mejorando día a día, pudiendo ser una alternativa real y muy poderosa a empresas más contrastadas.
De Proxmox ya hemos hablado alguna vez, hypervisor opensource basado en el sistema operativo Debian + KVM virtualization + Container-based Virtualization. El cual podéis instalar gratuitamente, y que tiene como opción pagar un soporte con acceso a repositorios dedicados y otras ventajas de una suscripción de pago anual.
De lo que no habíamos hablado es de CEPH. Hemos “tocado” en varias entradas GlusterFS, S2D, Datacore,…hoy vamos a por otro tipo de Hyperconvergencia a la que da soporte Proxmox.
¿Qué es Ceph Storage?
URL PROYECTO: https://ceph.com/
Como muchos de los proyectos open, Ceph nació en una universidad, en concreto en la Universidad de California, Santa Cruz. El nombre Ceph proviene de Cephalopod, una clase de moluscos que incluye sepia, pulpo y calamar.
Después de seguir la investigación durante años, montar startups, conseguir inversiones,…les llegó el éxito cuando RedHat les adquirió por 175 millones.
Toda la magia de CEPH se basa en un algoritmo llamado CRUSH (Controlled Replication Under Scalable Hashing) proporcionando almacenamiento basado en objetos, basado en bloques y basado en archivos.
¿Qué diferencia hay entre CEPH y GLUSTERFS?
Ceph es un sistema basado en objetos. Y está especialmente indicado para un acceso rápido de datos no estructurados, que será algo a lo que puede enfrentarse la mayoría de empresas o entornos.
Gluster está pensado para grandes cantidades de datos (ejemplo, entornos de Big Data). Es mucho mejor para el acceso secuencial de datos, donde la velocidad de acceso al dato no es muy importante o fundamental (ejemplo: streaming de vídeo, backups,…)
Aunque ambas soluciones son interesantes, ya que son altamente escalables y tienen grandes posibilidades, dependerá de vuestro uso para elegir entre una u otra.
Instalar Proxmox con cluster de dos nodos y storage Ceph RBD
Partimos con la premisa que CEPHFS necesita 3 nodos para trabajar mínimo. Así que lo vamos a configurar pero no es lo ideal para un entorno productivo.
Vamos a partir de dos nodos físicos con las siguientes características:
- Caja Shuttle
- Procesador Intel i3
- Ram 64GB
- 4 Interfaces de red
- 16 GB Intel Optanel para instalación Proxmox
- 240GB SSD
- 3TB WD RED NAS
Tengo un tercer nodo HP Microserver Gen8, pero no lo voy a añadir al clúster de momento, porque quiero que sean de las mismas características y aún no tengo los discos. Cuando los tenga aprovecharé para hacer una entrada con CEPHFS con 3 nodos.
Ahora os explico como generar un cluster de 2 nodos en Proxmox:
Configuración Clúster Proxmox 2 nodos
Nos conectamos a uno de los host vía HTTPS://IP-HYPERVISOR:8006 –> Iremos al Centro de datos –> Cluster. Pulsamos “Crear Cluster”:
Le damos nombre y pulsamos Crear:
Se abre un Task viewer que nos da el OK:
Ahora pulsamos “Información de la unión”. Son los datos necesarios para unir equipos al clúster de Proxmox:
Pulsamos “Copiar información”:
Nos vamos a la gestión del nodo 2, o el que queremos unir. Y pulsamos “Unir cluster”:
Automáticamente se rellenan los datos que hemos copiado y pulsamos “Unión”:
Y volveremos a ver el estado de la tarea:
Ahora si accedemos a cualquiera de los hosts, en la sección “Centro de datos” veremos los nodos que componen el clúster:
Con esto ya tenemos nuestro cluster Proxmox con 2 nodos creado.
Configurar CEPH en Proxmox
Ahora vamos con el Storage. Vamos a la vista Centro de datos –> Ceph. Hay que instalar los paquetes ceph-nautilus que no vienen preinstalados:
Personalmente, es importante lanzar una actualización de sistema antes de empezar a meter paquetes nuevos. Lo hacemos desde la Shell:
apt-get update && apt-get -y dist-upgrade && apt-get remove --purge && apt-get -y autoremove --purge && apt-get clean && apt-get autoclean
Adicionalmente, si no tenéis una suscripción habría que editar el fichero “/etc/apt/sources.list” y agregar:
Una vez purgado el sistema y colocado el repo necesario. Pulsamos “Start installation”:
Pulsamos “Y” y dejamos que se instale:
Pulsamos Siguiente:
Pulsamos Finalizar. Como veréis nos da los pasos siguientes:
Crear Ceph Monitores adicionales en Proxmox
Vamos a uno de los nodos Ceph –> Monitor y pulsamos Crear y agregamos el segundo nodo:
Crear Ceph OSD adicionales en Proxmox
Ahora vamos a CEPH –> OSD –> Crear OSD:
Y vamos añadiendo los discos que vamos a usar:
Veremos en el Task viewer que se generan Volúmenes de storage para CEPH:
Tendremos que repetir los pasos por Host y discos:
Hasta que veamos algo parecido a esto:
Crear Pool en Proxmox Ceph
Ahora generaremos un pool para CEPH. Vamos a CEPH –> Pools –> Crear:
Le damos un nombre:
Veremos el pool generado:
Ahora vamos a Centro de datos –> Almacenamiento –> Agregar:
Elegiremos RBD:
En Contenido deberemos elegir el tipo de contenido que va a almacenar. En mi caso, tanto Imagen del disco como Contenedores. Le damos un nombre y elegimos el Pool. Marcamos KRBD para soportar múltiples discos y snapshots en LXC:
Veremos un nuevo almacenamiento en los hosts:
Ya podremos generar nuevos discos sobre el storage CEPH y tendremos métricas de uso:
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Hola Raúl.
Está muy bien tu guía sobre Ceph en Proxmox, pero sólo hablas de la instalación inicial, no sobre cómo actuar ante desastres. Tengo dudas importantes:
1. Sé que no se deben usar controladoras RAID, pero no entiendo por qué añades en cada nodo discos de diferente tamaño (ignoro cómo gestiona los discos Ceph y tiendo a pensar en RAID).
2. ¿No es mucho más lenta la lectura y la escritura sobre este sistema que, por ejemplo, sobre un RAID 10 (tenemos instalado Proxmox en local y sólo usamos sistemas de almacenamiento lvm-Thin para MVs y contenedores)?.
3. Defines como gestor el nodo 1, qué pasaría si este nodo se apaga. ¿Se pueden añadir más gestores en reserva?.
4. Está muy bien que la información se replique entre los nodos y que, gracias a la HA, las máquinas y contenedores pasen, en caso de fallo, de un nodo a otro. Lo que no sé es:
a) Cómo sustituir un disco roto (por lo que he leído, no se debe usar controladoras RAID -una pena, por que estas sincronizan por sí mismas los discos-).
b) Si uno de los nodos se destruye por completo (incendio, robo, …), ¿cómo procederíamos a su sustitución?.
Usamos Proxmox desde hace varios años, pero siempre en local. Tenemos un buen servidor con varios discos (a 15.000 rpm) en RAID 10).
He estudiado (y virtualizado en el propio Proxmox) el sistema de almacenamiento iSCSI y, o no lo entiendo, o está orientado a grandes infraestructuras, concretamente:
– Entiendo que con este sistema aumenta considerablemente la capacidad de procesamiento, ya que se dispone de más procesadores y más RAM al aunar nodos y distribuir sobre ellos las distintas máquinas y contenedores (en mi ejemplo he conseguido que soporte contenedores).
– Si necesitamos una máquina SAN, esa misma máquina es un problema, ya que si cae, cae todo el sistema. Entiendo que, de alguna manera, deberíamos hacer un cluster de máquinas SAN con replicación (ignoro cómo se hace).
– Lo correcto sería definir una nueva red, exclusivamente para el tráfico entre los nodos Proxmox y la máquina SAN (o cluster de máquinas SAN). Lo ideal sería usar fibra (algo así como fiber channel) para poder conseguir altas tasas de transferencia (entorno a los 10 Gbps) y si es posible con agregación de enlaces, pero esto haría necesario el uso de, al menos, un switch de fibra y volvemos a lo mismo, lo ideal sería tener al menos dos switches con Spanning Tree habilitado.
Resumiendo, o bien no me he enterado muy bien (cosa que no descarto), o bien iSCSI está pensado para grandes infraestructuras. Por favor dime si estoy confundido y en qué.
El sistema ZFS lo descarto por que lo veo similar a Ceph, excepto en la sincronización, donde este último gana por goleada.
He visto que circulan por la red varios tutoriales y videotutoriales sobre cómo definir sistemas de almacenamiento sobre clusters Proxmox, pero, aparte de la propia documentación de Proxmox, no he visto casi nada sobre cómo sacar un nodo de un cluster y menos aún sobre cómo actuar para sustituir un disco o un nodo completo en caso de desastre. ¿Podrías contar algo sobre esto?
Gracias por haber hecho este tutorial y espero tu respuesta.
Saludos.
Perdona Ángel, tu comentario fue al filtro de spam y ahora lo leo.
Quizás se explica de otra forma en esta entrada, que es mi foto de laboratorio final con 3 nodos y no 2:
https://www.maquinasvirtuales.eu/instalacion-cluster-proxmox-con-3-nodos-y-cephfs/
Es un tema de que los recursos de mi Lab son los que son por una parte, pero he intentado sacar el mayor rendimiento a lo que tengo. En este entrada en los OSD realizaremos una modificación, ya que dispongo de un disco de 3TB y otro de 240GB SSD en cada nodo:
Disco: Colocaremos el disco de 3TB
DB Disk: Colocaremos el SSD de 240GB. Lo utilizaremos para colocar los metadatos en base de datos sobre un soporte rápido que en este caso es mi SSD.
WAL Disk: Colocaríamos un SSD también. Es el registro de escritura anticipada. No tendría sentido colocar un disco menos rápido.
REFERENCIA: https://docs.ceph.com/docs/master/rados/configuration/bluestore-config-ref/
Habría que echarle un vistazo a las recomendaciones que es donde me he guiado, y por qué se separan los OSD para mejorar el rendimiento:
https://docs.ceph.com/docs/master/start/hardware-recommendations/
Para la parte de iSCSI este tutorial es interesante:
https://www.suse.com/c/rbd-vs-iscsi-how-best-to-connect-your-hosts-to-a-ceph-cluster/
Voy a intentar explicar esos casos prácticos que me cuentas.
Gracias por comentar y siento el retraso
Un saludo
Saludos angel, sabes que las mismas dudas que planteas se me repiten en mi caso, ahora voy a agregar un segundo nodo a mi entorno y deseaba utilizar raid como mecanismo de recuperación de desastres, en mi caso un raid 5. (4x300gb) pero ahora me surge la duda de si es viable. Por otro lado mi nodo1 es producción hay tengo 20lxc y otras Vms al pero sin ceph al implementarlo sobre algo que ya existe no conozco los riesgos, tendrás alguna orientación con respecto a esos tópicos, agradecido
Hola Jorgemop, tenéis que cambiar el concepto tradicional. Entiendo que quieres montar Ceph. Aunque podéis montar Raid, esto es hyperconvergencia. Es probable que al utilizar un Raid con CephFS, conseguiréis una latencia mayor que sin él, ademas que el costo os aumentará. Yo he tenido bajas de discos, y la recuperación y sustitución ha sido muy simple.
https://www.maquinasvirtuales.eu/proxmox-sustituir-disco-en-almacenamiento-cephfs/
Mirar la documentación oficial: https://docs.ceph.com/en/latest/start/hardware-recommendations/
En cuanto a montar CephFS en paralelo en un sistema en Producción…mientras tengas un storage diferente para llevar tus LXC y máquinas virtuales, mientras lo montas, sin problema. La única recomendación es que montéis CephFS sobre 3 nodos mínimo. Este ejemplo de 2, es para un Laboratorio. Salu2
Clarísimo amigo Raul, agradecido.
Hola. Muchas gracias por tu tiempo y compartir todo esto.
Tengo una pregunta, soy bastante nuevo en este y quizá parezca una chorrada, si es así te pido disculpas de antemano.
Tengo un microserver Proliant Gen8 con 3 discos de 4TB y un disco de 2TB como almacenamiento. Además, el SO, Proxmox, corre en un unidad SSD de 250Gb.
Hasta ahora siempre he usado en un único nodo varias VM (3 tengo en concreto) para correr diferentes servicios.
El tema es que quiero poder acceder a las opciones de cluster y HA, replicas, etc, y todo lo que veo es que en una máquina virtualizan proxmox para generar otros nodos. Al final me parece que es absurdo y quiero pensar que es como muestra y no es para producción. Por tanto, mi pregunta, ¿estoy en lo correcto? PAra crear varios nodos y poder tener un verdadero cluster en producción con CEPHS, HA, Replicas, etc, ¿hay que tener varias máquinas físicas? O, por el contrario, en una misma máquina, con los 4 discos puedo crear varios nodos y poder hacer uso de esos servicios.
El proliant tiene un conector esclusivo para iLo y dos conectores NIC.
Muchas gracias de antemano
Hola Joseba,
Puedes generar máquinas virtuales en modo Nested de Proxmox (un proxmox sobre otro proxmox). Pero no es aconsejable para un entorno de Producción, porque te puede dar problemas y de rendimiento no creo que te funcione parecido.
Pero para hacer una prueba puedes hacerlo sin problema. Muchos labs de los que genero en el blog los hago de esta forma tanto con VMware como con otras tecnologías.
Un saludo
Hola buenos dias.
Tengo una consulta estoy montando la infraestructura de proxmox. y al tratar de crear el OSD el mismo nunca termina y me da un mensaje de error
HEALTH_WARN OSD count 0 <osd_pool_default_size 3. estoy tratando de agregar un disco de 10 TB desde una SAN y el proceso lleva ya 3 dias y no avanza
Hola Jose luis,
Por lo que he leido, ceph no es compatible con raid, tienes algun raid montado en la cabina??
Alguien me pude explicar como se calcula el espacio total de disco disponible (no total) con ceph
os pongo un ejemplo,
tengo 3 servidores con 5 discos de 2T
Al crear los OSD , sale que tengo un total de 28T, hasta aqui todo correcto, 15 discos X 2T =30T
Aqui viene la dudad e como arma el cluster ceph,
Al crear el Pool, de 3×2 (Size=3 , Min Size=2) , da un pool de 8,6T
Si creo un Pool, de 2×2 (Size=2, Min Size=2), da un pool de 12,94T
Me he leido toda la documentacion oficial de ceph y no he visto en ningun sitio como calcular el tamaño del pool en relacion a la cantidad y capacidad de discos.
Particularmente lo que se pierde de espacio me parece una barbaridad, entiendo que se pierda en una configuracion 3×2 un tercio del espacio total de los 28T, ya que el cluster como minimo necesita 2 nodos para funcionar pero la realidad de esto es que se com 3 tercios del total y no entiendo porque.
Alguien podria sacarme esta duda??
Gracias