miércoles, 24 de abril de 2019

Instalación y configuración de CEPH - Parte I


Instalación Ceph Primera Parte
Esta instalación esta aplicada en un Sistema Operativo Centos7

Para esta instalación usaremos 4 Servidores
Hostname: adm01 – IP: 10.6.6.140 – Administrador
Hostname: ceph01 – IP: 10.6.6.141 – OSD – MON
Hostname: ceph02 – IP: 10.6.6.142 – OSD – MON
Hostname: ceph03 – IP: 10.6.6.143 - OSD – MON

Lo siguiente debes aplicarlo en los 4 Servidores
Lo primero que se debe realizar es agregar los repositorios de Ceph 

nano /etc/yum.repos.d/ceph.repo

[ceph-noarch]
name=Ceph noarch packages
baseurl=
https://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=
https://download.ceph.com/keys/release.asc

Actualizamos los Repositorios
yum update 
yum upgrade

Instalamos Openssh
yum install openssh-server         

Deshabilitamos Selinux y Firewall 
 sed -i 's/enforcing/disabled/g' /etc/selinux/config /etc/selinux/config
sudo systemctl disable firewalld

Para la sincronización de hora puedes utilizar el paquete que más sea cómodo, en mi caso voy a utilizar chrony

Instalación de chrony
yum install chrony -y

Ahora necesita configurar la agrupación desde un servidor NTP externo. Recomiendo altamente pool.ntp.org de uso común para ese propósito.
Para utilizar los servidores para la agrupación, edite el archivo de configuración de Chrony:
nano /etc/chrony.conf

En la parte superior del archivo debe haber líneas que comiencen con server. Quítalos todos y usa el de pool.ntp.org. Así que el comienzo de su archivo después de los cambios debería verse así:
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
# Ignore stratum in source selection.
stratumweight 0

Guarda los cambios. Ahora es el momento de iniciar el servicio NTP y habilitarlo en el arranque, por lo que se iniciará automáticamente después de reiniciar el sistema:
systemctl start chronyd.service 
systemctl enable chronyd.service
 
Agregar usuario para Instalación y Configuración en los 4 servidores
useradd -d /home/cephuser -m cephuser

Crear Contraseña
passwd cephuser

Permisos sudoers
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

Generar SSH Keys – esto lo debes generar desde el servidor adm01 con el usuario cephuser
ssh-keygen
Generating public/private key pair.
Enter file in which to save the key (/ceph-admin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /ceph-admin/.ssh/id_rsa.
Your public key has been saved in /ceph-admin/.ssh/id_rsa.pub.

Copiar la Key a los Nodos Ceph01, Ceph02, Ceph03
ssh-copy-id cephuser@ceph01
ssh-copy-id cephuser@ceph02
ssh-copy-id cephuser@ceph03

Para verificar si se realizó correctamente la copia de la Key debes ingresar a cada servidor sin que este pida alguna contraseña
ssh ceph01
ssh ceph02
ssh ceph03

Cambiar permisos del archivo .ssh/config
chmod 644 ~/.ssh/config

Editar archivo .ssh/config

Host adm01
        Hostname adm01
        User cephuser
Host ceph01
        Hostname ceph01
        User cephuser
Host ceph02
        Hostname ceph02
        User cephuser
Host ceph03
        Hostname ceph03
        User cephuser

Ahora en adelante solo trabajaremos con el usuario cephuser


Instalar Preferencias en los 4 servidores
sudo yum install yum-plugin-priorities

 ___________________________________________________________________________


Instalación de Ceph Storage Cluster, Ceph Monitor y ODS

En este caso crearemos un Cluster con los servidores ceph01, ceph02 y ceph03, adicionalmente instalaremos el demonio ODS y MON en los 3, esto también pueden ser instalados por separados si lo desean. La mayoría de los comandos serán ejecutados desde en servidor adm01 con el usuario cephuser.

Crear Carpeta donde se va almacenar los archivos de configuración de la solución.
mkdir my-cluster
cd my-cluster

Crear Cluster
ceph-deploy new ceph01 ceph02 ceph03

Agregar la red en la que estás trabajando en el archivo ceph.conf
nano ceph.conf
public network = 10.6.6.0/24

Instalar paquetes de Ceph
ceph-deploy install ceph01 ceph02 ceph03

Desplegar los monitores ceph
ceph-deploy mon create-initial


Una vez que complete el proceso, su directorio local debe tener los siguientes llaveros:
  • ceph.client.admin.keyring
  • ceph.bootstrap-mgr.keyring
  • ceph.bootstrap-osd.keyring
  • ceph.bootstrap-mds.keyring
  • ceph.bootstrap-rgw.keyring
  • ceph.bootstrap-rbd.keyring
  • ceph.bootstrap-rbd-mirror.keyring
  •  
Utilícela ceph-deploy para copiar el archivo de configuración y la clave de administración a su nodo de administración y sus nodos Ceph para que pueda usar ceph sin tener que especificar la dirección del monitor y cada vez que ejecute un comando.
ceph-deploy admin ceph01 ceph02 ceph03

Implementar daemon administrador
ceph-deploy mgr create ceph01 ceph02 ceph03

Agregar disco para cluster
En este punto debemos agregar un disco a los 3 Nodos ceph01 ceph02 ceph03, en mi caso usare 50GB para cada uno.
Luego de agregarlo debes reiniciar los 3 servidores Ceph

En primer lugar consultamos el nombre del disco en los nodos Ceph
fdisk –l
En mi caso el nombre del disco es:
Disk /dev/sdb: 53.7 GB

Ya teniendo esta información ejecutamos lo siguiente desde el Servidor adm01 y con el usuario cephuser aplicamos:
ceph-deploy osd create --data /dev/sdb ceph01
ceph-deploy osd create --data /dev/sdb ceph02
ceph-deploy osd create --data /dev/sdb ceph03

Comprueba la salud de tu clúster con uno de los nodos Ceph
ssh ceph01 sudo ceph -s
Su grupo debe informar HEALTH_OK

Los demonios Ceph Manager operan en un patrón activo - pasivo. La implementación de daemons de administrador adicionales garantiza que si un daemon o un host falla, otro puede asumir el control sin interrumpir el servicio.
ceph-deploy mgr create ceph01 ceph02 ceph03

Comprueba la salud de tu clúster con uno de los nodos Ceph
ssh ceph01 sudo ceph -s
Su grupo debe informar HEALTH_OK

___________________________________________________________________________


Almacenar y recuperar Datos
Para almacenar datos de objetos en el Ceph Storage Cluster, un cliente Ceph debe:
  1. Establecer un object name
  2. Especificar un polol
El cliente Ceph recupera el mapa de clúster más reciente y el algoritmo CRUSH calcula cómo asignar el objeto a un pool, y luego calcula cómo asignar el grupo de ubicación a un demonio Ceph OSD dinámicamente. Para encontrar la ubicación del objeto, todo lo que necesita es el nombre del objeto y el nombre del grupo.

Ahora realizaremos un ejercicio de prueba
Ejercicio: Localiza un objeto
Como ejercicio, vamos a crear un objeto. Especifique un nombre de objeto, una ruta de acceso a un archivo de prueba que contenga algunos datos de objeto y un nombre de pool usando el comando. Por ejemplo: rados put

Esto lo vamos a realizar en uno de los nodos Ceph con el usuario cephuser
echo {Test-data} > testfile.txt
ceph osd pool create mytest 128
rados put test-object-1 testfile.txt --pool=mytest
 
Para verificar que el Ceph Storage Cluster almacenó el objeto, ejecute lo siguiente:
 
 
rados -p mytest ls

Ahora, identifica la ubicación del objeto:
ceph osd map mytest test-object-1


Ceph debe dar salida a la ubicación del objeto. Por ejemplo:
osdmap e537 pool 'mytest' (1) object 'test-object-1' -> pg 1.d1743484 (1.4) -> up [1,0] acting [1,0]

Con esto Finalizamos la Primera parte de la Instalacion de Ceph

Luego estaremos publicandos sobre Ceph Object Gateway y la Instalacion del Dashboard

Jose Montilva