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