Menu Fermer

Mettre en place un cluster de stockage CEPH

Une des technologies les plus importantes dans une infrastructure de cloud computing est le système de stockage. Il doit à la fois répondre a un besoin simple à savoir stocker des données, mais aussi permettre une évolutivité et mieux encore gérer différentes méthodes de stockage tout en restant évolutif. C’est ce que propose la solution nommée CEPH.

CEPH est un système de stockage distribué sans points de défaillances qui est open-sources et qui permet de gérer des capacités de stockage allant jusqu’à l’exaoctet (1000Po). Il ne nécessite pas de matériel spécialisé et est conçu pour s’autoréparer et automatiser au maximum ses tâches administratives afin de réduire les coûts d’exploitation.
Il est le fruit des travaux de thèse de Sage Weil qui a continué à développer sa solution après avoir obtenu son doctorat en 2007 avant que le projet soit en partie racheté par RedHat.

L’un des grands avantages de CEPH est son aptitude à fournir différents modes de stockage:

  • Stockage objet
  • Stockage par block
  • Stockage par système de fichier

Prérequis techniques

Pour réaliser ce tutoriel, il faut prévoir quelques petites choses:

  • Cinq machines virtuelles ou physiques. C’est comme vous voulez par exemple trois machines virtuelles avec deux disques dur.
  • Une connexion internet fonctionnelle
  • Du temps…

Prérequis systèmes et réseau

CEPH est très tatillon sur la configuration des membres du cluster. Quelques modifications sur l’ensemble des machines vont être effectuées et seront utiles pour ce tutoriel.

  • Changement du hostname

Editez le fichier /etc/hostname et remplacez le contenu  par ce que vous souhaitez.

Voici la liste de mes hostname pour ce tutoriel:

Serveur n°1: node-adm
Serveur n°2: node1
Serveur n°3: node2
Serveur n°4: node3
Serveur n°5: node-client

  • Configuration des IP statiques

Pour changer votre adresse IP dynamique en adresse IP statique, éditez le fichier /etc/network/interfaces et modifiez le de la manière suivante:

Avant:

auto eth0
iface eth0 inet dhcp

Après:

auto eth0
iface eth0 inet static
address IP_ADDRESS # Votre adresse IP
netmask NETMASK # Votre masque de sous-réseau
gateway GATEWAY # Votre passerelle

Voici la liste de mes IP pour ce tutoriel:

Serveur n°1: 172.16.0.10/16
Serveur n°2: 172.16.0.11/16
Serveur n°3: 172.16.0.12/16
Serveur n°4: 172.16.0.13/16
Serveur n°5: 172.16.0.14/16

  • Modification du fichier hosts

Editez le fichier /etc/hosts et ajoutez tous vos serveurs dedans.

Voici le contenu de mon fichier hosts pour ce tutoriel:

172.16.0.10 node-adm
172.16.0.11 node1
172.16.0.12 node2
172.16.0.13 node3
172.16.0.14 node-client

Une fois toutes les modifications apportées à votre futur cluster, redémarrez l’ensemble des machines.

sudo reboot

Maintenant que tous vos serveurs ont redémarrés, nous allons pouvoir commencer l’installation du cluster.

Installation et configuration de CEPH

  • Création de l’utilisateur ceph

Pour installer CEPH, nous allons avoir besoin d’un utilisateur dédié. Il va donc falloir créer un utilisateur commun sur l’ensemble des serveurs de notre cluster:

Ces commandes sont à exécuter sur chaque serveur du cluster:

sudo useradd -d /home/ceph -m ceph
sudo passwd ceph (notez bien le mot de passe de cet utilisateur sa pourrais servir un jour :D)
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
sudo chmod 0440 /etc/sudoers.d/ceph
  • Mise en place du SSH

Pour s’installer, CEPH utilise le protocole SSH (ça tombe bien c’est natif sous Linux :D) et nécessite une authentification par paire de clé.
On va donc mettre en place une authentification par paire de clé entre notre serveur d’administration (pour moi node-adm) et les serveurs de notre cluster.

Sur le serveur d’administration:

Il faut basculer sur l’utilisateur ceph (utilisateur dédié à ceph) et créer sa paire de clés:

su - ceph
ssh-keygen

Il ne reste plus qu’a envoyer la clé publique vers les serveurs de notre cluster:

ssh-copy-id ceph@node1
ssh-copy-id ceph@node2
ssh-copy-id ceph@node3
ssh-copy-id ceph@node-client

Enfin pour finir la configuration du SSH sur votre serveur d’administration, il faut créer un fichier config dans /home/ceph/.ssh

sudo vi /home/ceph/.ssh/config

Puis remplissez votre fichier avec les informations suivantes:

Host node1
Hostname node1
User ceph
Host node2
Hostname node2
User ceph
Host node3
Hostname node3
User ceph
  • Configuration des dépôts

On va maintenant configurer les dépôts de notre serveur d’administration pour pouvoir installer la dernière version de CEPH.
Les opérations suivantes sont réalisées sur le serveur d’administration uniquement en utilisateur ceph.
Mise en place des dépôts CEPH:

wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
echo deb http://ceph.com/debian-kraken/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
sudo apt-get update && sudo apt-get install ceph-deploy ntp
  • Installation des différents nœuds du cluster

Et c’est là que les choses vont commencer à devenir compliquées.

Si vous rencontrez des problèmes ou que vous souhaitez refaire une configuration propre de votre cluster, entrez les commandes suivantes à n’importe quel moment:

ceph-deploy purge noeuds_du_cluster
ceph-deploy purgedata noeuds_du_cluster
ceph-deploy forgetkeys

On va commencer par installer CEPH sur tous nos nœuds:

ceph-deploy install ceph-adm node1 node2 node3

Une fois l’installation des paquets terminée, nous pouvons créer notre cluster:

ceph-deploy new node1 node2 node3

On ajoute ensuite le rôle monitor aux trois nœuds précédemment configurés:

ceph-deploy mon create node1 node2 node3

Puis, on récupère les clés d’authentification de nos monitors:

ceph-deploy gatherkeys node1

Voilà, l’installation des monitors est terminée. On va maintenant attaquer la partie stockage.

Avec CEPH, chaque nœud de stockage est appelé un OSD. Dans notre cas, trois OSD vont être configurés respectivement sur node1, node2 et node3.

Nous allons maintenant installer le rôle OSD sur nos différents nœuds. Dans cette partie du tutoriel le stockage utilisé sera sur le deuxième disque des machines node1, node2 et node3.

/!\ ATTENTION: Les disques servant au stockage ne doivent contenir aucune table de partition et ne pas être monté.

ceph-deploy osd create node1:/dev/sdb node2:/dev/sdb node3:/dev/sdb
ceph-deploy osd activate node1:/dev/sdb node2:/dev/sdb node3:/dev/sdb

Puis, on déploie la configuration sur l’ensemble des machines du cluster:

ceph-deploy admin ceph-adm node1 node2 node3

Et pour finir la configuration du cluster, on ajoute un dernier rôle au node1, le rôle MDS:

ceph-deploy mds create node1

Il ne reste plus qu’à valider que tout fonctionne correctement avec la commande suivante:

ceph health

Si le retour de la commande est : HEALTH_OK , c’est que tout va bien !  Votre cluster est prêt 😀

Installation d’un client CEPH

Ca y est vous croyez que c’est finit? Eh bien pas tout à fait. Il reste une petite chose à faire pour pouvoir exploiter notre cluster. C’est de configurer un client

Dans un premier, on va installer tout le nécessaire pour notre client.
Les étapes d’installation s’effectuent depuis le serveur d’administration.

Nous allons d’abord ajouter le rôle ceph-client au serveur:

ceph-deploy install ceph-client node-client

Puis, on lui déploie la configuration du cluster:

ceph-deploy admin node-client

La partie d’installation est maintenant terminée. Nous allons maintenant créer notre premier volume et le monter sur notre client.

  • Création d’un nouveau bloc

Pour créer un nouveau bloc, entrez la commande suivante sur votre serveur client:

rbd create YOUR_BLOCK_NAME --size YOUR_SIZE -m IP_ADDRESS_MONITOR  -k /etc/ceph/ceph.client.admin.keyring

Dans mon cas:

rbd create block01 --size 10240 -m 172.16.0.12  -k /etc/ceph/ceph.client.admin.keyring

Puis, on mappe ce bloc à un périphérique système:

sudo rbd map block01 --pool rbd --name client.admin -m 172.16.0.12 -k /etc/ceph/ceph.client.admin.keyring

Il ne reste plus qu’à formater notre beau volume tout neuf et le monter:

sudo mkfs.ext4 -m0 /dev/rbd/rbd/block01
mkdir /mnt/ceph-device
sudo mount /dev/rbd/rbd/block01 /mnt/ceph-device

Si vous souhaitez le monter automatiquement au démarrage de la machine, modifiez le fichier /etc/fstab comme ceci:

/dev/rdb/rdb/block01 /mnt/ceph-device ext4 rw 0 0

Voilà, vous avez maintenant un cluster CEPH opérationel. C’est sympa non? ?

Mais ce n’est qu’une initiation à ce que peut faire CEPH. J’attends vraiment de voir comment va évoluer cette solution.

Articles similaires