Instalación del Cluster de Almacenamiento Ceph
Ceph es un sistema de almacenamiento unificado y distribuido diseñado para proporcionar excelente rendimiento, confiabilidad y escalabilidad para centros de datos empresariales. A diferencia de las arquitecturas SAN tradicionales, Ceph se escala horizontalmente y elimina puntos únicos de fallo mediante replicación inteligente de datos y distribución. Esta guía completa cubre el despliegue de un cluster Ceph listo para producción utilizando cephadm, configurando múltiples servicios de almacenamiento y gestionando las características avanzadas del cluster.
Tabla de Contenidos
- Descripción General de la Arquitectura de Ceph
- Requisitos Previos y Planificación
- Inicialización Inicial con cephadm
- Configuración de Monitor y Manager
- Instalación y Gestión de OSD
- Sistemas de Archivos Ceph y RBD
- Configuración de Object Gateway
- Ajuste y Optimización del Cluster
- Monitoreo y Mantenimiento
- Conclusión
Descripción General de la Arquitectura de Ceph
La arquitectura de Ceph consta de tres tipos de servicio primarios:
- Monitores (MONs): Mantienen mapas de cluster y estado, típicamente desplegados en números impares (3, 5 o 7) para consenso
- Managers (MGRs): Manejan la gestión del cluster, paneles y orquestación, mínimo 2 para HA
- Object Storage Daemons (OSDs): Almacenan datos y manejan el movimiento de datos, replicación y recuperación
Los servicios de apoyo incluyen:
- Metadata Servers (MDSs): Habilitan capacidades de CephFS
- Ceph Object Gateway (RGW): Proporciona API compatible con S3
- Block Device Manager: Habilita la integración de RBD
Requisitos Previos y Planificación
Requisitos de Hardware
Para un cluster Ceph de producción con 3 nodos de almacenamiento:
- Cada nodo: 8 vCPU, mínimo 16 GB de RAM, se recomiendan 32 GB
- Almacenamiento: 4 o más unidades dedicadas por nodo (NVMe preferido para rendimiento)
- Red: Interconexión de 10 Gbps, redes públicas y de cluster separadas
- SO: CentOS/RHEL 8+, Ubuntu 20.04 LTS o posterior
Planificación de Red
# Ejemplo de diseño de red
# Red Pública (acceso del cliente): 192.168.1.0/24
# Red de Cluster (inter-OSD): 192.168.100.0/24
# Verificar red actual
ip addr show
ip route show
Preparación de Disco
Identifique los dispositivos de almacenamiento disponibles:
# Listar todos los dispositivos de bloque
lsblk
# Verificar salud del disco
sudo smartctl -a /dev/nvme0n1
# Borrar cualquier sistema de archivos existente (destructivo)
sudo wipefs -a /dev/nvme0n1p1
Inicialización Inicial con cephadm
Instalación de cephadm
cephadm es la herramienta de despliegue moderna de Ceph, encapsulando todos los componentes de Ceph:
# Instalar cephadm en el primer nodo
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
sudo ./cephadm add-repo --release octopus
# Instalar dependencias requeridas
sudo apt-get install -y docker.io podman
# O con yum (CentOS/RHEL)
sudo yum install -y podman
# Iniciar tiempo de ejecución de contenedor
sudo systemctl enable podman
sudo systemctl start podman
Inicializar el Cluster
Inicialize el primer monitor y manager:
# Ejecutar comando de inicialización
sudo ./cephadm bootstrap \
--mon-ip 192.168.1.10 \
--cluster-network 192.168.100.0/24 \
--allow-fqdn-hostname
# Esto crea:
# - Primer monitor en 192.168.1.10
# - Manager de inicialización y panel
# - /etc/ceph/ceph.conf
# - /etc/ceph/ceph.client.admin.keyring
# Verificar que la inicialización se completó
sudo cephadm ls
# Obtener contraseña inicial del administrador (almacenada en el panel)
sudo cat /var/lib/ceph/*/passwd-*
Instalar ceph-common en Todos los Nodos
# Agregar repositorio de Ceph
sudo ./cephadm add-repo --release octopus
# Instalar herramientas de cliente
sudo apt-get install -y ceph-common ceph-base
# O con yum
sudo yum install -y ceph-common ceph-base
# Verificar instalación
ceph --version
Configuración de Monitor y Manager
Agregar Monitores Adicionales
Para alta disponibilidad, despliegue números impares de monitores (3, 5 o 7):
# Listar monitores actuales
sudo ceph mon stat
# Agregar monitor en el segundo nodo
sudo cephadm shell ceph orch host add node2 192.168.1.11
sudo ceph orch daemon add mon node2:192.168.1.11
# Agregar monitor en el tercer nodo
sudo cephadm shell ceph orch host add node3 192.168.1.12
sudo ceph orch daemon add mon node3:192.168.1.12
# Esperar elección (usualmente 30-60 segundos)
sudo ceph mon stat
# Verificar cluster de monitor
sudo ceph quorum_status
Configuración de Manager
Despliegue múltiples managers para conmutación automática:
# Listar managers actuales
sudo ceph mgr stat
# Agregar manager en nodos existentes
sudo ceph orch daemon add mgr node2
sudo ceph orch daemon add mgr node3
# Habilitar módulos de manager
sudo ceph mgr module enable dashboard
sudo ceph mgr module enable prometheus
sudo ceph mgr module enable telemetry
# Generar certificado autofirmado para el panel
sudo ceph dashboard create-self-signed-cert
# Obtener credenciales de inicio de sesión del panel
sudo ceph dashboard get-admin-credentials
Acceso al Panel
# Obtener nombre de host del manager activo y puerto
sudo ceph mgr services
# Acceder en https://<manager-ip>:8443/
# Inicie sesión con credenciales del comando anterior
# O acceder a través de CLI
sudo ceph dashboard set-login-credentials admin password123
Instalación y Gestión de OSD
Descubrir Discos Disponibles
# Listar discos disponibles en todos los nodos
sudo cephadm shell ceph orch device ls
# Verificar inventario de disco
sudo cephadm shell ceph orch device ls --format json
# Mostrar dispositivos disponibles en host específico
sudo cephadm shell ceph orch device ls node2
Crear OSDs
cephadm provisiona automáticamente OSDs a partir de dispositivos disponibles:
# Habilitar ceph-volume para creación automática de OSD
sudo cephadm shell ceph orch apply osd --all-available-devices
# O crear OSD en dispositivo específico
sudo cephadm shell ceph orch daemon add osd node1:/dev/nvme0n1
sudo cephadm shell ceph orch daemon add osd node2:/dev/nvme0n1
sudo cephadm shell ceph orch daemon add osd node3:/dev/nvme0n1
# Monitorear progreso de creación de OSD
sudo ceph osd tree
# Verificar estado de OSD
sudo ceph -s
# Verificar que todos los OSDs están arriba y dentro
sudo ceph osd status
Gestión de OSD
# Listar OSDs con información detallada
sudo ceph osd tree
# Verificar estado individual de OSD
sudo ceph osd dump
# Establecer banderas de OSD
sudo ceph osd set noout # Prevenir reequilibrio durante mantenimiento
sudo ceph osd unset noout # Reanudar reequilibrio
# Reponderar OSD (para distribución de tráfico)
sudo ceph osd reweight 0 0.8 # Reducir OSD 0 a 80% de peso
# Reemplazar OSD fallido
sudo ceph osd out osd.0 # Marcar OSD como fuera
sudo ceph osd crush remove osd.0 # Eliminar de CRUSH
sudo ceph osd rm osd.0 # Eliminar OSD
sudo cephadm shell ceph orch daemon add osd node1:/dev/replacement_device
Sistemas de Archivos Ceph y RBD
Crear CephFS (Configuración de Pool de Servidor de Metadatos)
# Crear pool de metadatos
sudo ceph osd pool create cephfs_metadata 32 32
# Crear pool de datos
sudo ceph osd pool create cephfs_data 64 64
# Crear CephFS
sudo ceph fs new cephfs cephfs_metadata cephfs_data
# Desplegar servidores de metadatos
sudo ceph orch daemon add mds cephfs node1
sudo ceph orch daemon add mds cephfs node2
# Verificar CephFS
sudo ceph fs status
sudo ceph mds stat
Montar CephFS
En sistemas cliente:
# Instalar cliente CephFS
sudo apt-get install -y ceph-fuse
# Crear punto de montaje
sudo mkdir -p /mnt/cephfs
# Obtener keyring de cliente (del nodo administrador)
sudo scp root@ceph-node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
# Montar usando fuse
sudo ceph-fuse -m 192.168.1.10 /mnt/cephfs
# Montar usando controlador del kernel (recomendado)
sudo mount -t ceph 192.168.1.10:/ /mnt/cephfs -o name=admin
# Verificar montaje
df -h /mnt/cephfs
Configuración de RBD (Rados Block Device)
# Crear pool de RBD
sudo ceph osd pool create rbd 64 64
# Habilitar aplicación rbd
sudo ceph osd pool application enable rbd rbd
# Crear imagen de RBD
sudo rbd create --size 10GB myimage --pool rbd
# Listar imágenes de RBD
sudo rbd ls rbd
# Mapear RBD a dispositivo local
sudo rbd map rbd/myimage
# Formatear y montar RBD
sudo mkfs.ext4 /dev/rbd0
sudo mount /dev/rbd0 /mnt/rbd
# Verificar montaje
df -h /mnt/rbd
# Desmontar RBD cuando termine
sudo rbd unmap /dev/rbd0
Configuración de Object Gateway
Desplegar Ceph Object Gateway (RGW)
# Crear pool de RGW
sudo ceph osd pool create .rgw.root 8 8
sudo ceph osd pool create default.rgw.log 8 8
sudo ceph osd pool create default.rgw.control 8 8
sudo ceph osd pool create default.rgw.meta 8 8
sudo ceph osd pool create default.rgw.data.root 8 8
# Desplegar daemon de RGW
sudo ceph orch daemon add rgw myrgw --placement="3 node1,node2,node3"
# Acceder a punto final de RGW
sudo ceph orch ls | grep rgw
# Obtener información de puerto de RGW
sudo ss -tlnp | grep radosgw
Crear Usuarios de RGW
# Crear usuario de S3
sudo radosgw-admin user create --uid=myappuser --display-name="My App User"
# Obtener claves de acceso y secretas
sudo radosgw-admin user info --uid=myappuser
# Crear subuser de S3
sudo radosgw-admin subuser create --uid=myappuser --subuser=myappuser:swift
# Modificar cuota de usuario
sudo radosgw-admin quota set --quota-scope=user --uid=myappuser --max-size=1T
# Suspender usuario
sudo radosgw-admin user suspend --uid=myappuser
# Eliminar usuario
sudo radosgw-admin user rm --uid=myappuser
Acceder a Almacenamiento de Objetos
# Configurar s3cmd
sudo apt-get install -y s3cmd
# Configuración de s3cmd
s3cmd --configure
# Cuando se solicite:
# - Access Key: (de la salida de radosgw-admin)
# - Secret Key: (de la salida de radosgw-admin)
# - S3 Endpoint: your-rgw-host:7480
# Probar acceso de S3
s3cmd ls
s3cmd mb s3://my-bucket
s3cmd put /tmp/file.txt s3://my-bucket/
s3cmd ls s3://my-bucket/
Ajuste y Optimización del Cluster
Modificación del Mapa CRUSH
El mapa CRUSH controla la colocación de datos:
# Obtener mapa CRUSH actual
sudo ceph osd getcrushmap -o /tmp/crushmap.bin
# Descompilar a formato legible
sudo crushtool -d /tmp/crushmap.bin -o /tmp/crushmap.txt
# Ver estructura del mapa CRUSH
cat /tmp/crushmap.txt
# Recompilar después de modificaciones
sudo crushtool -c /tmp/crushmap.txt -o /tmp/crushmap-new.bin
# Aplicar nuevo mapa CRUSH
sudo ceph osd setcrushmap -i /tmp/crushmap-new.bin
# Establecer reglas de replicación
sudo ceph osd pool set rbd crush_rule replicated_rule
Ajuste de Rendimiento
# Ajustar velocidad de recuperación
sudo ceph tell osd.* config set osd_recovery_max_active 5
sudo ceph tell osd.* config set osd_recovery_sleep 0.5
# Ajustar configuración de diario
sudo ceph config set osd journal_size 5368
# Ajustar conteo de PG (establecer a la siguiente potencia de 2)
sudo ceph osd pool set mypool pg_num 128
sudo ceph osd pool set mypool pgp_num 128
# Monitorear rendimiento
sudo ceph -w
sudo ceph pg stat
Recompactación y Reequilibrio
# Monitorear estado de recompactación
sudo ceph status
# Establecer prioridad de recompactación
sudo ceph tell osd.* config set osd_backfill_scan_min 32
sudo ceph tell osd.* config set osd_backfill_scan_max 4096
# Pausar operaciones de recuperación
sudo ceph osd set pause
sudo ceph osd set norebalance
# Reanudar operaciones
sudo ceph osd unset pause
sudo ceph osd unset norebalance
Monitoreo y Mantenimiento
Monitoreo de Salud
# Obtener estado de salud del cluster
sudo ceph health
# Información detallada de salud
sudo ceph health detail
# Monitorear estado del cluster continuamente
sudo ceph -w
# Verificar niveles de llenado de OSD
sudo ceph osd df
# Obtener estadísticas de uso del cluster
sudo ceph df
Registros del Cluster
# Ver registros recientes
sudo ceph log last 50
# Monitorear registros en tiempo real
sudo ceph log tail
# Buscar errores en registros
sudo ceph log last 1000 | grep -i "error\|warn"
Copia de Seguridad y Recuperación
# Respaldar configuración del cluster
sudo ceph config dump > /backup/ceph-config.txt
# Respaldar metadatos de pool
sudo ceph osd pool get-all > /backup/pools.txt
# Respaldar mapa CRUSH
sudo ceph osd getcrushmap -o /backup/crushmap.bin
# Restaurar desde copia de seguridad
sudo ceph osd setcrushmap -i /backup/crushmap.bin
Conclusión
Ceph proporciona una solución de almacenamiento poderosa y escalable adecuada para entornos en la nube, centros HPC y centros de datos empresariales. Siguiendo los procedimientos de esta guía para el despliegue con cephadm, configurando múltiples tipos de servicio y aplicando optimizaciones de rendimiento, establece una base sólida para diversas cargas de trabajo de almacenamiento. El monitoreo regular a través del panel y las herramientas CLI garantiza que su cluster mantenga un rendimiento óptimo y confiabilidad de datos. Ya sea que despliegue almacenamiento de bloques, almacenamiento de objetos o sistemas de archivos compartidos, la arquitectura unificada de Ceph ofrece la flexibilidad y el rendimiento que la infraestructura moderna demanda.


