Debian lenny 2.6.26-2 sous virtualbox.
Contexte:
[]Réplication MySQL
[]Load Balancing apache
[]FailOver
[]Liaison chiffré
Outils:
[]MySQL
[]Apache
[]OpenVPN
[]HeartBeat
[*]Mon
debian => Master
debian2 => Slave
Lancement des services apache et mysql(le VPN tourne déjà):
debian:~# /etc/init.d/apache2 start
debian:~# /etc/init.d/mysql start
debian2:~# /etc/init.d/apache2 start
debian2:~# /etc/init.d/mysql start
lancement de heartbeat sur le master puis le slave:
debian:~# /etc/init.d/heartbeat start
debian2:~# /etc/init.d/heartbeat start
Lors de la coupure de heartbeat sur le master (arrêt de la machine ou du service heartbeat), l’ip virtuel est bien attribuer au slave. En bref MySQL, Apache, OpenVPN, HeartBeat fonctionne.
Pour que le failover s’exécute lorsque c’est seulement le service mysql et apache j’ai donc mis en place MON. Seulement celui-ci ne fonctionne pas comme prévus.
Lors de l’arrêt d’un service (MySQL et Apache) MON exécute un script, dans mon cas il doit arrêter le service Hearbeat afin de faire basculer l’IP virtuel sur l’esclave.
Jusque la tout va bien. Je coupe donc le service apache sur le maitre.
[code]debian:~# monshow
server: localhost
time: Mon Jan 25 22:24:05 2010
state: scheduler running
GROUP SERVICE STATUS LAST NEXT ALERTS SUMMARY
R server http FAIL 1s 8s 1 127.0.0.1
R server mysql - 4s 5s none[/code]
Lors du fail mon doit exécuter /etc/mon/alert.d/heartbeat.alert qui contient:
#!/bin/bash
/etc/init.d/heartbeat stop
Dans le syslog je retrouve ceci:
Jan 25 22:23:34 debian mon[19074]: failure for server http 1264454614 127.0.0.1
Jan 25 22:23:34 debian mon[19074]: calling alert heartbeat.alert for server/http (/etc/mon/alert.d/heartbeat.alert,) 127.0.0.1
Jan 25 22:23:34 debian incrond[24466]: (root) CMD (echo IN_ACCESS)
Jan 25 22:23:34 debian incrond[24466]: (root) CMD (echo IN_CLOSE_NOWRITE)
Jan 25 22:23:34 debian incrond[24466]: (root) CMD (echo IN_OPEN)
Jan 25 22:23:34 debian incrond[24466]: (root) CMD (echo IN_ACCESS)
Jan 25 22:23:34 debian incrond[24466]: (root) CMD (echo IN_ACCESS)
Jan 25 22:23:34 debian logd: [22114]: ERROR: Could not read from /proc/18436/exe: Permission denied
Jan 25 22:23:34 debian incrond[24466]: (root) CMD (echo IN_ACCESS)
Jan 25 22:23:34 debian incrond[24466]: (root) CMD (echo IN_CLOSE_NOWRITE)
J’ai ajouter incrond pour voir si le fichier /etc/mon/alert.d/heartbeat.alert était bien exécuter, on peux voir que oui.
Le fichier /proc/18436/exe est un lien symbolique vers /usr/lib/heartbeat/ha_logd
debian:~# ls -l /usr/lib/heartbeat/ha_logd
-rwxr-xr-x 1 root root 33788 avr 30 2009 /usr/lib/heartbeat/ha_logd
Le service MON tourne avec l’utilisateur mon
Le fichier de conf de mon, mon.cf:
[code]alertdir = /etc/mon/alert.d/
mondir = /etc/mon/mon.d/
statedir = /etc/mon/state.d/
logdir = /var/log/mon/
maxprocs = 20
histlength = 100
randstart = 10s
hostgroup server 127.0.0.1
watch server
service http
interval 10s
monitor http.monitor
period wd {Sun-Sat}
numalerts 1
alert heartbeat.alert
service mysql
interval 10s
monitor msql-mysql.monitor --mode mysql --username=root --password=XXXX --database=shutdown76
period wd {Sun-Sat}
numalerts 1
alert heartbeat.alert[/code]
/etc/heartbeat/ha.cf
logfile /var/log/ha-log
keepalive 2
deadtime 5
initdead 20
bcast eth0
node debian
node debian2
auto_failback off
ping 10.1.1.1
respawn hacluster /usr/lib/heartbeat/ipfail
/etc/heartbeat/haresources
Je ne sais plus trop ou chercher donc si quelqu’una une moindre piste, je prend ou si vous remarqué une éventuel coquille de conf.
Si besoin de plus d’info n’hésiter pas a demander.
Merci d’avance.