Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / Autres / Installer Heartbeat sur Debian

Installer Heartbeat sur Debian

Par Pierre-Yves Landuré Dernière modification 02/03/2018 20:35

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