Ajout procédure installation
This commit is contained in:
parent
9897a5c239
commit
d11b42b87c
153
HowtoCeph.md
153
HowtoCeph.md
|
@ -5,6 +5,159 @@ title: Howto Ceph
|
||||||
|
|
||||||
* Documentation : <http://docs.ceph.com>
|
* Documentation : <http://docs.ceph.com>
|
||||||
|
|
||||||
|
|
||||||
# Installation
|
# 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 <<eof >>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
|
# Troubleshooting
|
Loading…
Reference in a new issue