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:introduction [Le 30/01/2009, 22:52]
MrWaloo Configuration et mise en place de drbd
— (Version actuelle)
Ligne 1: Ligne 1:
-====== Mirroring sur deux serveurs : Introduction ====== 
- 
-===== 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. 
- 
-===== Présentation des outils utilisés ===== 
-Ce tutoriel met en œuvre certains outils qu'il faut rapidement présenter.\\ 
-Des termes importants sont utilisés : 
-  * serveur 
-  * service 
-  * haute disponibilité 
-  * client 
-Ces termes ne sont pas détaillés dans ce tutoriel, je fais appel à votre curiosité pour trouver leur définition. 
- 
-==== samba ==== 
-''​samba''​ est l'​outil qui permet à un ordinateur sur lequel une distribution GNU/Linux ou Unix est installée //​d'​apparaître//​ sur le réseau et de partager des fichiers et des imprimantes comme le ferait un ordinateur avec Windows©.\\ 
-C'est LA solution logicielle pour faire d'un serveur GNU/Linux un serveur de fichiers (et d'​imprimantes) pour des clients sous Windows©, puisqu'​elle est simple d'​utilisation pour les clients. 
- 
-==== heartbeat ==== 
-''​heartbeat''​ gère la haute disponibilité de services qui peuvent être fournis par plusieurs serveurs(2 au minimum). Pour ce faire, chacun des serveurs est surveillé via un //battement de cœur// (heartbeat) diffusé sur le réseau. Au départ les services sont démarrés sur l'un des serveurs, et si celui-ci n'​émet plus de battement de cœur((c'​est qu'il est mort !)), un autre serveur prend la relève. 
- 
-Le cas qui est certainement le plus répandu est la mise en place de ''​heartbeat''​ sur deux serveurs, ce qui est le cas dans ce tutoriel. 
- 
-==== drbd ==== 
-''​drbd''​ permet de synchroniser //en temps réel//​((allez voir les détails sur le [[http://​www.drbd.org/​users-guide-emb/​users-guide.html|site]])) des données entre deux ordinateurs. 
- 
-''​drbd''​ est constitué d'un module du noyau et d'​outils de gestion. 
- 
-===== Postulat de départ ===== 
-  * Les deux serveurs : 
-    * ''​serv1''​ avec adresse IP 192.168.214.10 : serveur primaire 
-    * ''​serv2''​ avec adresse IP 192.168.214.11 : serveur secondaire 
-  * 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 (avec ''​ssmtp''​ par exemple) )) est ''​admin@domain.fr''​((à personnaliser)). 
- 
-Pour que la reprise de service soit //​transparente//​ pour les clients, nous utiliserons une fonctionnalité de ''​heartbeat'',​ celle de la gestion d'une adresse flottante. Cette adresse est définie à 192.168.214.20.\\ 
-De plus ''​samba''​ sera configuré pour //passer// par cette adresse flottante et pour donner un nom NetBios indépendant du nom du serveur sur lequel il est exécuté. 
- 
-===== Installation ===== 
-L'​ordre d'​installation à respecter concerne surtout ''​drbd''​ qui doit être installé après ''​heartbeat''​. 
- 
-==== samba ==== 
-[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] ''​samba''​. 
- 
-Dans l'​optique d'une gestion de ''​samba''​ avec ''​heartbeat'',​ il faut laisser le soin à ''​heartbeat''​ de démarrer ''​samba'',​ il faut donc faire en sorte que ''​samba''​ ne soit pas lancé au démarrage : 
-<​code>​update-rc.d -f samba remove</​code>​ 
- 
-==== heartbeat ==== 
-[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] heartbeat. 
- 
-==== drbd ==== 
-<​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 ''​drbd8-utils''​ 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''​ lancé par ''​heartbeat''​ ne fonctionne pas. Il faut donc lancer la commande : 
-<​code>​update-rc.d drbd defaults 70</​code>​ 
-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 : 
-<​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 et mise en place de drbd ===== 
-[[:​tutoriel:​comment_editer_un_fichier|Éditer le fichier]] **/​etc/​drbd.conf** : 
-<​file>​global { 
-  usage-count no; 
-} 
- 
-common { 
-  protocol C; 
-  ​ 
-  syncer { 
-    rate 3M; 
-    verify-alg sha1; 
-  } 
-  ​ 
-  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>​ 
-<​note>​Ce fichier de configuration doit être scrupuleusement identique sur les deux serveurs.</​note>​ 
-FIXME : Rajouter la note concernant la gestion des débits. 
- 
-==== À 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 (ce qui peut engendrer [[#​fichiers_a_personnaliser_apres_un_clonage|d'​autres problèmes]]),​ 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 
-<​code>​shred -zvf -n 1 /​dev/​sda6</​code>​ 
-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</​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:​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</​file>​ 
-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 comm 
- //​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> ​   rate 3M;</​file>​ 
-par 
-<​file> ​   rate 100M;</​file>​ 
-Pour prendre la modification en compte : 
-<​code>​drbdadm adjust r0</​code>​ 
-Le débit ira donc aussi vite qu'il peut. Lire le chapitre concernant les débits à la fin de ce document. 
- 
-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>​ 
- 
-===== Fichiers importants ===== 
-Il est vivement conseillé de créer des partages NFS entre les deux serveurs afin de synchroniser les fichiers de configuration via un script. 
- 
-==== Fichiers à synchroniser entre les deux serveurs ==== 
-Système : 
-  * /​etc/​resolv.conf 
-  * /etc/group 
-  * /etc/passwd 
-  * /etc/shadow 
-  * /​etc/​gshadow 
- 
-Pour ''​drbd''​ : 
-  * /​etc/​drbd.conf 
- 
-Pour ''​samba''​ : 
-  * /​etc/​samba/​smb.conf 
-  * /​var/​lib/​samba/​account_policy.tdb 
-  * /​var/​lib/​samba/​group_mapping.ldb 
-  * /​var/​lib/​samba/​ntdrivers.tdb 
-  * /​var/​lib/​samba/​ntforms.tdb 
-  * /​var/​lib/​samba/​passdb.tdb 
-  * /​var/​lib/​samba/​secrets.tdb 
- 
-Pour ''​heartbeat''​ : 
-  * /​etc/​ha.d/​ha.cf 
-  * /​etc/​ha.d/​authkeys 
-  * /​etc/​ha.d/​haresources 
- 
-=== Et éventuellement aussi... === 
-Si vous utilisez les mêmes outils que moi pour la gestion des serveurs... 
- 
-Pour ''​mail''​ (ssmtp) : 
-  * /​etc/​ssmtp/​revaliases 
-  * /​etc/​ssmtp/​ssmtp.conf 
- 
-Pour ''​smcroute''​ : 
-  * /​etc/​smcroute/​startup.sh 
- 
-Pour ''​NFS''​ : 
-  * /​etc/​exports 
-  * /​etc/​hosts.deny 
-  * /​etc/​hosts.allow 
- 
-==== Fichiers à personnaliser sur les deux serveurs ==== 
-Système : 
-  * /​etc/​hostname 
-  * /etc/hosts 
-  * /​etc/​netwok/​interfaces 
-  * /etc/fstab 
- 
-==== Fichiers à personnaliser après un clonage ==== 
-Si vous avez opté pour le clonage d'un serveur vers l'​autre (attention à ''​drbd''​),​ vous devrez personnaliser ces fichiers sur chaque serveur : 
-  * /​var/​lib/​heartbeat/​hb_uuid (supprimer ce fichier sur l'un des 2 serveurs après clonage, il sera généré au prochain démarrage de heartbeat) 
-  * /​etc/​udev/​rules.d/​70-persistent-net.rules (pour faire en sorte que l'​interface Ethernet eth0 soit utilisable) 
- 
----- 
  
  • utilisateurs/mrwaloo/introduction.1233352362.txt.gz
  • Dernière modification: Le 18/04/2011, 14:42
  • (modification externe)