informatique:systeme:ha:ceph

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:systeme:ha:ceph [2013/11/26 20:08] bn8informatique: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 décris la mise en place d'un cluster de serveurs.+Cette méthodologie décrie la mise en place d'un cluster composé de trois serveurs.
  
 ==== Schéma réseau ==== ==== Schéma réseau ====
Ligne 9: Ligne 9:
 {{ :informatique:systeme:ha:schema-reseau.png?direct&400 |Schéma réseau}} {{ :informatique:systeme:ha:schema-reseau.png?direct&400 |Schéma réseau}}
  
-==== Schéma cluster Ceph ====+==== Schéma du cluster Ceph ====
  
 {{ :informatique:systeme:ha:schema-ceph.png?direct&400 |Schéma cluster Ceph}} {{ :informatique:systeme:ha:schema-ceph.png?direct&400 |Schéma cluster Ceph}}
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 **Ceph** et deux autres disques (SATA 2To par exemple) pour les données du cluster+  * Les 3 serveurs doivent posséder 2 disques //SSD// (64Go minimum) en RAID1 pour le système et les journaux //Ceph// et deux autres disques (//SATA 2To// par exemple) pour les //OSD// (=les données du cluster)
   * 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 = /var/lib/ceph/journal/$cluster-$id         osd journal = /var/lib/ceph/journal/$cluster-$id
 +        osd recovery max active = 1        
  
 [osd.0] [osd.0]
Ligne 110: Ligne 111:
   * Sur //ceph1// : <code>mkdir -p /var/lib/ceph/mon/ceph-a   * Sur //ceph1// : <code>mkdir -p /var/lib/ceph/mon/ceph-a
 ceph-authtool --create-keyring  /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin ceph-authtool --create-keyring  /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin
 +chmod 600 /etc/ceph/ceph.client.admin.keyring
 ceph-authtool --create-keyring /var/lib/ceph/mon/ceph-a/keyring --gen-key -n mon. ceph-authtool --create-keyring /var/lib/ceph/mon/ceph-a/keyring --gen-key -n mon.
 cp -a /var/lib/ceph/mon/ceph-a/keyring /etc/ceph/ceph.mon.a.keyring cp -a /var/lib/ceph/mon/ceph-a/keyring /etc/ceph/ceph.mon.a.keyring
Ligne 120: Ligne 122:
 scp 192.168.0.1:/etc/ceph/ceph.mon.a.keyring /etc/ceph/ceph.mon.b.keyring scp 192.168.0.1:/etc/ceph/ceph.mon.a.keyring /etc/ceph/ceph.mon.b.keyring
 scp 192.168.0.1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring scp 192.168.0.1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring
 +chmod 600 /etc/ceph/ceph.client.admin.keyring
 ceph-mon -i b -f -c /etc/ceph/ceph.conf --mkfs</code> ceph-mon -i b -f -c /etc/ceph/ceph.conf --mkfs</code>
  
Ligne 126: Ligne 129:
 scp 192.168.0.1:/etc/ceph/ceph.mon.a.keyring /etc/ceph/ceph.mon.c.keyring scp 192.168.0.1:/etc/ceph/ceph.mon.a.keyring /etc/ceph/ceph.mon.c.keyring
 scp 192.168.0.1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring scp 192.168.0.1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring
 +chmod 600 /etc/ceph/ceph.client.admin.keyring
 ceph-mon -i c -f -c /etc/ceph/ceph.conf --mkfs ceph-mon -i c -f -c /etc/ceph/ceph.conf --mkfs
 /etc/init.d/ceph -a start mon.c /etc/init.d/ceph -a start mon.c
Ligne 200: Ligne 204:
  
 ==== Agrandir un volume utilisé comme disque d'une machine virtuelle ==== ==== Agrandir un volume utilisé comme disque d'une machine virtuelle ====
 +
 +=== Sans arrêter la VM ===
 +
 +Utiliser la commande virsh suivante : <code>virsh blockresize --domain [mavm] --path "[volume]" --size [newsize]</code>
 +
 +**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'au système d'exploitation de la VM. Il faut ensuite faire en sorte que la VM utilise ce nouvelle espace. Par exemple, si le volume est utilisé directement comme un volume physique LVM, vous pouvez suivre la procédure décrite [[informatique:systeme:matos:lvm#augmenter_un_pv|ici]].
 +
 +=== Avec arrêt de la VM ===
  
   * Arrêter la VM   * Arrêter la VM
Ligne 209: Ligne 227:
     * **[volume] :** le nom du //volume//     * **[volume] :** le nom du //volume//
   * Une fois le redimensionnement fait, relancer la VM   * Une fois le redimensionnement fait, relancer la VM
-  * Une fois la VM rebootée, il faut faire en sorte d'utiliser cette espace disque supplémentaire. Si vous utilisez //LVM//, cela passe par la commande //pvresize//. Pour plus d'informations sur cette étape consulter [[informatique:systeme:matos:lvm|la page du wiki à propos de LVM]]. +  * Une fois la VM rebootée, il faut faire en sorte d'utiliser cette espace disque supplémentaire. Si vous utilisez //LVM//, vous pouvez suivre la procédure décrite [[informatique:systeme:matos:lvm#augmenter_un_pv|ici]].
 ==== Réduire un volume utilisé comme un disque d'une machine virtuelle ==== ==== 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//, il faudra : +  * 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:systeme:matos:lvm#reduire_un_pv|ici]] jusqu'à l'arrêt pour réduction du disque de la VM.
-    * Réduire le //PV// avec la commande //pvresize//. Il est conseillé de réduire plus que nécessaire et de réagrandir ensuite le //PV// à la taille exact du disque après redimensionnement. +
-    * Si le //PV// utilise une partition et nom pas un bloc device directement, il faudra également réduire la partition. Pour cela, il faudra simplement la supprimer avec la commande //fdisk// et la récréer à l'identique mise à part sa taille (type LVM //8e//, flag //boot// si nécessaire). Encore une fois il est conseillé de réduire la partition plus de nécessaire. Elle sera ensuite étendu à l'espace maximum une fois la réduction effective.+
   * Arrêter ensuite la VM   * Arrêter ensuite la VM
  
Ligne 225: Ligne 240:
     * **[pool] :** le nom du //pool//     * **[pool] :** le nom du //pool//
     * **[volume] :** le nom du //volume//     * **[volume] :** le nom du //volume//
-  * Relancer ensuite la VM +  * Relancer ensuite la VM. Si vous utilisé //LVM//, il faudra finir la procédure de redimensionnement décrite [[informatique:systeme:matos:lvm#reduire_un_pv|ici]], à savoir agrandir la partition et le //PV//. 
-  * Une fois rebootée, si vous utilisé LVM il faudra : +
-    * Si le //PV// utilise une partition et nom pas un //bloc device// directement, il faut étendre au maximum la taille de la partition. Pour celail faudra a nouveau à la supprimer et la recréer avec //fdisk// puis redémarrer la VM à nouveau pour que la nouvelle taille soit prise en compte+
-    * Redimensionner le //PV// avec la commande <code>pvresize /dev/vdaX</code>+
  
 ==== Créer un snapshot d'un volume ==== ==== Créer un snapshot d'un volume ====
Ligne 279: Ligne 292:
 mount -a</code> mount -a</code>
  
 +  * Déclaration du dépôt [[http://www.easter-eggs.com|Easter-eggs]] proposant des paquets Debian de Livbirt et KVM avec le support de //ceph// : <code>echo "deb http://debian.easter-eggs.org/debian wheezy main libvirt kvm" > /etc/apt/sources.list.d/libvirt.list
 +apt-get update</code>
   * Installation de libvirt et ses dépendances : <code>apt-get install libvirt-bin qemu-kvm netcat-openbsd qemu-utils</code>   * Installation de libvirt et ses dépendances : <code>apt-get install libvirt-bin qemu-kvm netcat-openbsd qemu-utils</code>
  
Ligne 307: Ligne 322:
  
 <note>Le nombre //200// utilisé lors de la création du pool libvirt correspond aux nombres de //Placement Group// calculé selon la méthode officielle expliqué [[http://ceph.com/docs/master/rados/operations/placement-groups/|ici]].</note>  <note>Le nombre //200// utilisé lors de la création du pool libvirt correspond aux nombres de //Placement Group// calculé selon la méthode officielle expliqué [[http://ceph.com/docs/master/rados/operations/placement-groups/|ici]].</note> 
- 
-  * On créé un fichier //XML /tmp/rbd-pool.xml// qui nous permettra de définir le pool au niveau de libvirt : <code><pool type="rbd"> 
-      <name>rbd</name> 
-      <source> 
-        <name>libvirt</name> 
-          <host name='192.168.0.1' port='6789'/> 
-          <host name='192.168.0.2' port='6789'/> 
-          <host name='192.168.0.3' port='6789'/> 
-          <auth username='libvirt' type='ceph'> 
-            <secret uuid='9b*******************************27e'/> 
-          </auth> 
-      </source> 
-</pool></code> 
- 
-  * On créé le pool dans libvirt à partir du fichier *XML* : <code>virsh pool-define /tmp/rbd-pool.xml 
-scp /tmp/rbd-pool.xml 192.168.0.2:/tmp/ 
-ssh 192.168.0.2 "virsh pool-define /tmp/rbd-pool.xml" 
-scp /tmp/rbd-pool.xml 192.168.0.3:/tmp/ 
-ssh 192.168.0.3 "virsh pool-define /tmp/rbd-pool.xml"</code> 
- 
  
 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 : 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 :
Ligne 345: Ligne 340:
     </disk></code>     </disk></code>
  
-  +<note>Pour attacher un disque ceph à une VM en cours d'exectution, créé un fichier xml contenant juste la déclaration du disque (juste la balise //<disk/>//) et ajouter le disque ensuite avec la commande suivante : <code>virsh attach-device [nom-vm] [/chemin/fichier.xml] --persistent</code>L'option //--persitent// permet que ce disque soit systématiquement attaché à la VM au moment de son démarrage.</note> 
 +===== Supervision de Ceph avec Nagios ===== 
 + 
 +On va mette ici en place trois checks différent : 
 + 
 +  * //check_ceph_health// : ce plugin vérifie simplement l'état général du cluster avec la commande //ceph health// 
 +  * //check_ceph_status// : ce plugin vérifie l'état général du cluster (//health//, nombre d'OSDs UP, nombre de MONs UP et l'état des PGs) avec la commande //ceph status// 
 +  * //check_ceph_usage// : ce plugin vérifie l'espace disque utilisé dans le cluster via la commande //ceph status// 
 + 
 +Mise en place : 
 + 
 +  * Création d'une clé //authx// pour Nagios (à faire sur //ceph1//) : <code>ceph auth get-or-create client.nagios mon 'allow r' > /etc/ceph/ceph.client.nagios.keyring 
 +scp /etc/ceph/ceph.client.nagios.keyring 192.168.0.2:/etc/ceph/ 
 +ssh root@192.168.0.2 'chown nagios: /etc/ceph/ceph.client.nagios.keyring' 
 +scp /etc/ceph/ceph.client.nagios.keyring 192.168.0.3:/etc/ceph/ 
 +ssh root@192.168.0.3 'chown nagios: /etc/ceph/ceph.client.nagios.keyring'</code> 
 + 
 +  * Installation du plugin : <code>git clone https://github.com/valerytschopp/ceph-nagios-plugins.git /usr/local/src/ceph-nagios-plugins 
 +mkdir -p /usr/local/lib/nagios/plugins 
 +ln -s /usr/local/src/ceph-nagios-plugins/src/check_ceph_health /usr/local/lib/nagios/plugins/check_ceph_health 
 + 
 +git clone http://git.zionetrix.net/git/check_ceph_usage /usr/local/src/check_ceph_usage 
 +ln -s /usr/local/src/check_ceph_usage/check_ceph_usage /usr/local/lib/nagios/plugins/check_ceph_usage 
 + 
 +git clone http://git.zionetrix.net/git/check_ceph_status /usr/local/src/check_ceph_status 
 +ln -s /usr/local/src/check_ceph_status/check_ceph_status /usr/local/lib/nagios/plugins/check_ceph_status</code> 
 + 
 +  * Définition de la configuration du //check// d'//NRPE// (à mettre dans le fichier ///etc/ceph/ceph.client.nagios.keyring// par exemple) : <code>command[check_ceph_health]=/usr/local/lib/nagios/plugins/check_ceph_health -d -i nagios -k /etc/ceph/ceph.client.nagios.keyring 
 +command[check_ceph_usage]=/usr/local/lib/nagios/plugins/check_ceph_usage -i nagios -k /etc/ceph/ceph.client.nagios.keyring --warning-data 50 --critical-data 60 --warning-allocated 80 --critical-allocated 90 
 +command[check_ceph_status]=/usr/local/lib/nagios/plugins/check_ceph_status -i nagios -k /etc/ceph/ceph.client.nagios.keyring</code> 
 + 
 +  * Rechargement de la configuration d'NRPE pour appliquer la modification : <code>service nagios-nrpe-server reload</code> 
 + 
 +<note>La supervision de l'état du cluster peut normalement être fait sur un seul des nœuds du cluster. Vous pouvez par exemple configurer une //VIP// (avec [[informatique:systeme:ha:pacemaker]] par exemple) sur le cluster pour faire la supervision sur celle-ci uniquement.</note>
  • informatique/systeme/ha/ceph.1385496534.txt.gz
  • Dernière modification : 2013/11/26 20:08
  • de bn8