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
utilisateurs:mrwaloo:drbd [Le 16/01/2009, 18:13]
MrWaloo
— (Version actuelle)
Ligne 1: Ligne 1:
-===== Introduction ===== 
-<​note>​Ce tutoriel est destiné à un **public averti**, certains détails //​triviaux//​ ne sont pas détaillés...((je me répète ?))\\ 
-Toutes les commandes sont lancées avec l'​utilisateur ''​**root**''​.</​note>​ 
- 
-À l'​heure où les serveurs d'​entreprises doivent stocker un volume croissant de données et assurer une haute disponibilité,​ il est nécessaire d'​imaginer des   ​systèmes de //​mirroring//​ (miroir) autres que simplement sur des disques durs. 
- 
-La redondance de disques durs (RAID-1, RAID-5) permet déjà d'​avoir une bonne résistance aux pannes d'un disque (ou plusieurs si on est en RAID-5). Cependant, si c'est la machine qui //tombe// (le processeur, l'​alimentation,​ le contrôleur de disque, etc.), on n'a aucun moyen pour relancer le tout rapidement sans perte de données. 
- 
-drbd permet de mettre en œuvre une solution de RAID-1 au travers du réseau. C'​est-à-dire que sur deux serveurs, on a une partition ((qui peut être sur un lvm ou sur un raid physique ou logiciel)) par serveur qui est à tout moment une copie exacte d'une partition de l'​autre serveur. C'est un //​mirroring//​ (miroir) de partitions à travers une interface réseau. 
- 
-C'est une solution qui permet également d'​utiliser deux PC au lieu d'un serveur afin de **faire des économies**,​ aussi bien pour l'​achat initial que pour ==== l'​achat de disques supplémentaires (en remplacement ou en ajout) par la suite. Dans la mesure où ce //cluster// est utilisé pour un partage ''​samba'',​ ce type de matériel est tout à fait convenable pour une utilisation avec jusqu'​à une vingtaine de clients. 
- 
-<note important>​Cette page est une des étapes de l'​utilisation conjointe de ''​drbd''​ avec [[heartbeat|heartbeat]] et [[samba|samba]]. C'est pourquoi certaines notes font référence à ces outils.</​note>​ 
- 
-===== Installation sur Ubuntu Server ===== 
-<​note>​Le module ''​drbd''​ est disponible avec le noyau ''​server''​ "de base" depuis Hardy Heron((à vrai dire je ne sais pas si c'​était déjà le cas pour les versions précédentes)). Cependant, afin d'​avoir un système récent avec un minimum de bug et de faille de sécurité, on passera au noyau ''​server''​ le plus récent.</​note>​ 
- 
-Mise à jour du système : 
-  * [[http://​doc.ubuntu-fr.org/​apt-get#​mise_a_jour_depots|Mise à jour des dépots]] 
-  * [[http://​doc.ubuntu-fr.org/​apt-get#​mise_a_jour_paquets|Mise à jour des paquets]] (dist-upgrade) 
-Passer à la version du noyau la plus récente. Redémarrer. 
- 
-Vérification de la présence du module ''​drbd''​ : 
-<​code>​cat /​proc/​drbd</​code>​ 
-<​file>​cat:​ /proc/drbd: Aucun fichier ou répertoire de ce type</​file>​ 
-<​code>#​ modprobe drbd 
-# cat /​proc/​drbd</​code>​ 
-<​file>​version:​ 8.2.6 (api:​88/​proto:​86-88) 
-GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre,​ 2008-05-30 12:​59:​17</​file>​ 
-Sous Hardy Heron, la version du module et des outils est la 8.0.11. 
- 
-[[http://​doc.ubuntu-fr.org/​apt-get#​installation|Installation]] de ''​drbd''​ version **idem à la version du module** sans quoi le fonctionnement correct n'est pas garanti.\\ 
-Un paquet suggéré : ''​heartbeat''​ : tout le monde est sur la même longueur d'​onde... ​ 
- 
-<note important>​Il faut que le service ''​drbd''​ démarre, sinon le script de démarrage de ''​drbd''​ de ''​heartbeat''​ ne fonctionne pas. Il faut donc lancer la commande\\ 
-__''#​ update-rc.d drbd defaults 70''​__\\ 
-ou simplement copier le lien qui se trouve dans ''/​etc/​rc3.d''​ vers ''/​etc/​rc2.d''​ si ça ne fonctionne pas.</​note>​ 
- 
-Finalisation pour faire en sorte que les outils ''​heartbeat''​ fonctionnent :((à faire après l'​installation de heartbeat, évidemment)) 
-<​code>​chgrp haclient /​sbin/​drbdsetup 
-chmod o-x /​sbin/​drbdsetup 
-chmod u+s /​sbin/​drbdsetup 
- 
-chgrp haclient /​sbin/​drbdmeta 
-chmod o-x /​sbin/​drbdmeta 
-chmod u+s /​sbin/​drbdmeta</​code>​ 
- 
-===== Configuration ===== 
-Postulat de départ : 
-  * les deux serveurs ont les adresses IP 192.168.214.10 et 192.168.214.11 
-  * les 2 serveurs se nomment ''​serv1''​ et ''​serv2'',​ ''​serv1''​ étant le serveur primaire 
-  * sur chacun des deux serveurs, la partition ''/​dev/​sda6''​ est celle que ''​drbd''​ duplique. Il s'agit d'une partition **non-formatée**.((si vous ne pouvez pas faire autrement que de réutiliser une partition ayant été formatée et ayant contenu des données, il faudra utiliser la commande __''#​ shred -zvf -n 1 /​dev/​sda6''​__ afin de //vider// (remplir avec des zéros) la partition. Attention, l'​opération peut prendre du temps, mais elle peut être stoppée après les 10 premiers pourcents ([CTRL]+[C]).)) Toutes les données de cette partition seront perdues. 
-  * l'​adresse mail de l'​administrateur à contacter((en supposant que les deux serveurs sachent envoyer un mail (ssmtp par exemple) )) est ''​admin@domain.fr''​((à personnaliser)). Le sujet commence par "​SERVEUR"​ car c'est le nom netbios du serveur samba. 
- 
-[[:​tutoriel:​comment_editer_un_fichier|Éditer le fichier]] ''/​etc/​brbd.conf''​ : 
-<​file>​global { 
-  usage-count no; 
-} 
- 
-common { 
-  protocol C; 
-  syncer { rate 2M; } 
-  handlers { 
-    pri-lost-after-sb "​reboot -f"; 
-    pri-lost "echo Déconnection des serveurs, vérifier les logs | mail -s '​SERVEUR:​ Alerte DRBD' admin@domain.fr";​ 
-    out-of-sync "echo Désynchronisation des serveurs, vérifier les logs | mail -s '​SERVEUR:​ Alerte DRBD' admin@domain.fr";​ 
-    pri-on-incon-degr "​reboot -f"; 
-    outdate-peer "/​usr/​lib/​heartbeat/​drbd-peer-outdater -t 5"; 
-    local-io-error "echo o > /​proc/​sysrq-trigger ; halt -f"; 
-  } 
-} 
- 
-resource r0 { 
-  device ​   /dev/drbd0; 
-  disk      /dev/sda6; 
-  meta-disk internal; 
-  ​ 
-  disk { 
-    on-io-error ​  ​detach;​ 
-  } 
-  ​ 
-  startup { 
-    wfc-timeout ​ 60; 
-    degr-wfc-timeout 30; 
-    become-primary-on serv1; 
-  } 
-  ​ 
-  net { 
-    after-sb-0pri discard-older-primary;​ 
-    after-sb-1pri call-pri-lost-after-sb;​ 
-    after-sb-2pri call-pri-lost-after-sb;​ 
-  } 
-  on serv1 { 
-    address ​  ​192.168.214.10:​7788;​ 
-  } 
-  on serv2 { 
-    address ​  ​192.168.214.11:​7788;​ 
-  } 
-}</​file>​ 
- 
-==== À faire sur chaque serveur en même temps ==== 
-<note tip>Si vous vous êtes dit que vous alliez tout installer sur un serveur puis [[http://​doc.ubuntu-fr.org/​tutoriel/​comment_sauvegarder_partition_avec_partimage|cloner]] le premier serveur pour en obtenir un second identique, c'est là qu'il faut que vous sachiez que les instructions qui suivent doivent être lancées sur chacun des 2 serveurs, à moins de n'​utiliser ''​dd''​ pour l'​ensemble du/des disque(s) dur(s). Ce qui peut prendre //pas mal de temps//​...\\ 
-**Sinon, il faut répéter tout ce qui vient d'​être fait sur le second serveur avant d'​aller plus loin.**</​note>​ 
- 
-<​note>//​En même temps// signifie simplement que la commande doit être lancée sur les 2 serveurs et que la suivante ne peut être lancée sur quelque serveur que ce soit que si la précédente a terminé sans erreur sur les 2 serveurs.</​note>​ 
- 
-Lancer : 
-<​code>​drbdadm create-md r0</​code>​ 
-<​file>​v08 Magic number not found 
-md_offset 1093922816 
-al_offset 1093890048 
-bm_offset 1093853184 
- 
-Found some data 
- ​==>​ This might destroy existing data! <== 
- 
-Do you want to proceed? 
-[need to type '​yes'​ to confirm] </​file>​ 
-Taper ''​yes''​. Il est possible qu'une autre question demandant confirmation de destruction des données de la partition soit posée, répondez ''​yes''​ si vous êtes sur de ce que vous faites. 
-<​file>​v07 Magic number not found 
-v07 Magic number not found 
-v08 Magic number not found 
-Writing meta data... 
-initialising activity log 
-NOT initialized bitmap 
-New drbd meta data block sucessfully created. 
-success</​file>​ 
-<​note>​Il se peut qu'un message disant que cette partition contient des données vous empêche de continuer, il faut alors lancer la commande\\ 
-__''#​ shred -zvf -n 1 /​dev/​sda6''​__\\ 
-afin de remplir la partition avec des zéros, puis de relancer la commande.</​note>​ 
- 
-Si le module ''​drbd''​ n'est pas chargé : 
-<​code>​modprobe drbd</​code>​ 
-Puis : 
-<​code>​drbdadm up r0</​code>​ 
-La commande suivante doit donner quelque chose du genre : 
-<​code>#​ cat /proc/drbd 
-version: 8.2.6 (api:​88/​proto:​86-88) 
-GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre,​ 2008-05-30 12:59:17 
- 0: cs:​Connected st:​Secondary/​Secondary ds:​Inconsistent/​Inconsistent C r--- 
-    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:​149134808</​code>​ 
-Puisque ''​drbd''​ est lancé mais aucun serveur //​primaire//​ n'est déclaré. On le voit car après ''​st:'',​ il est indiqué ''​Secondary/​Secondary''​ ce qui signifie que le nœud sur lequel la commande est exécuté est //​secondaire//​ (le premier avant le ''/''​) et que l'​autre l'est aussi (le second après le ''/''​).\\ 
-Pour ne connaître que l'​état de la grappe ''​drbd'',​ la commande suivante suffit : 
-<​code>​drbdadm state r0</​code>​ 
-<​file>​Secondary/​Secondary</​file>​ 
- 
-==== À ne faire que sur le serveur primaire ==== 
-Il s'agit maintenant de déclarer un des 2 serveurs comme //​primaire//,​ le serveur //​secondaire//​ se synchronisera //​automagiquement//​((oui je sais, ce terme n'est pas de moi, il est souvent utilisé dans les documentations Debian et dérivés, d'où sa place ici.)).\\ 
-Lancer la commande : 
-<​code>​drbdadm -- --overwrite-data-of-peer primary r0 
- 
-cat /​proc/​drbd</​code>​ 
-<​file>​version:​ 8.2.6 (api:​88/​proto:​86-88) 
-GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre,​ 2008-05-30 12:59:17 
- 0: cs:​SyncSource st:​Primary/​Secondary ds:​UpToDate/​Inconsistent C r--- 
-    ns:2240 nr:0 dw:0 dr:2240 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:​149132568 
-        [>​....................] sync'​ed: ​ 0.1% (145637/​145639)M 
-        finish: 17:15:38 speed: 2,240 (2,240) K/​sec</​file>​ 
-On voit que le serveur secondaire se synchronise avec une superbe barre de progression.\\ 
-Le temps indiqué après ''​finish:''​ est le temps indicatif restant avant la fin de la première synchronisation. Pour diminuer ce temps, il est vivement conseillé de //​débrider//​ le taux de transfert de la synchronisation en modifiant **provisoirement** la configuration de ''​drbd''​. Dans le fichier ''/​etc/​drbd.conf'',​ remplacer : 
-<​file> ​ syncer { rate 2M; }</​file>​ 
-par 
-<​file> ​ syncer { rate 100M; }</​file>​ 
-Pour prendre la modification en compte : 
-<​code>#​ drbdadm adjust r0</​code>​ 
-Le débit ira donc aussi vite qu'il peut. D'​ailleurs cette valeur est un débit en MB/sec, si vous êtes en réseau 100MB, n'​allez pas au dessus de ''​8M'',​ puisqu'​il s'agit (environ) de la valeur maximale de débit. la valeur ''​2M''​ correspond au quart de ce débit afin de laisser de la bande passante aux utilisateurs.\\ 
-Il est tout à fait possible (et conseillé, mais je n'ai pas encore mis cette solution en place) d'​avoir 2 cartes réseau sur les serveurs : 
-   * une pour la connexion au réseau : cette connexion sert aux utilisateurs pour accéder aux données, 
-   * une pour une connexion directe (via câble croisé) entre les serveurs : celle-ci pour la synchronisation des données **uniquement**((il ne faut pas faire passer le signe de vie ''​heartbeat''​ par cette connexion, car le signe de vie **doit** passer par le lien que les utilisateurs utilisent pour vérifier son bon fonctionnement.)). 
- 
-Une fois les serveurs synchronisés,​ 
-<​code>​cat /​proc/​drbd</​code>​ 
-<​file>​version:​ 8.2.6 (api:​88/​proto:​86-88) 
-GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre,​ 2008-05-30 12:59:17 
- 0: cs:​Connected st:​Primary/​Secondary ds:​UpToDate/​UpToDate C r--- 
-    ns:2240 nr:0 dw:0 dr:2240 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:​149132568</​file>​ 
-il est temps de formater la partition ''​drbd''​ (vous avez, bien évidemment pensé à revenir à un débit de synchronisation normal) : 
-<​code>​mkfs.ext3 /​dev/​drbd0</​code>​ 
-et de monter votre partition. Le montage de la partition doit utiliser ''/​dev/​drbd0''​. 
-<note important>​ 
-Dans le cas de l'​utilisation de ''​drbd''​ avec ''​heartbeat''​ et ''​samba'',​ le montage du disque est géré par ''​heartbeat''​.</​note>​ 
- 
----- 
  
  • utilisateurs/mrwaloo/drbd.1232125989.txt.gz
  • Dernière modification: Le 18/04/2011, 14:42
  • (modification externe)