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

  1. Descripción General de la Arquitectura de Ceph
  2. Requisitos Previos y Planificación
  3. Inicialización Inicial con cephadm
  4. Configuración de Monitor y Manager
  5. Instalación y Gestión de OSD
  6. Sistemas de Archivos Ceph y RBD
  7. Configuración de Object Gateway
  8. Ajuste y Optimización del Cluster
  9. Monitoreo y Mantenimiento
  10. 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.