Installer Heartbeat sur Debian
Heartbeat est un logiciel permettant la mise en place d'une architecture haute disponibilité. Ce guide facilite son installation sur Debian.
Ce guide est testé sur:
- Debian 7.0 Wheezy
Paramètres
Renseignez le nom de l'interface réseau utilisée pour communiquer avec les membres de la grappe haute disponibilité:
NET_DEV="eth0"
Renseignez le nom des hôtes membre de la grappe haute disponibilité (un hôte par ligne, l'hôte primaire sur la première ligne):
MEMBERS="host1.domain.com
host2.domain.com"
Renseignez l'adresse IP (IP failover) assignée au cluster:
FAILOVER_IP="xx.xx.xx.xx"
Renseignez la clef d'identification de la grappe (optionnel, doit être partagé entre les membres de la grappe):
# AUTH_KEY="061652d05e21be8febf8af5d53abaf5ecf7fb6f4"
Installation
Générez une clef d'identification pour la grappe, si nécessaire:
if [ -z "${AUTH_KEY}" ]; then
AUTH_KEY="$(command dd if='/dev/urandom' bs=512 count=1 2>'/dev/null' \
| command openssl sha1 \
| command cut --delimiter=' ' --fields=2)"
fi
Préparation de l'environnement
Installez les logiciels nécessaires:
command apt-get install heartbeat
Autorisez l'assignation de plusieurs adresses IP à une même interface réseau:
command echo "# Allow multiple IP addresses by interface for Heartbeat.
net.ipv4.ip_nonlocal_bind=1" \
> '/etc/sysctl.d/heartbeat.conf'
Rechargez la configuration du système:
command sysctl -p '/etc/sysctl.d/heartbeat.conf'
Configuration
Créez le fichier de configuration à partir du modèle:
command gunzip --stdout '/usr/share/doc/heartbeat/ha.cf.gz' > '/etc/ha.d/ha.cf'
Activez les journaux:
command sed -i \
-e 's/^#debugfile/debugfile/' \
-e 's/^#logfile/logfile/' \
-e 's/^#logfacility/logfacility/' \
'/etc/ha.d/ha.cf'
Configurez la détection des crash serveur (avec les valeurs par défaut):
command sed -i \
-e 's/^#keepalive/keepalive/' \
-e 's/^#deadtime/deadtime/' \
-e 's/^#warntime/warntime/' \
-e 's/^#initdead/initdead/' \
'/etc/ha.d/ha.cf'
Configurez le port utilisé pour testé l'activité des serveurs de la grappe:
command sed -i \
-e 's/^#udpport/udpport/' \
'/etc/ha.d/ha.cf'
Générez la configuration des membres de la grappe:
UCAST_CONFIG=""
NODE_CONFIG=""
HOSTS_CONFIG=""
PRIMARY_HOST=""
for HEARTBEAT_HOST in ${MEMBERS}; do
if [ "${HEARTBEAT_HOST}" = "$(command hostname --fqdn)" ]; then
HOST_IP="$(command ifconfig "${NET_DEV}" \
| command grep 'inet ' \
| command sed -e 's/^.*inet [^:]*:\([^ ]*\) .*$/\1/')"
else
HOST_IP="$(command getent ahostsv4 "${HEARTBEAT_HOST}" \
| command cut --delimiter=" " --fields=1 \
| command tail -n 1)"
fi
HEARTBEAT_HOST="$(command echo "${HEARTBEAT_HOST}" \
| command cut --delimiter='.' --fields=1)"
if [ -z "${PRIMARY_HOST}" ]; then
PRIMARY_HOST="${HEARTBEAT_HOST}"
fi
UCAST_CONFIG="${UCAST_CONFIG}\\
ucast ${NET_DEV} ${HOST_IP}"
NODE_CONFIG="${NODE_CONFIG}\\
node ${HEARTBEAT_HOST}"
HOSTS_CONFIG="${HOSTS_CONFIG}
${HOST_IP} ${HEARTBEAT_HOST}"
done
Ajustez le fichier hosts:
echo "${HOSTS_CONFIG}" >> '/etc/hosts'
Configurez les membres de la grappe:
command sed -i \
-e "/^#ucast/a\\
${UCAST_CONFIG}" \
-e "0,/^#node/{//a\\
${NODE_CONFIG}
;}" \
'/etc/ha.d/ha.cf'
Configurez la clef d'identification:
command echo "auth 1
1 sha1 ${AUTH_KEY}" \
> '/etc/ha.d/authkeys'
Sécurisez la clef d'identification:
command chmod 0600 '/etc/ha.d/authkeys'
Configurez l'adresse IP du cluster, ainsi que le serveur primaire:
echo "${PRIMARY_HOST} ${FAILOVER_IP}/24/${NET_DEV} MailTo::root::[$(command hostname --fqdn)]warning:" > '/etc/ha.d/haresources'
Configuration des membres de la grappe
Exécutez la procédure d'installation de ce guide sur les membres de la grappe haute-disponibilité avec les paramètres fournis par:
command echo "NET_DEV='${NET_DEV}'
MEMBERS='${MEMBERS}'
FAILOVER_IP='${FAILOVER_IP}'
AUTH_KEY='${AUTH_KEY}'
"
Remarque: la valeur NET_DEV peut être différente pour certains membres de la grappe.
Finalisation
Démarrez le service sur l'ensemble des membres de la grappe.
command service heartbeat start
Sécurisation
Bloquez l'accès au port udp 694 à part pour les membres de la grappe à l'aide du guide:
Remerciements
- Merci aux développeurs de Heartbeat.
- Merci à Nicolas Olivero (fr) pour Configuration Heartbeat Debian (fr).
- Merci à IT-connect.fr (fr) pour Clustering et haute disponibilité sous Linux avec Heartbeat (fr).
- Merci à falko pour Setting Up A High-Availability Load Balancer (With Failover and Session Support) With HAProxy/Heartbeat On Debian Etch (en).
- Merci à l'Institut d'électronique et d'informatique Gaspard-Monge (fr) pour La haute disponibilité avec Heartbeat (fr).
- Merci à SplitBrain (fr) pour Setting up Hearbeat failover for an IP-Adress on Debian Squeeze (fr).