LINUX

Cómo configurar el clúster Ceph de nodo único

Ceph está diseñado para ser un sistema de almacenamiento escalable y tolerante a fallas. Esto significa que en un entorno de producción, se espera que, como mínimo, haya tres nodos Ceph en un clúster. Si solo puede pagar un solo nodo por ahora, o si solo necesita un solo nodo Ceph para fines de prueba, se encontrará con algunos problemas. Un clúster Ceph de un solo nodo se considerará a sí mismo en un estado degradado, ya que de forma predeterminada, buscará otro nodo para replicar los datos. No podrás usarlo. Este instructivo le mostrará cómo reconfigurar un único nodo Ceph para que sea utilizable. Esto funcionará si su Ceph Node tiene al menos dos OSD disponibles. Hemos agregado una introducción a ceph en nuestro artículo anterior para comenzar.

El mapa CRUSH

CRUSH es el algoritmo que utiliza Ceph para determinar cómo y dónde colocar los datos para satisfacer las reglas de replicación y resiliencia. El mapa CRUSH le da a CRUSH una vista de cómo se ve físicamente el clúster y las reglas de replicación para cada nodo. Obtendremos una copia del mapa CRUSH del nodo Ceph, lo editaremos para replicar datos solo dentro de los OSD del nodo, luego lo volveremos a insertar en el nodo Ceph, sobrescribiendo el mapa CRUSH existente. Esto permitirá que el clúster Ceph de un solo nodo funcione en un estado limpio, listo y dispuesto a atender las solicitudes.

Obtener el mapa CRUSH

Acceda a su nodo de administración de ceph. Este también puede ser su nodo de almacenamiento Ceph, si así fue como se instaló. Todos los siguientes comandos se ejecutan desde el nodo de administración de Ceph.

Extraiga el mapa CRUSH del clúster y guárdelo como un archivo llamado «crush_map_compressed»

ceph osd getcrushmap -o crush_map_compressed

Editar el MAPA DE CRUSH

Este es un archivo binario comprimido que Ceph interpreta directamente, necesitaremos descomprimirlo en un formato de texto que podamos editar. El siguiente comando descomprime el archivo CRUSH Map que extrajimos y guarda el contenido en un archivo llamado «crush_map_decompressed»

crushtool -d crush_map_compressed -o crush_map_decompressed

Ahora abra el archivo CRUSH descomprimido con su editor de texto favorito. Suponiendo que el nodo Ceph se llame «Storage-01» y que tenga 6 OSD, el mapa CRUSH debería tener un aspecto similar a esto:

# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1
tunable chooseleaf_vary_r 1
tunable straw_calc_version 1

# devices
device 0 osd.0
device 1 osd.1
device 2 osd.2
device 3 osd.3
device 4 osd.4
device 5 osd.5

# types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 region
type 10 root

# buckets
host Storage-01 {
id -2           # do not change unnecessarily
# weight 21.792
alg straw
hash 0  # rjenkins1
item osd.0 weight 3.632
item osd.1 weight 3.632
item osd.2 weight 3.632
item osd.3 weight 3.632
item osd.4 weight 3.632
item osd.5 weight 3.632
}
root default {
id -1           # do not change unnecessarily
# weight 21.792
alg straw
hash 0  # rjenkins1
item Storage-01 weight 21.792
}

# rules
rule replicated_ruleset {
ruleset 0
type replicated
min_size 1
max_size 10
step take default
step chooseleaf firstn 0 type host
step emit
}

# end crush map

Preste atención a la sección inferior que comienza con «# reglas», que es la sección que define cómo se realiza la replicación en todo el clúster.
Toma esta linea

step chooseleaf firstn 0 type host

y cambie el «host» a «osd». Debe tener un aspecto como este:

step chooseleaf firstn 0 type osd

Cambiar esto hará que el algoritmo CRUSH se satisfaga con solo replicar datos en un OSD que no está necesariamente en un host separado. Esto permitirá que el clúster entre en un estado limpio y activo cuando los datos se hayan replicado de un OSD a otro.

Guarde el cambio.

Insertar el mapa CRUSH

Ahora que tenemos un mapa CRUSH modificado, insertémoslo nuevamente en el clúster para anular la configuración del mapa CRUSH en ejecución.

Comprímalo de nuevo:

crushtool -c crush_map_decompressed -o new_crush_map_compressed

Luego insértelo usando la herramienta ceph CLI:

ceph osd setcrushmap -i new_crush_map_compressed

Si verifica el estado del clúster inmediatamente con «ceph -s», puede detectar el nodo replicando datos en su otro OSD, pero eventualmente se verá así:

ceph@ceph-admin:~/os-cluster$ ceph -s
cluster 15ac0bfc-9c48-4992-a2f6-b710d8f03ff4
health HEALTH_OK
monmap e1: 1 mons at {Storage-01=192.168.0.30:6789/0}
election epoch 9, quorum 0 Storage-01
osdmap e105: 6 osds: 6 up, 6 in
flags sortbitwise
pgmap v426885: 624 pgs, 11 pools, 77116 MB data, 12211 objects
150 GB used, 22164 GB / 22315 GB avail
624 active+clean
client io 0 B/s rd, 889 B/s wr, 0 op/s rd, 0 op/s wr

Ahora muestra un estado activo + limpio.

Conclusión

Aunque está diseñado para estar en una configuración de múltiples nodos de alta disponibilidad, es posible que Ceph se reconfigure para ejecutarse como un clúster de un solo nodo. Por supuesto, el usuario debe ser consciente de los riesgos de pérdida de datos al ejecutar ceph en esa configuración. Pero esto permite realizar configuraciones de prueba y cumplir SLA de bajo nivel. Redhat ha anunciado recientemente nuevas Ceph Storage 2 con capacidades mejoradas de almacenamiento de objetos con mayor facilidad de uso.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar