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>
|
||||
|
||||
|
||||
# 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
|
Loading…
Reference in New Issue