proxmox 6 + ceph

Por fin otro logro mas que me había dado guerra durante muchas horas, el motivo un ceph roto al que de momento he preferido migrar los datos a otro sitio y ya con mas calma intentaremos recuperarlo (ya vendrá otro post otro día sobre éste tema).

En motivo del ceph roto he aprovechado para reinstalar la infraestructura de proxmox entera sobre proxmox6 (debian10).

Partimos de 5 nodos unidos en el cluster (pvecm add ipmaster), sólo vamos a instalar ceph en 3 de ellos.

- node1A - 172.31.0.1 (ceph)
- node1B - 172.31.0.2
- node1C - 172.31.0.3 (ceph)
- node1D - 172.31.0.4 (ceph)
- node2D - 172.31.0.8

El nodo maestro del cluster es “node1D”, y para ver que ésto no implica nada a la hora de configurar ceph y también porque romper el 1D era una cosa que no me podía permitir… vamos a empezar por “node1A”.

Para ello vamos a la interfaz web de proxmox e instalamos ceph:

Nos pedirá hacer la instalación, le decimos que si y finalmente nos podrá una pantalla de configuración similar a ésta, en la que en los campos Public Network IP/CIDR y Cluster Network IP/CIDR le indicaremos 172.31.0.0/16 en mi caso. Atención! la configuración por defecto te pone la ip y rango que te da la gana y lia un poco. Aquí la red en la que se comunican los servidores. Se recomienda que sea una red a parte de la expuesta a los servicios a los usuarios ya que el volumen de tráfico de ésta interfaz puede ser alto, incluso recomiendo el uso de otro switch.

Una vez instalado ceph en el primer nodo (node1A), entramos por ssh en los otros dos nodos, node1C y node1D e instalamos ceph con:

root@node1D:~# pveceph install
root@node1D:~# pveceph install

A continuación volvemos a la interfaz web de proxmox e instalamos un monitor y un manager en cada uno de los nodos. La recomendación (y lo digo por experiencia), es de mínimo 3.

Aquí la configuración real del entorno que estoy montando

A continuación añadimos los discos duros a ceph y en las 3 maquinas, en las que tenemos un disco duro de 4Tb, sin particiones y sin etiquetas de lvm (éstas dos últimas cosas importantes!).

root@node1A:~# pveceph createosd /dev/sdb
root@node1C:~# pveceph createosd /dev/sdb
root@node1D:~# pveceph createosd /dev/sdb

Aquí la salida real de uno de los nodos:

root@planet1D:~# pveceph createosd /dev/sdb
create OSD on /dev/sdb (bluestore)
wipe disk/partition: /dev/sdb
200+0 records in
200+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 2.24776 s, 93.3 MB/s
Running command: /bin/ceph-authtool --gen-print-key
Running command: /bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new 2356bdf8-d7f8-42c3-890e-333067a032ab
Running command: /usr/sbin/vgcreate -s 1G --force --yes ceph-0afd8790-4965-486a-83d3-2602061130ca /dev/sdb
 stdout: Physical volume "/dev/sdb" successfully created.
 stdout: Volume group "ceph-0afd8790-4965-486a-83d3-2602061130ca" successfully created
Running command: /usr/sbin/lvcreate --yes -l 100%FREE -n osd-block-2356bdf8-d7f8-42c3-890e-333067a032ab ceph-0afd8790-4965-486a-83d3-2602061130ca
 stdout: Logical volume "osd-block-2356bdf8-d7f8-42c3-890e-333067a032ab" created.
Running command: /bin/ceph-authtool --gen-print-key
Running command: /bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-2
--> Absolute path not found for executable: restorecon
--> Ensure $PATH environment variable contains common executable locations
Running command: /bin/chown -h ceph:ceph /dev/ceph-0afd8790-4965-486a-83d3-2602061130ca/osd-block-2356bdf8-d7f8-42c3-890e-333067a032ab
Running command: /bin/chown -R ceph:ceph /dev/dm-3
Running command: /bin/ln -s /dev/ceph-0afd8790-4965-486a-83d3-2602061130ca/osd-block-2356bdf8-d7f8-42c3-890e-333067a032ab /var/lib/ceph/osd/ceph-2/block
Running command: /bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring mon getmap -o /var/lib/ceph/osd/ceph-2/activate.monmap
 stderr: 2019-08-08 00:23:04.105 7f171f4cb700 -1 auth: unable to find a keyring on /etc/pve/priv/ceph.client.bootstrap-osd.keyring: (2) No such file or directory
2019-08-08 00:23:04.105 7f171f4cb700 -1 AuthRegistry(0x7f171807ed58) no keyring found at /etc/pve/priv/ceph.client.bootstrap-osd.keyring, disabling cephx
 stderr: got monmap epoch 5
Running command: /bin/ceph-authtool /var/lib/ceph/osd/ceph-2/keyring --create-keyring --name osd.2 --add-key AQBDT0tdNCixHRAAZYpaNtnu8o3sc/+RtTnZnw==
 stdout: creating /var/lib/ceph/osd/ceph-2/keyring
added entity osd.2 auth(key=AQBDT0tdNCixHRAAZYpaNtnu8o3sc/+RtTnZnw==)
Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-2/keyring
Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-2/
Running command: /bin/ceph-osd --cluster ceph --osd-objectstore bluestore --mkfs -i 2 --monmap /var/lib/ceph/osd/ceph-2/activate.monmap --keyfile - --osd-data /var/lib/ceph/osd/ceph-2/ --osd-uuid 2356bdf8-d7f8-42c3-890e-333067a032ab --setuser ceph --setgroup ceph
--> ceph-volume lvm prepare successful for: /dev/sdb
Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-2
Running command: /bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-0afd8790-4965-486a-83d3-2602061130ca/osd-block-2356bdf8-d7f8-42c3-890e-333067a032ab --path /var/lib/ceph/osd/ceph-2 --no-mon-config
Running command: /bin/ln -snf /dev/ceph-0afd8790-4965-486a-83d3-2602061130ca/osd-block-2356bdf8-d7f8-42c3-890e-333067a032ab /var/lib/ceph/osd/ceph-2/block
Running command: /bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-2/block
Running command: /bin/chown -R ceph:ceph /dev/dm-3
Running command: /bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-2
Running command: /bin/systemctl enable ceph-volume@lvm-2-2356bdf8-d7f8-42c3-890e-333067a032ab
 stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-2-2356bdf8-d7f8-42c3-890e-333067a032ab.service -> /lib/systemd/system/ceph-volume@.service.
Running command: /bin/systemctl enable --runtime ceph-osd@2
 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph-osd@2.service -> /lib/systemd/system/ceph-osd@.service.
Running command: /bin/systemctl start ceph-osd@2
--> ceph-volume lvm activate successful for osd ID: 2
--> ceph-volume lvm create successful for: /dev/sdb

En mi caso la cosa me queda así:

A continuación tendremos que crear un sitio donde almacenar los datos. En ceph, los discos no son discos como tal, vendrían a ser mas bien una base de datos y los monitores y los managers son los que se encargan de mantener la integridad de los datos, por ésto son tan importantes. En ceph, un sitio donde podemos almacenar datos se llama pool y podemos acceder desde ceph > pools. Le damos a create y nos sale una ventana donde le indicaremos el nombre del pool

Si le marcamos “Add as Storage” ya nos añadirá automáticamente un pool en nuestros nodos de proxmox para guardar ahí nuestros contenedores lxc e imágenes de disco (supongo que se refiere a kvm).

La cosa me queda mas o menos así:

En la imagen no se puede apreciar bien, pero ceph ahora es accesible desde todos los nodos, incluso los que no tienen ceph instalado.

Y listos, tan sencillo como ésto, ahora a mirar que no se rompa!

Cualquier duda o ampliación, revisad la fuente:

https://pve.proxmox.com/pve-docs/chapter-pveceph.html

y éste otro link también muy completo:

https://pve.proxmox.com/wiki/Manage_Ceph_Services_on_Proxmox_VE_Nodes

Comandos utiles

# ver la salud del cluster
# ceph health detail
# ceph -s

# ver en vivo y en directo el cluster trabajando (control+c para salir)
# watch -n 1 'ceph -s && ceph osd df tree'

# ver los pg existentes
# ceph pg ls

# ver los pg en estado scrubbing (limpiando)
# ceph pg ls scrubbing

# para recuperar un pg que esté en estado inconsistente (inconsistent)
# ceph pg repair 2.d
# ceph pg deep-scrub 2.d

Es importante también tener los servidores sincronizados con el mismo servidor de reloj ntp (parte sólo del ntp) Referencia/Error: clock skew detected on mon.ceph01

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.