Skip to main content

Ceph

Instalar un cluster con CEPH

Vamos a instalar un cluster de Ceph con 3 nodos, para ello los primero que deberemos hacer es instalar nuestra distribución de Linux preferida en las tres máquinas. La prueba la vamos a realizar con Debian 9 en nuestro caso.

Requisitos previos

Supongamos que tenemos tres nodos que se llaman ceph01 ceph02 y ceph03 Para ello instalamos un Linux en las tres máquinas y les damos el nombre correspondiente con su dominio. En nuestro caso las máquinas se llamarán:
ceph01.ateinco.net con IP 10.10.0.11
ceph02.ateinco.net con IP 10.10.0.12
ceph03.ateinco.net con IP 10.10.0.13

Accederemos con permisos de superusuario mediante ssh o consola a las máquinas Una vez que el sistema operativo está instalado ejecutamos el apt-get update para que recupere la información de los repositorios de los paquetes disponibles en cada uno de los servidores.

Nombres de las máquinas

Editamos el fichero /etc/hosts en cada uno de los nodos que deberá quedar así. En el servidor ceph01

127.0.0.1 localhost.localdomain localhost 
10.10.0.11 ceph01.ateinco.net ceph01 localhost.localdomain localhost 
10.10.0.12 ceph02.ateinco.net ceph02 
10.10.0.13 ceph03.ateinco.net ceph03 

En el servidor ceph02

127.0.0.1 localhost.localdomain localhost 
10.10.0.12 ceph02.ateinco.net ceph02 localhost.localdomain localhost 
10.10.0.11 ceph01.ateinco.net ceph01 
10.10.0.13 ceph03.ateinco.net ceph03 

En el servidor ceph03

127.0.0.1 localhost.localdomain localhost 
10.10.0.13 ceph03.ateinco.net ceph03 localhost.localdomain localhost 
10.10.0.11 ceph01.ateinco.net ceph01 
10.10.0.12 ceph02.ateinco.net ceph02

NTP

Es muy importante para el funcionamiento del cluster, que el servicio NTP esté instalado y los tres equipos sincronizados. En este artículo podemos ver más en profundidad el NTP

Instalamos y configuramos el servicio NTP

apt-get -y install ntp
apt-get -y install ntpdate
service ntp restart
systemctl enable ntp

Zona horaria

Comprobamos que la zona horaria y los servidores de tiempo son correctos

cp /usr/share/zoneinfo/Europe/Madrid /etc/localtime

Configuración de los servidores de hora en el fichero

nano /etc/ntp.conf

Comprobaciones

Conectividad

Si tenemos dos redes (pública y almacenamiento), debemos de comprobar la conectividad por ambas interfaces

NTP[editar | editar código]

Comprobaremos que la hora está sincronizada mediante el comando

ntpdate -q

root@ceph01:~# ntpdate -q ceph02
server 10.10.0.12, stratum 2, offset -0.000207, delay 0.02599
20 Aug 12:37:17 ntpdate[41487]: adjust time server 10.10.0.12 offset -0.000207 sec
root@ceph01:~# ntpdate -q ceph03
server 10.10.0.13, stratum 2, offset -0.000023, delay 0.02585
20 Aug 12:37:29 ntpdate[41497]: adjust time server 10.10.0.13 offset -0.000023 sec
root@ceph01:~#

Creación de claves SSH

Ahora debemos de crear las claves ssh para que los 3 servidores se autentiquen automáticamente entre ellos para poder realizar comunicación. Necesitamos un usuario con permisos de administrador. Si el cluster Ceph va a estar en una red a la que sólo tenemos acceso nosotros, podemos habilitar el acceso root por ssh. Como medida de seguridad después de esto, sería conveniente usar UFW para bloquear el acceso por ssh a otros equipos que no sean necesarios. Pero el acceso por ssh, debe estar habilitado entre los tres nodos del cluster En el servidor ceph01 ejecutamos lo siguiente

ssh-keygen -t rsa
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is: 43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a

Ahora deberemos copiar la clave en los otros dos servidores

ssh-copy-id root@ceph02

Nos pedirá la clave Y realizamos lo mismo con el tercer servidor

ssh-copy-id root@ceph03

Ahora para comprobar que todo es correcto, ejecutaremos

ssh root@ceph02

Y no deberá pedirnos la clave

Agregar repositorios de Ceph

Ahora agregaremos los repositorios de Ceph Ejecutaremos la instalación del transporte https

apt-get install -y apt-transport-https

Después añadiremos las claves del repositorio de Ceph

wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -

Y a continuación agregaremos el repositorio, dependiendo de la versión de Ceph y de la versión de Debian, usaremos uno u otro repositorio Para el Ceph Quincy

echo deb https://download.ceph.com/debian-quincy/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list

Para el debian bullseye

echo deb https://download.ceph.com/debian-quincy/ busllseye main | tee /etc/apt/sources.list.d/ceph.list

Ejecutamos la actualización de repositorios y lista de paquetes

apt-get -y update

Despliegue de Ceph

Ahora crearemos una carpeta para almacenar la configuración del cluster Ceph

mkdir /cluster

cd /cluster

A continuación instalamos la utilidad de despliegue de Ceph

apt-get install ceph-deploy

Ejecutaremos el despliegue de Ceph

ceph-deploy new ceph01 ceph02 ceph03

Si queremos separar las redes de administración y almacenamiento (recomendable), editamos el fichero ceph.conf que nos ha creado la utilidad  y añadimos las líneas

public network = 10.10.0.0/24
cluster network = 10.10.20.0/24

Ahora podemos comenzar con el despliegue de Ceph PARA EL CASO DE LUMINOUS

ceph-deploy install --release luminous ceph01 ceph02 ceph03

PARA EL CASO DE NAUTILUS

ceph-deploy install --release nautilus ceph01 ceph02 ceph03

Este proceso, tardará un rato, ya que se encarga de instalar el ceph en los tres nodos. Cuando el proceso termine, crearemos el monitor

ceph-deploy mon create-initial

Ahora desplegaremos la administración

ceph-deploy admin ceph01 ceph02 ceph03

Después el maganer

ceph-deploy mgr create ceph01 ceph02 ceph03

Y por último el mds

ceph-deploy mds create ceph01 ceph02 ceph03

Si queremos la administración web, ejecutaremos

ceph mgr module enable dashboard

En este caso accediendo a http://ceph01:7000, podremos acceder a la consola web de ceph Creación de los OSD Para crear los osd, comprobaremos los discos físicos con el comando lsblk Veremos que hay uno o varios físicos sin partición (en nuestro caso vdb, si tuvieran partición habría un vdb1 debajo de vdb) Vemos que vda corresponde al disco de arranque del sistema En el caso de discos scsi será sda, sdb, etc ejecutaremos

ceph-deploy osd create --data /dev/vdb ceph01

ceph-deploy osd create --data /dev/vdb ceph02

ceph-deploy osd create --data /dev/vdb ceph03