diff --git a/HowtoCeph.md b/HowtoCeph.md index 5da6a0f3..d0729f89 100644 --- a/HowtoCeph.md +++ b/HowtoCeph.md @@ -5,6 +5,159 @@ title: Howto Ceph * Documentation : + # Installation +On cherche à créer l'architecture suivante où un client interagit avec un cluster Ceph : + + <---- cluster Ceph -----> + +-------+ + +-> | ceph1 | + | +-------+ + +-------+ +-------+ | +-------+ + | cephc | <-> | cephm | <-+-> | ceph2 | + +-------+ +-------+ | +-------+ + | +-------+ + +-> | ceph3 | + +-------+ + cephc : client Ceph + cephm : nœud maitre ou nœud admin + ceph[1-3] : nœud cephs + + +## Préparation + +On suppose ici que : + +- chaque machine a été installée sous Debian 9 ; +- chaque machine du cluster peut se connecter via SSH sur une autre ; +- cephc et cephm peuvent se connecter via SSH sur l'autre. + +Pour la configuration SSH, on aura, pour cephm: + + $ cat ~/.ssh/config + Hostname ceph1 + Host ceph1 + User cephuser + + Hostname ceph2 + Host ceph2 + User cephuser + + Hostname ceph2 + Host ceph2 + User cephuser + +Il est peut-être nécéssaire d'ajouter les machines dans le fichier `/etc/hosts` : + + X.X.X.X ceph1 + Y.Y.Y.Y ceph2 + Z.Z.Z.Z ceph3 + +> En réalité seul le nœud maître à besoin de se connecter aux autres nœud du cluster mais je n'ai pas essayé. + +Dans cet exemple, chaque noeud - ceph1, ceph2 et ceph3 - à un disque supplémentaire à sa disposition. Ce disque contiendra les données à stocker dans le cluster et doit être vide, sans table de partitions et être utilisé comme volume physique : + + wipefs -a /dev/sdb + pvcreate /dev/sdb + +> /dev/sdb est le volume supplémentaire. + + +## Installation + +On commence par installer `ceph-deploy`, l'outil qui permet de déployer un cluster Ceph. + + sudo wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - + echo deb https://download.ceph.com/debian-luminous/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list + sudo apt update && sudo apt install ceph-deploy + +> Les commandes précédentes ne sont à exécuter que sur le nœud maître. + +Puis, on installe NTP sur l'ensemble des nœuds. + + sudo apt install ntp + sudo timedatectl set-ntp true + +**TODO** Il est recommandé de créer un utilisateur spécifique pour Ceph, mais ça fonctionne sans. + +> Jusqu'à indication du contraire, les commandes qui suivent sont à exécuter sur le nœud maître. + +On commence par créer un dossier qui contiendra les fichiers de configuration et les clefs. + + mkdir my-cluster + cd my-cluster + +On crée le cluster : + + ceph-deploy new deb1 deb2 deb3 + +Ajouter le « public_network » à la configuration de Ceph : + + cat <>ceph.conf + public_network = 192.168.4.0/24 + eof + +On installe les paquets Ceph sur les nœeuds : + + ceph-deploy install --release luminous deb1 deb2 deb3 + +On initialise le moniteur. Cela va créer un tas de fichiers `*.keyring`. On copie ensuite ces fichiers sur tous les nœeuds. Un monitor sert à maintenir une carte de l'état du cluster. + + ceph-deploy mon create-initial + ceph-deploy admin deb0 deb1 deb2 deb3 + +On déploie un manager. Celui-ci permet de regrouper l'état du cluster à un seul endroit. + + ceph-deploy mgr create deb1 + +On crée les OSD : + + ceph-deploy osd create --data /dev/sdb deb1 + ceph-deploy osd create --data /dev/sdb deb2 + ceph-deploy osd create --data /dev/sdb deb3 + +> On peut lancer la commande suivante pour s'assurer que le cluster fonctionne bien : +> +> ssh ceph1 sudo ceph -s | grep HEALTH_OK && echo yee || echo fail + +On ajoute des moniteurs afin d'assurer la bonne disponibilité du cluster. Il vaut mieux avoir un nombre impair de moniteurs. + + ceph-deploy mon add deb2 + ceph-deploy mon add deb3 + +De la même manière, on ajoute des managers. Dans le cas où un manager décide de ne plus fonctionner. + + ceph-deploy mgr create deb2 + ceph-deploy mgr create deb3 + +Il ne reste qu'à créer un pool et à initialiser RBD : + + sudo ceph osd pool create rbd 128 + sudo rbd pool init rbd + +Le cluster est prêt. On peut maintenant s'occuper du client. + + +## Client + +L'installation du client est analogue à celle des nœuds. Depuis le nœud admin : + + ceph-deploy install --release luminous debc + ceph-deploy admin debc + ceph-deploy --overwrite-conf admin deb1 deb2 deb3 # TODO: nécéssaire ? + +> Si cette étape échoue à cause d'un problème de clefs, il faut copier les clefs dans /etc/ceph : +> +> sudo cp ceph.client.admin.keyring /etc/ceph + +Sur le client, on peut désormais récupérer le block device et l'utiliser : + + sudo rbd create foo --size 4096 --image-feature layering + sudo rbd map foo --name client.admin + sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo + sudo mkdir /mnt/ceph-block-device + sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device + cd /mnt/ceph-block-device + # Troubleshooting \ No newline at end of file