OVH Cloud OVH Cloud

HA sous freebsd: heartbeat, ou... ?

4 réponses
Avatar
Olivier M.
'soir,

Dans les prochaines semaines, je vais travailler sur un systeme web
à base de plusieurs serveurs sous freebsd 5.4 (d'abord 2, puis
très probablement 4 ou 5), et à la fin tout doit pouvoir continuer à
tourner correctement, même si un ou deux serveurs passent offline, bref
de l'high availability classique.

Chaque serveur aura son adresse IP propre, et une 2ieme adresse
IP (alias). Toutes les adresses des alias seront dans le DNS pour "www."
et cela fonctionnera via un round robin.

Mais comment faire au mieux pour que les serveurs détectent eux même
que l'un d'entre eux est "mort" et faire en sorte qu'un autre récupère
son adresse IP ?

Venant de linux j'ai l'intention de commencer avec heartbeat (ça se
trouve dans les ports), mais peut-etre auriez-vous une meilleure
suggestion? J'ai commencé à googler, mais évidement il y a 42 solutions
différentes, difficile de voir par où commencer :)

Merci & salutations,
Olivier
--
_________________________________________________________________
Olivier M. - spam-2005-08@8304.ch - PGP: 0E84D2EA - Switzerland

4 réponses

Avatar
Eric Masson
"Olivier M." writes:

Mais comment faire au mieux pour que les serveurs détectent eux même
que l'un d'entre eux est "mort" et faire en sorte qu'un autre récupère
son adresse IP ?


man 4 carp

Éric Masson

--
Je laisse le poste au complet ... Dite moi un peut ou il a répondu ???
Pourquoi remettre un poste sans commentaire ... avait-il peur qu'on ne
s'en souvienne plus ????
-+- in Guide du Neuneu Usenet - Mais kes tu bois doudou dis donc ? -+-

Avatar
Olivier M.
ecrivait/schrieb/wrote:
Mais comment faire au mieux pour que les serveurs détectent eux même
que l'un d'entre eux est "mort" et faire en sorte qu'un autre récupère
son adresse IP ?


man 4 carp


merci pour le pointeur! plutot interessant d'après
http://software.newsforge.com/software/04/04/13/1842214.shtml?tid2&tid‚&tid‘&tid’
meme si j'aimerais plutot gerer moi meme la partie load balancing, mais je
suppose que ca se laisse faire (sans que ce soit 1 serveur actif, l'autre passif
en hotspare).

Par contre:
p2# sysctl net.inet.carp.allow=1
sysctl: unknown oid 'net.inet.carp.allow'

p2# sysctl net.inet.carp.preempt=1
sysctl: unknown oid 'net.inet.carp.preempt'

p2# ifconfig carp0 create
ifconfig: SIOCIFCREATE: Invalid argument

Apparement ca n'est pas supporté par le kernel de base: recompilation
en cours, en espèrant que ca aide... :)

Olivier
--
_________________________________________________________________
Olivier M. - - PGP: 0E84D2EA - Switzerland


Avatar
Olivier M.
ecrivait/schrieb/wrote:
Apparement ca n'est pas supporté par le kernel de base: recompilation
en cours, en espèrant que ca aide... :)


C'est bon :) Ca effectivement nécessité la présence d'un
"device carp" lors da la compilation du kernel.
Bizarre, c'est documenté absolument nulle part, ou alors je
suis passé à coté.

p2# sysctl net.inet.carp.preempt=1
net.inet.carp.preempt: 0 -> 1

Olivier
--
_________________________________________________________________
Olivier M. - - PGP: 0E84D2EA - Switzerland

Avatar
Jacques Caron
Salut,

On 9 Aug 2005 21:51:26 +0100, Olivier M. wrote:

Chaque serveur aura son adresse IP propre, et une 2ieme adresse
IP (alias). Toutes les adresses des alias seront dans le DNS pour "www."
et cela fonctionnera via un round robin.

Mais comment faire au mieux pour que les serveurs détectent eux même
que l'un d'entre eux est "mort" et faire en sorte qu'un autre récupère
son adresse IP ?


Moi la solution que j'utilise c'est un process perl archi simple qui
envoie le adresses virtuelles en RIPv2 (avec une métrique de 1 pour
l'adresse associée principalement à cette machine, 2 pour l'adresse
virtuelle pour laquelle cette machine fait backup, etc.), et un routed -q
sur les machines qui servent de routeurs. Avec un petit truc qui permet
d'envoyer des poison updates pour forcer une machine down, et hop.

Les machines qui jouent le rôle de routeurs utilisent freevrrpd, elles.

Jacques.