Sunteți pe pagina 1din 15

Clúster de almacenamiento Ceph

Daniel Martín
Introducción

Ceph es una plataforma de almacenamiento de código abierto que proporciona una interfaz
para almacenamiento de objetos, bloques y archivos. Ceph File System está diseñado para su
uso con gran cantidad de datos, ya que posee un alto rendimiento, confiabilidad y
escalabilidad.

Los componentes que usaré en mi clúster Ceph son los siguientes:

 Una máquina que será la encargada de monitorear el estado del clúster y ejecutar el
mapa OSD que se llamará “Ceph-monitor”.
 Tres máquinas OSD que serán las que se encargarán de manejar el almacenamiento de
datos, a las que llamaré “Ceph-osd1”, “Ceph-osd2” y “Ceph-osd3”.
 Y una máquina que será la que configurará al resto de máquinas, que tendrá acceso vía
SSH a todas ellas sin tener que ingresar su contraseña. Esta máquina se llamará “Ceph-
admin”.
 A parte de todas estas máquinas también tendré un cliente al cual llamaré “Ceph-
client”

Todas las máquinas que usaré serán Ubuntu 16.04 sin entorno gráfico, tanto clientes como
servidores.
1. Configurar los nodos para Ceph

Crear un usuario para Ceph


En este paso crearé un nuevo usuario llamado “cephuser” en todos los nodos, para ello
ejecutaré el comando:

useradd –m –s /bin/bash cephuser

Y le asignaré una contraseña mediante:

passwd cephuser

Después de crear el nuevo usuario lo configuraré para disponer de privilegios de superusuario


sin contraseña, de forma que “cephuser” pueda ejecutarse y obtener privilegios sudo sin tener
que ingresar una contraseña primero.

Para lograr esto ejecutaré los siguientes comandos:

echo “cephuser ALL = (root) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/cephuser

chmod 0440 /etc/sudoers.d/cephuser

sed –i s’/Defaults requiretty/#Defaults requiretty’/g /etc/sudoers

Este mismo procedimiento lo utilizaré en todos los nodos. Si en alguno de los nodos no uso
dichos comandos no podré acceder a superusuario desde el usuario Cephuser de ese nodo.
Sincronizar la misma fecha y hora entre nodos
Para este paso instalaré la herramienta NTP, que será mediante la cual asignaré la misma fecha
y hora en todos los nodos. Ejecutaré el comando “ntpdate” para establecer la hora del servidor
NTP de grupo español:

apt-get install –y ntp ntpdate ntp-doc

ntpdate 0.es.pool.ntp.org

hwclock –systohc

/lib/systemd/systemd-sysv-install enable ntp

systemctl start ntp

Instalar Open-vm-tools
Como estoy ejecutando todos los nodos dentro de VMware necesito instalar esta utilidad de
virtualización en caso de no tenerla ya:

apt-get install open-vm-tools

Instalar Python y Parted


Más adelante, durante la instalación de Ceph será necesario disponer de Python en cada uno
de los nodos. Para su instalación usaré:

apt-get install –y python python-pip parted


Configurar el archivo de hosts
Editaré el fichero de hosts en todos los nodos y lo configuraré para que se reconozcan
mutuamente mediante nombres:

Ahora comprobaré que tengo conectividad al resto de nodos haciendo ping a ellos:
2. Configurar servidor SSH

En este paso configuraré el nodo ceph-admin. Este nodo lo utilizaré para instalar y configurar
los nodos del clúster, por lo que el usuario en el nodo ceph-admin debe tener privilegios para
conectarse a todos los nodos sin una contraseña.

Lo primero que haré será acceder al usuario “cephuser” usando:

su cephuser

Después, crearé un fichero para la configuración de ssh:

nano ~/.ssh/config

Y dentro guardaré la información de todos mis nodos y el usuario común cephuser:

Ahora saldré del fichero y le cambiaré los permisos a:

chmod 644 ~/.ssh/config


Con esto ya está listo el servidor, ahora guardaré todos los nodos en el fichero de host
conocidos usando:

ssh-keyscan ceph-monitor ceph-osd1 ceph-osd2 ceph-osd3 ceph-client >> ~/.ssh/known_hosts

Y agregaré la clave de este a todos los nodos usando el comando ssh-copy-id a cada uno:

ssh-copy-id ceph-monitor

ssh-copy-id ceph-osd1

ssh-copy-id ceph-osd2

ssh-copy-id ceph-osd3

ssh-copy-id ceph-client

Me solicitará la contraseña del usuario “cephuser” y una vez ingresada se añadirá la key.
Y ahora comprobaré que funciona conectándome vía ssh a alguno de los nodos:

He podido conectarme sin necesidad de ingresar su contraseña.


3. Configuración nodos OSD

Almacenamiento OSD
Para esta práctica dispongo de 3 nodos OSD, cada uno de estos nodos dispone de dos
particiones de disco duro, una que se encuentra en “/dev/sda” que es la partición raíz de la
máquina y otra que se encuentra en “/dev/sdb” que es una partición vacía de 10 Gb.

Antes que nada, comprobaré que el disco duro se encuentra en la ruta “/dev/sdb”, para ello
usaré el comando fdisk:

Formatear partición SDB


Ahora, lo que tengo que hacer es formatear dicha partición en todos los nodos OSD, para ello
utilizaré una serie de comandos:

parted –s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%

A continuación, formatearé la partición en formato XFS con el comando mkfs:

mkfs.xfs –f /dev/sdb

Ahora, al comprobar la partición aparece que es una partición XFS:


4. Construir el Clúster Ceph

En este paso instalaré Ceph en todos los nodos de la máquina ceph-admin, para ello iniciaré
sesión en la máquina “ceph-admin” con el usuario “cephuser”.

Instalar ceph-deploy en el nodo ceph-admin


Descargaré la herramienta de despliegue Ceph “ceph-deploy” mediante:

apt-get install ceph-deploy

Una vez instalada esta herramienta crearé un nuevo directorio para la configuración del
clúster.

Crear un nuevo clúster


A continuación, crearé un nuevo clúster con el comando “ceph-deploy” definiendo el nodo del
monitor:

ceph-deploy new ceph-monitor

Este comando generará un archivo de configuración del clúster Ceph “ceph.conf” en el


directorio actual.
Ahora editaré el fichero de configuración del clúster (ceph.conf) en el fichero donde lo instalé y
en el bloque [global] añadiré estas líneas:

public network = 192.168.197.0/24

osd pool default size = 2

Instalar Ceph en todos los nodos


Ahora instalaré Ceph en todos los nodos desde el nodo ceph-admin, para ello usaré el
comando:

ceph-deploy install ceph-admin ceph-monitor ceph-osd1 ceph-osd2 ceph-osd3

Durante la instalación me han aparecido muchos errores, nada más ejecutarlo me apareció
este error en todos los nodos:

Para solucionarlo basta con entrar al fichero “/etc/apt/sources.list” y comentar las líneas que
incluyen “cdrom” como por ejemplo “deb cdrom:[Ubuntu-Server 16.04]”.

Volveré a usar el comando “ceph-deploy install” y comenzará a instalar el clúster en todos los
nodos:
Después, mientras instalaba Ceph en ceph-monitor me apareció otro error:

Este se solucionaba usando “apt-get –f install”. Si aparece un error al ejecutar este comando
sobrescribiré los archivos que causan los errores mediante “dpkg –i –force-overwrite
<fichero.deb>” y listo.

Y, por último, en caso de no disponer de Python en alguno de los nodos aparecerá este error
diciendo que no puede establecer conexión con el host.

Ahora pasaré a desplegar el nodo del monitor en el nodo ceph-monitor, para ello utilizaré el
comando:

ceph-deploy mon create-initial


Para el paso anterior es muy importante que el nombre de host de la máquina sea el mismo
que el del nodo guardado en “/etc/hosts”, ya que si no aparecerá un error. En caso de que no
sea el mismo editaré los ficheros “/etc/hostname” y “/etc/hosts” en el nodo monitor con el
nombre del nodo y reiniciaré la máquina.

Tras usar “ceph-deploy mon create-initial” se creará una clave de monitor, puedo verificar esta
clave usando:

ceph-deploy gatherkeys ceph-monitor

Agregar OSDs al clúster


Una vez que Ceph se haya instalado en todos los nodos ya puedo agregar los nodos OSD al
clúster, para ello lo primero que haré será eliminar las tablas de particiones en todos los nodos
usando la opción “zap”:

ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb


Después, usaré la opción “prepare” de ceph-deploy para prepararlos:

ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

Al completarse aparecerá que el nodo ceph-osd está listo para usarse. En el caso de que ceph-
deploy no reconozca el comando “prepare” me descargaré otra versión de este, en mi caso la
“1.5.39” usando: “pip install ceph-deploy==1.5.39”. Este error se debe al uso una versión más
nueva de Ceph que la versión Kraken.

Ahora, implementaré la clave de gestión en todos los nodos asociados, para ello usaré:

ceph-deploy admin ceph-admin ceph-monitor ceph-osd1 ceph-osd2 ceph-osd3


Como resultado de esto ahora el disco duro “/dev/sdb” dispone de 2 particiones, esto lo
verificaré usando el comando:

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

Dentro de “/dev/sdb” aparecen las particiones “/dev/sdb1” y “/dev/sdb2”.

Comprobar que el clúster funciona


Para comprobar que funciona el clúster usaré los comandos “ceph health” y “ceph status”:

Si en este nodo está configurado correctamente al usar el comando “ceph health” dará como
resultado “HEALTH_OK”:

Luego, usaré “ceph status” para comprobar el estado del cluster:

Este comando muestra varias opciones, como que existe 1 monitor con la dirección
“192.168.197.221” y que 3 máquinas osd que están en estado “up”.

Con esto está listo el Clúster con Ceph.

S-ar putea să vă placă și