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
tutoriel:mirroring_sur_deux_serveurs [Le 29/04/2009, 23:49]
MrWaloo Ajout d'un "/" manquant
tutoriel:mirroring_sur_deux_serveurs [Le 11/09/2022, 12:24] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-{{tag>​Hardy ​Intrepid ​serveur haute_disponibilité réseau ​mirroring ​samba RAID tutoriel ​drbd heartbeat}}+{{tag>​Hardy serveur haute_disponibilité réseau samba RAID tutoriel}}
  
 ---- ----
Ligne 17: Ligne 17:
 ''​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. ''​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.+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 ​et peut supporter ​jusqu'​à une vingtaine de clients.
  
 ===== Présentation des outils utilisés ===== ===== Présentation des outils utilisés =====
Ligne 69: Ligne 69:
 Il faut ensuite arrêter le service ''​samba''​ : Il faut ensuite arrêter le service ''​samba''​ :
  
-  /​etc/​init.d/​samba stop+  /​etc/​init.d/​smb stop
  
 ==== Heartbeat ==== ==== Heartbeat ====
Ligne 125: Ligne 125:
   handlers {   handlers {
     pri-lost-after-sb "​reboot -f";     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";​+    pri-lost "​echo ​Déconnexion ​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";​     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";     pri-on-incon-degr "​reboot -f";
Ligne 164: Ligne 164:
  
 ==== À faire sur chaque serveur en même temps ==== ==== À faire sur chaque serveur en même temps ====
-<note tip>Si vous vous êtes dit que vous alliez tout installer sur un serveur puis [[: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//​...\\+<note tip>Si vous vous êtes dit que vous alliez tout installer sur un serveur puis [[:​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>​ **Sinon, il faut répéter tout ce qui vient d'​être fait sur le second serveur avant d'​aller plus loin.**</​note>​
  
Ligne 181: Ligne 181:
 Do you want to proceed? Do you want to proceed?
 [need to type '​yes'​ to confirm] </​file>​ [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.+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 sûr de ce que vous faites.
 <​file>​v07 Magic number not found <​file>​v07 Magic number not found
 v07 Magic number not found v07 Magic number not found
Ligne 206: Ligne 206:
 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 ''/''​).\\ 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 : Pour ne connaître que l'​état de la grappe ''​drbd'',​ la commande suivante suffit :
-<​code>​drbdadm ​state r0</​code>​+<​code>​drbdadm ​role all</​code>​
 <​file>​Secondary/​Secondary</​file>​ <​file>​Secondary/​Secondary</​file>​
  
 ==== À ne faire que sur le serveur primaire ==== ==== À ne faire que sur le serveur primaire ====
-Il s'agit maintenant de déclarer un des 2 serveurs ​comm +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.)).\\+ //​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 : Lancer la commande :
 <​code>​drbdadm -- --overwrite-data-of-peer primary r0 <​code>​drbdadm -- --overwrite-data-of-peer primary r0
Ligne 223: Ligne 223:
         finish: 17:15:38 speed: 2,240 (2,240) K/​sec</​file>​         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.\\ 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 : +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 tapant ​sur les deux serveurs : 
-<​file> ​   rate 3M;</​file>​ +<​code>​ 
-par +drbdsetup /dev/drbd0 syncer -r 100M 
-<​file> ​   rate 100M;</​file>​ +</​code>​ 
-Pour prendre la modification en compte, lancer ​sur les deux serveurs : + 
-<​code>​drbdadm adjust r0</​code>​ +Le débit ira donc jusqu'à la vitesse autorisée. Lire le [[#​au_sujet_de_la_gestion_de_la_bande_passante|chapitre]] concernant les débits à la fin de ce document. 
-Le débit ira donc aussi vite qu'il peut. Lire le [[#​au_sujet_de_la_gestion_de_la_bande_passante|chapitre]] concernant les débits à la fin de ce document.+ 
 +et pour revenir à la configuration courante: 
 +<​code>​ 
 +drbdadm adjust r0 
 +</​code>​
  
 Une fois les serveurs synchronisés,​ Une fois les serveurs synchronisés,​
Ligne 237: Ligne 241:
  0: cs:​Connected st:​Primary/​Secondary ds:​UpToDate/​UpToDate C r---  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>​     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) :+il est temps de formater la partition ''​drbd'' ​uniquement sur le serveur primaire ​(vous avez, bien évidemment pensé à revenir à un débit de synchronisation normal.) :
 <​code>​mkfs.ext3 /​dev/​drbd0</​code>​ <​code>​mkfs.ext3 /​dev/​drbd0</​code>​
 et de monter votre partition pour vérifier que tout va bien. Le montage de la partition doit utiliser **/​dev/​drbd0** et ne doit se faire **que sur le serveur primaire**. et de monter votre partition pour vérifier que tout va bien. Le montage de la partition doit utiliser **/​dev/​drbd0** et ne doit se faire **que sur le serveur primaire**.
Ligne 248: Ligne 252:
 ===== samba ===== ===== samba =====
 ==== Gestion des utilisateurs ==== ==== Gestion des utilisateurs ====
-<​note>​Une solution de gestion des utilisateurs est proposée ici, libre à vous de choisir de la suivre.</​note>​+<​note>​Une solution de gestion des utilisateurs est proposée ici : Libre à vous de choisir de la suivre.</​note>​
 Les serveurs redondants ne sont utilisés que pour le partage de fichiers avec ''​samba''​. Sachant cela, il n'est pas forcément nécessaire,​ dans une configuration simple, de faire en sorte que tous les utilisateurs système soient créés dans des groupes d'​utilisateurs différents.\\ Les serveurs redondants ne sont utilisés que pour le partage de fichiers avec ''​samba''​. Sachant cela, il n'est pas forcément nécessaire,​ dans une configuration simple, de faire en sorte que tous les utilisateurs système soient créés dans des groupes d'​utilisateurs différents.\\
 Ce qui est proposé ici est de gérer les droits uniquement via ''​samba''​. C'est une solution applicable la plupart du temps. Ce qui est proposé ici est de gérer les droits uniquement via ''​samba''​. C'est une solution applicable la plupart du temps.
Ligne 301: Ligne 305:
 os level = 65</​file>​ os level = 65</​file>​
 Si samba partage des imprimantes,​ ajouter les lignes suivantes : Si samba partage des imprimantes,​ ajouter les lignes suivantes :
-<​file>##########​ Printing ########## ​+<​file>##########​ Printing ##########
    load printers = yes     load printers = yes 
    ​printing = bsd     ​printing = bsd 
Ligne 308: Ligne 312:
    ​printcap name = cups     ​printcap name = cups 
  
-[printers] ​+[printers]
    ​comment = All Printers ​    ​comment = All Printers ​
    ​browseable = no     ​browseable = no 
Ligne 317: Ligne 321:
    ​create mask = 0700     ​create mask = 0700 
  
-[print$] ​+[print$]
    ​comment = Printer Drivers ​    ​comment = Printer Drivers ​
    path = /​var/​lib/​samba/​printers ​    path = /​var/​lib/​samba/​printers ​
Ligne 323: Ligne 327:
    read only = yes     read only = yes 
    guest ok = no     guest ok = no 
-# Uncomment to allow remote administration of Windows print drivers.  +# Uncomment to allow remote administration of Windows print drivers. 
-# Replace '​ntadmin'​ with the name of the group your admin users are +# Replace '​ntadmin'​ with the name of the group your admin users are
 # members of. # members of.
 ######### !!!!!!!!!! Attention à cette ligne !!!!!!!!!!!!! ######## ######### !!!!!!!!!! Attention à cette ligne !!!!!!!!!!!!! ########
Ligne 362: Ligne 366:
 ==== Configuration ==== ==== Configuration ====
 [[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​ha.d/​ha.cf** : [[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/​etc/​ha.d/​ha.cf** :
-<​file>​mcast eth0 239.0.0.10 694 1 0 +<​file>​mcast eth0 239.0.0.10 694 1 0
  
-warntime 4  +warntime 4 
-deadtime 5  +deadtime 5 
-initdead 15  +initdead 15 
-keepalive 2 +keepalive 2
  
-auto_failback off +auto_failback off
  
 node serv1 serv2</​file>​ node serv1 serv2</​file>​
 <​note>​ <​note>​
-  - On remarque que le [[http://​doc.ubuntu-fr.org/​multicast|multicast]] est utilisé, ceci afin de faire en sorte que ce fichier puisse être identique sur les deux serveurs.+  - On remarque que le [[:​multicast|multicast]] est utilisé, ceci afin de faire en sorte que ce fichier puisse être identique sur les deux serveurs.
   - Les noms ''​serv1''​ et ''​serv2''​ sont définis dans le fichier **/​etc/​hosts**.   - Les noms ''​serv1''​ et ''​serv2''​ sont définis dans le fichier **/​etc/​hosts**.
 </​note>​ </​note>​
Ligne 513: Ligne 517:
   * /​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)   * /​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)   * /​etc/​udev/​rules.d/​70-persistent-net.rules (pour faire en sorte que l'​interface Ethernet eth0 soit utilisable)
 +
 +===== En cas de pépin... =====
 +==== Problèmes lors de la mise en place de drbd ====
 +En cas d'​erreur :
 +<​file>/​dev/​drbd0:​ Failure: (124) Device is attached to a disk (use detach first)
 +Command '​drbdsetup /dev/drbd0 disk /dev/sda6 /dev/sda6 internal --set-defaults --create-device --on-io-error=detach'​ terminated with exit code 10</​file>​
 +faire :
 +<​code>​drbdadm detach r0
 +drbdadm up r0</​code>​
 +
 +En cas d'​erreur :
 +<​file>/​dev/​drbd0:​ Failure: (125) Device has a net-config (use disconnect first)
 +Command '​drbdsetup /dev/drbd0 net 192.168.214.10:​7788 192.168.214.11:​7788 C --set-defaults --create-device'​ terminated with exit code 10</​file>​
 +faire :
 +<​code>​drbdadm disconnect r0
 +drbdadm up r0</​code>​
 +
 +En cas d'​erreur :
 +<​file>/​dev/​drbd0:​ Failure: (114) Lower device is already claimed. This usually means it is mounted.
 +Command '​drbdsetup /dev/drbd0 disk /dev/sad6 /dev/sad6 internal --set-defaults --create-device --on-io-error=detach'​ terminated with exit code 10</​file>​
 +c'est que la partition est encore montée, il faut d'​abord la démonter avec la commande :
 +<​code>​umount /​dev/​sda6</​code>​
 +
 +==== drbd : Standalone ====
 +Il est possible qu'​après une coupure sur le réseau ou à cause d'un firewall bloquant mal configuré les deux serveurs ne se voient plus. Lancer la commande :
 +<​code>​cat /​proc/​drbd</​code>​
 +Si ils apparaissent comme étant en "​Standalone"​ c'est qu'ils ne se voient plus.
 +
 +Sur un des deux nœuds, lancer la commande :
 +<​code>​drbdadm -- --discard-my-data connect all</​code>​
 +et sur l'​autre la commande :
 +<​code>​drbdadm connect all</​code>​
 +Là les deux nœuds se voient à nouveau en secondaire/​secondaire. Sur l'un des 2, lancer la commande :
 +<​code>​drbdadm primary r0</​code>​
 +Et le problème devrait être résolu.
 +
 +==== Configuration du pare-feu (Firewall) ====
 +Voici les ports à ouvrir: 694 (udp) pour heartbeat ​ et 7788 (tcp) pour drbd
 +
  
 ---- ----
  
-//​Contributeur principal : [[:​utilisateurs:​mrwaloo|MrWaloo]].//​+//​Contributeur principal : [[:​utilisateurs:​mrwaloo|MrWaloo]].// ​\\ 
 +Merci à [[http://​forum.ubuntu-fr.org/​profile.php?​id=123930|tempus1984]] pour le dernier chapitre et pour avoir validé ce tutoriel.
  
 ---- ----
  
  • tutoriel/mirroring_sur_deux_serveurs.1241041744.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)