Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Haute disponibilité] SuSe - Heartbeat - DRBD - Samba

2 réponses
Avatar
alex84
----------------------------------------------------------------------------------------------
Environnement matériel :
2 pc identiques :
P4 3ghz 1go Ram
Carte SCSI Adpatec 2120S sur laquelle sont montés les 3 disques durs. 1 disque pour la partition système et 2 disques identiques pour les partitions de données.

Environnement logiciel :
SuSe Linux 9.2 Noyau : 2.6.x
Heartbeat 1.2.3
Samba 3.x
Drbd 0.7.5
----------------------------------------------------------------------------------------------

Bonjour le forum ,

Après avoir réussi l’installation d’un système à Haute disponibilité (2 serveurs de données dans un cluster pour une réplication de données au travers d’un réseau local) nous avons commencé à avoir des problèmes après 4 mois d’utilisation quotidienne.

Le premier problème qui est apparu est le passage en lecture seule de la partition « système » sur le serveur secondaire (serveur N°2). Sans que personne n’intervienne sur les machines, la partition contentant le système d’exploitation a basculé en lecture seule et le DRBD s’est mis a fonctionné avec un seul serveur dans la solution de clustering. Suite à ceci nous avons redémarré les 2 serveurs simultanément et après une synchronisation des disques de données, tout était reparti à la normale. Seulement 2 semaines plus tard le même problème s’est reproduit. Afin de tenter de comprendre nous avons éteint le serveur n° 2 et laissé tourner le cluster avec 1 seul pc. 10 jours plus tard, alors que le serveur n° 1 était toujours seul dans le cluster, une partition stockant les données s’est elle aussi mise à fonctionner en lecture seule. Un redémarrage rapide du serveur a permis aux utilisateurs d’enregistrer leur travail et à peine quelques heures plus tard le problème est de nouveau apparu. Un nouveau redémarrage (le temps d’arriver sur le site) permet une nouvelle fois la sauvegarde du travail puis nous arrivons devant la machine où tout semble fonctionner normalement.
Fin de journée nous redémarrons les machines en les déconnectant du réseau, nous lançons la commande « e2fsck » sur les 2 pc, nous les laissons fonctionner un moment, rien d’anormal ne se produit devant nos yeux.

Après quelques tests d’écriture, nous voulons remettre les serveurs en route sur le réseau afin de synchroniser les données avant de poursuivre la maintenance. Nous rallumons tout le système, après vérification du statut du DRBD tout semble « ok » mais à notre arrivée le lendemain matin, les données présentes sur le serveur ne sont pas celles de la veille mais celles datant de l’arrêt du serveur n° 2. La synchronisation s ‘est effectuée dans le mauvais sens !

Après vérification des fichiers de logs on s’aperçoit qu’au démarrage des machines le serveur n° 2 a basculé pour une durée de 3 SECONDES (très difficilement visible à l’écran, puisqu’il aurait fallu regarder l’état du DRBD pendant ce temps là) en serveur primaire alors que cela ne s’est jamais produit pendant 4 mois au cours des quels nous avons parfois stoppé les serveurs.

Quelqu’un aurait-il une explication d’une part sur la mise en lecture seule des partitions et d’autre part sur le fait que le serveur secondaire est pu passer en primaire alors que le serveur n° 1 était déjà en ligne et fonctionnait sans problème apparent ?

Merci par avanc

--
alex84

-----------------------------------------------------------------------
Voir theme: http://www.frbox.net/viewtopic-449212.html

Envoyé de http://www.frbox.net

2 réponses

Avatar
mna
Bonjour,

[...]

Je ne sais pas concernant le basculement en mode RO du système de fichier
encore que j'aurais tendance à penser à un problème hard d'écriture
sur le disque mais ça devrait se voir dans la syslog système ou kernel
par contre

Après quelques tests décriture, nous voulons remettre les serveurs
en route sur le réseau afin de synchroniser les données avant de
poursuivre la maintenance. Nous rallumons tout le système, après
vérification du statut du DRBD tout semble « ok » mais à notre
arrivée le lendemain matin, les données présentes sur le serveur ne
sont pas celles de la veille mais celles datant de larrêt du serveur
n° 2. La synchronisation s est effectuée dans le mauvais sens !

Après vérification des fichiers de logs on saperçoit quau
démarrage des machines le serveur n° 2 a basculé pour une durée de 3
SECONDES (très difficilement visible à lécran, puisquil aurait
fallu regarder létat du DRBD pendant ce temps là) en serveur
primaire alors que cela ne sest jamais produit pendant 4 mois au cours
des quels nous avons parfois stoppé les serveurs.

Quelquun aurait-il une explication dune part sur la mise en lecture
seule des partitions et dautre part sur le fait que le serveur
secondaire est pu passer en primaire alors que le serveur n° 1 était
déjà en ligne et fonctionnait sans problème apparent ?



là j'ai déjà rencontré le problème sur un cluster linux.

Le problème pour moi venait des scripts d'initialisation du
système dans lesquels il y une commande équivalente à
"drdbadmin primary all"
qui indique à drbd de se considérer comme
primaire et donc de prendre le contenu du disque de la machine sur
laquelle la commande a été exécutée (serveur 2 chez toi) comme étant
la référence (ou tout au moins le dernier état valide).

le danger apparaît après lorsque les 2 extrémités drbd se
reconnectent, car elles ont basculées toutes les 2 en primary.
et du coup le système ne sais plus quelles sont les données !
(enfin c'est ce moi j'en ai déduis)

pour éviter ce genre de désagrément j'ai désactivé le flag
auto_failback on dans /etc/ha.d/ha.cf

dans cette configuration la bascule du cluster est assurée mais le retour
en mode nominal est à gérer à la main, ce qui permet de s'assurer de
l'état des disques drbd avant rebasculement et surtout de ré initialiser
les disques correctement au besoin.

dans ton cas tu aurais du
allumer ta machine 1
machine1# drbdadmin disconnect all
machine1# hb_takeover
allumer ta machine 2
machine2# demarrer le service drbd (service drbd start ?)
machine2# drbdadm secondary all
machine2# drbdadmin connect all
machine1# drbdadmin connect all
machine# drbdadm invalidate
-> surveiller la reconstruction du disk (wtach -n 10 "cat /proc/drbd")
une fois fini
machine2# lancer le heartbeat


peut être d'autres utilisateurs auront trouvé une meilleur parade, mais
dans mon cas ça marche plutôt bien.
j'ai ajouter un script qui m'alerte lorsque le cluster bascule afin que je
puisse gérer le retour arrière.

je sais pas si j'ai été clair dans ma réponse mais n'hésites pas au
besoin.

en gros vérifies bien les scripts qui sont lancés au reboot de ta
machine et ceux lancés par heatbeat.


Merci par avance
de rien


a+
mna.

Avatar
mna

je fais quelques petites précisions et remise en page:

dans ton cas tu aurais du


allumer ta machine 1
machine1# drbdadmin disconnect all
machine1# hb_takeover
allumer ta machine 2
machine2# demarrer le service drbd (service drbd start ?)
machine2# drbdadm secondary all
machine2# drbdadmin connect all
machine1# drbdadmin connect all
machine2# drbdadm invalidate
îîîîîîî
cette ligne n'est pas indispensable
comme tu as au préalable correctement positionné l'état
des extrémités drbd en primary et secondary la synchro
se fera toute seule en incrémentale

-> dans les 2 cas surveiller la reconstruction du disk
(wtach -n 10 "cat /proc/drbd")
une fois fini

machine2# lancer le heartbeat