Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
informatique:systeme:ha:ceph [2013/11/26 19:18] – créée bn8 | informatique:systeme:ha:ceph [2014/10/16 14:50] (Version actuelle) – [Configuration de libvirt pour utiliser le cluster Ceph] bn8 | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
===== Mise en place d'un cluster ===== | ===== Mise en place d'un cluster ===== | ||
- | Cette méthodologie | + | Cette méthodologie |
==== Schéma réseau ==== | ==== Schéma réseau ==== | ||
Ligne 9: | Ligne 9: | ||
{{ : | {{ : | ||
- | ==== Schéma cluster Ceph ==== | + | ==== Schéma |
{{ : | {{ : | ||
Ligne 16: | Ligne 16: | ||
==== Pré-requis ==== | ==== Pré-requis ==== | ||
- | * Les 3 serveurs doivent posséder 2 disques SSD (64Mo minimum) en RAID1 pour le système et les journaux | + | * Les 3 serveurs doivent posséder 2 disques |
* L'OS des serveurs doit être installé sur un disque utilisant **LVM**. Partitionnement proposé : | * L'OS des serveurs doit être installé sur un disque utilisant **LVM**. Partitionnement proposé : | ||
* /dev/sda | * /dev/sda | ||
Ligne 90: | Ligne 90: | ||
osd journal size = 10000 | osd journal size = 10000 | ||
osd journal = / | osd journal = / | ||
+ | osd recovery max active = 1 | ||
[osd.0] | [osd.0] | ||
Ligne 110: | Ligne 111: | ||
* Sur //ceph1// : < | * Sur //ceph1// : < | ||
ceph-authtool --create-keyring | ceph-authtool --create-keyring | ||
+ | chmod 600 / | ||
ceph-authtool --create-keyring / | ceph-authtool --create-keyring / | ||
cp -a / | cp -a / | ||
Ligne 120: | Ligne 122: | ||
scp 192.168.0.1:/ | scp 192.168.0.1:/ | ||
scp 192.168.0.1:/ | scp 192.168.0.1:/ | ||
+ | chmod 600 / | ||
ceph-mon -i b -f -c / | ceph-mon -i b -f -c / | ||
Ligne 126: | Ligne 129: | ||
scp 192.168.0.1:/ | scp 192.168.0.1:/ | ||
scp 192.168.0.1:/ | scp 192.168.0.1:/ | ||
+ | chmod 600 / | ||
ceph-mon -i c -f -c / | ceph-mon -i c -f -c / | ||
/ | / | ||
Ligne 172: | Ligne 176: | ||
ceph osd crush set 5 2.0 root=default host=ceph3</ | ceph osd crush set 5 2.0 root=default host=ceph3</ | ||
+ | ===== Gestion des volumes Ceph ===== | ||
+ | ==== Lister les volumes d'un pool ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | **Avec :** | ||
+ | * **[pool] :** le nom du //pool// | ||
+ | |||
+ | ==== Afficher les détails d'un volume ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | **Avec :** | ||
+ | |||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume :** le nom du //volume// | ||
+ | |||
+ | ==== Supprimer un volume ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | **Avec :** | ||
+ | |||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume :** le nom du //volume// | ||
+ | |||
+ | ==== Agrandir un volume utilisé comme disque d'une machine virtuelle ==== | ||
+ | |||
+ | === Sans arrêter la VM === | ||
+ | |||
+ | Utiliser la commande virsh suivante : < | ||
+ | |||
+ | **Avec : ** | ||
+ | |||
+ | * **[mavm] : ** le nom libvirt de la VM | ||
+ | * **[volume] : ** le nom du volume telque vue par la VM. Exemple : //vdc// | ||
+ | * **[newsize] : ** la nouvelle taille du volume. Exemple : //40G// | ||
+ | |||
+ | La modification est normalement propagé jusqu' | ||
+ | |||
+ | === Avec arrêt de la VM === | ||
+ | |||
+ | * Arrêter la VM | ||
+ | * Une fois la VM arrêtée, agrandir l' | ||
+ | |||
+ | * **Avec :** | ||
+ | * **[taille en Mb] :** la nouvelle taille du //volume// en Mo (exemple : 20480 pour 20G) | ||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume] :** le nom du //volume// | ||
+ | * Une fois le redimensionnement fait, relancer la VM | ||
+ | * Une fois la VM rebootée, il faut faire en sorte d' | ||
+ | ==== Réduire un volume utilisé comme un disque d'une machine virtuelle ==== | ||
+ | |||
+ | * Il faut commencer par réduire la taille disque utiliser sur la VM. Si vous utilisez //LVM//, vous pouvez suivre la procédure décrite [[informatique: | ||
+ | * Arrêter ensuite la VM | ||
+ | |||
+ | < | ||
+ | |||
+ | * Redimensionner ensuite le volume avec la commande suivante : < | ||
+ | * **Avec :** | ||
+ | * **[taille en Mb] :** la nouvelle taille do //volume// en Mo (exemple : 20480 pour 20G) | ||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume] :** le nom du //volume// | ||
+ | * Relancer ensuite la VM. Si vous utilisé //LVM//, il faudra finir la procédure de redimensionnement décrite [[informatique: | ||
+ | |||
+ | |||
+ | ==== Créer un snapshot d'un volume ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | **Avec :** | ||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume] :** le nom du //volume// | ||
+ | * **[snap] :** le nom que vous voulez nommer votre // | ||
+ | |||
+ | ==== Lister les snapshot d'un volume ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | **Avec :** | ||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume] :** le nom du //volume// | ||
+ | |||
+ | ==== Remettre un volume à l' | ||
+ | |||
+ | Cette opération consite a écraser toutes les modifications faites depuis un // | ||
+ | |||
+ | < | ||
+ | |||
+ | **Avec :** | ||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume] :** le nom du //volume// | ||
+ | * **[snap] :** le nom du // | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | ==== Supprimer un snapshot d'un volume ==== | ||
+ | |||
+ | < | ||
+ | |||
+ | **Avec :** | ||
+ | * **[pool] :** le nom du //pool// | ||
+ | * **[volume] :** le nom du //volume// | ||
+ | * **[snap] :** le nom du // | ||
+ | |||
+ | ===== Utilisation du cluster Ceph dans Libvirt ===== | ||
+ | |||
+ | ==== Installation de libvirt ==== | ||
+ | |||
+ | * Création d'un LV // | ||
+ | mkfs.ext4 /dev/vg_$( hostname -s )/ | ||
+ | tune2fs -i0 -c0 /dev/vg_$( hostname -s )/libvirt | ||
+ | echo "/ | ||
+ | mount -a</ | ||
+ | |||
+ | * Déclaration du dépôt [[http:// | ||
+ | apt-get update</ | ||
+ | * Installation de libvirt et ses dépendances : < | ||
+ | |||
+ | ==== Configuration de libvirt pour utiliser le cluster Ceph ==== | ||
+ | |||
+ | A faire sur //ceph1// : | ||
+ | |||
+ | * Création d'un utilisateur dédié pour //libvirt// au niveau de //ceph// : < | ||
+ | * Création d'un //secret// Libvirt pour stocker les informations d' | ||
+ | scp / | ||
+ | scp / | ||
+ | virsh secret-define / | ||
+ | ssh 192.168.0.2 "virsh secret-define / | ||
+ | ssh 192.168.0.3 "virsh secret-define / | ||
+ | |||
+ | * Définition du //secret// : | ||
+ | * On commance par récupèré l'UUID du secret libvirt affiché lors de la création du secret à l' | ||
+ | * On récupère la clé de l' | ||
+ | [client.libvirt] | ||
+ | key = AQ**********************************0A== | ||
+ | caps mon = "allow r" | ||
+ | caps osd = "allow class-read object_prefix rbd_children, | ||
+ | * On peut maintenant définir à partir des deux informations récupérées : < | ||
+ | ssh 192.168.0.2 "virsh secret-set-value --secret 9b*******************************27e --base64 ' | ||
+ | ssh 192.168.0.3 "virsh secret-set-value --secret 9b*******************************27e --base64 ' | ||
+ | |||
+ | * Création d'un //pool ceph// pour //libvirt// : < | ||
+ | |||
+ | < | ||
+ | |||
+ | On peut désormais utiliser un volume //ceph// en tant que disque d'une machine virtuelle. Pour cela, voila un exemple de configuration d'un disque //ceph// d'une machine virtuelle : | ||
+ | |||
+ | < | ||
+ | <driver name=' | ||
+ | <auth username=' | ||
+ | <secret type=' | ||
+ | </ | ||
+ | <source protocol=' | ||
+ | <host name=' | ||
+ | <host name=' | ||
+ | <host name=' | ||
+ | </ | ||
+ | <target dev=' | ||
+ | <alias name=' | ||
+ | <address type=' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | ===== Supervision de Ceph avec Nagios ===== | ||
+ | |||
+ | On va mette ici en place trois checks différent : | ||
+ | |||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | |||
+ | Mise en place : | ||
+ | |||
+ | * Création d'une clé //authx// pour Nagios (à faire sur //ceph1//) : < | ||
+ | scp / | ||
+ | ssh root@192.168.0.2 'chown nagios: / | ||
+ | scp / | ||
+ | ssh root@192.168.0.3 'chown nagios: / | ||
+ | |||
+ | * Installation du plugin : < | ||
+ | mkdir -p / | ||
+ | ln -s / | ||
+ | |||
+ | git clone http:// | ||
+ | ln -s / | ||
+ | |||
+ | git clone http:// | ||
+ | ln -s / | ||
+ | |||
+ | * Définition de la configuration du //check// d'// | ||
+ | command[check_ceph_usage]=/ | ||
+ | command[check_ceph_status]=/ | ||
+ | |||
+ | * Rechargement de la configuration d'NRPE pour appliquer la modification : < | ||
+ | |||
+ | < |