Semaine 8 · Laboratoire

Doubler
tous les étages

Deux Varnish, deux HAproxy, une IP virtuelle, et un maître qu'on éteint sous charge : le laboratoire 3 de l'Application distribuée.

420-5A4-MT · Acte 7 · Ne jamais tomber
La mission du jour

À la fin de la séance, vous aurez :

C'est le laboratoire le plus payant du module (10 points) et le plus dense : deux semaines de gestes en une. Minimum 2 commits pertinents en classe cette semaine.

Étape 1

Le deuxième Varnish

Étape 2

HAproxy balance entre les deux caches

# sur la nouvelle instance haproxy40 (reference : 192.168.56.40)
sudo apt-get -y install haproxy
sudo nano /etc/haproxy/haproxy.cfg
frontend site_http
bind ADRESSE_DE_HAPROXY40:80
default_backend site_http_varnish
backend site_http_varnish
balance roundrobin
server site1 ADRESSE_VARNISH30:80 check inter 10s
server site2 ADRESSE_VARNISH31:80 check inter 10s
haproxy -f /etc/haproxy/haproxy.cfg -c
sudo service haproxy restart
Étape 3

WordPress derrière la passerelle, l'admin à part

Amusez-vous à éteindre varnish31 pendant que vous rafraîchissez le site : check inter fait son travail, le site ne bronche pas. Premier avant-goût de la suite.

Étape 4

La grappe Heartbeat

# haproxy41 : clone de haproxy40; puis sur LES DEUX :
sudo apt-get install heartbeat resource-agents-extra
sudo nano /etc/heartbeat/ha.cf
node haproxy_heartbeat40 / node haproxy_heartbeat41 · keepalive 1 · deadtime 10 · bcast enp0s8 · auto_failback yes
sudo nano /etc/heartbeat/authkeys
auth 1 / 1 sha1 VotreClefSecrete
sudo chmod 600 /etc/heartbeat/authkeys
sudo nano /etc/heartbeat/haresources
haproxy_heartbeat40 192.168.56.49

Pièges connus : les noms des noeuds doivent correspondre à uname -n (fichier hosts à l'appui); et sur Ubuntu récent, l'interface par défaut du script IPaddr doit devenir enp0s8. Le coup de main est donné en classe.

Étape 5

HAproxy adopte l'IP virtuelle

# sur les deux HAproxy : permettre d'ecouter une adresse qu'on ne porte pas encore
sudo nano /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind=1
sudo sysctl -p
# dans haproxy.cfg : bind sur l'IP VIRTUELLE au lieu de l'IP locale
bind 192.168.56.49:80
sudo service heartbeat start
ping 192.168.56.49
Étape 6 · L'épreuve

Éteindre le maître sous charge

Ce test sera reproduit en classe pour l'évaluation. Répétez-le jusqu'à ce qu'il soit ennuyeux : c'est à ce moment-là qu'il est prêt.

Avant de partir

Livrables et devoir

La semaine prochaine, l'acte 8 : le monde réel. En équipe, un cluster de Raspberry Pi, et la panne qu'on provoque en débranchant un fil, pour de vrai.

Version de départ · ce diaporama va s'enrichir