Afin d’obtenir un objectif de haute disponibilité pour un serveur web, nous allons mettre en place un fail-over via un cluster heartbeat pour le service apache.
Ce cluster sera constitué de deux machines virtuelles Linux Debian 7 avec Apache et Heartbeat. Le cluster répondra à l’IP virtuelle 192.168.0.49 et c’est avec cette adresse que l’on pourra on observer la bascule lors de l’indisponibilité de l’un de nos serveurs.
1 - Installation et paramétrage de VM Linux Debian 7
Nous allons mettre en place 2 VM Linux Debian 7 :
- front-srv-01 :
IP : 192.168.0.50
hostname : front-srv-01
- front-srv-02 :
IP : 192.168.0.51
hostname : front-srv-02
Chacune des VM aura le nom de l’autre machine dans son fichier /etc/hosts de façon à pouvoir résoudre le nom l’autre machine sans passer par un serveur DNS.
- Sur front-srv-01 :
nano /etc/hosts
127.0.0.1 front-srv-01 192.168.0.51 front-srv-02
- Sur front-srv-02 :
nano /etc/hosts
127.0.0.1 front-srv-02
192.168.0.50 front-srv-01
2 - Installation d’Apache et Heartbeat
Nous allons installer les paquets suivants sur chacune des VM :
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils heartbeat
3 - Paramétrage d’Apache
Nous allons configurer Apache sur chacune de nos VM de façon à avoir le même fichier VHOST sur nos deux machines. A ce fichier VHOST correspondra à une IP virtuelle déclarée dans Heartbeat comme IP de notre cluster virtuel. On choisira l’ip 192.168.0.49 et on y associera le nom d’hôte : front-srv-cluster :
Création du vhost sur front-srv-01 :
nano /etc/apache2/sites-available/webapp
<VirtualHost *:80>
ServerName front-srv-cluster
ServerAdmin webmaster@localhost
DocumentRoot /var/www/webapp
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/webapp/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Puis on active le VHOST et on relance apache :
a2ensite webapp
service apache2 restart
Création du VHOST sur front-srv-02 :
nano /etc/apache2/sites-available/webapp
<VirtualHost *:80>
ServerName front-srv-cluster
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride all
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Puis on active le VHOST et on relance apache :
a2ensite webapp
service apache2 restart
On va ensuite modifier les pages d’accueil dos nos deux serveurs apache de façon à pouvoir voir la bascule lors de notre test de fonctionnement :
Sur front-srv-01 :
nano /var/www/index.html
<p>front-srv-01</p>
Sur front-srv-02 :
nano /var/www/index.html
<p>front-srv-02</p>
4 - Paramétrage d’Heartbeat
Sur la VM maitre front-srv-01 end nous allons créer les fichiers de configuration d’heartbeat :
Création du fichier ha.cf :
nano /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth0
udpport 694
auto_failback on
node front-srv-01
node front-srv-02
Création du fichier haresources :
nano /etc/ha.d/haresources
front-srv-01 IPaddr::192.168.0.49/24/eth0:0 apache2
Création du fichier authkeys :
nano /etc/ha.d/authkeys
auth 2
2 sha1 test-ha
Paramétrage des droits sur le fichier authkeys :
chmod 600 /etc/ha.d/authkeys
Copie des fichiers de configurations heartbeat sur la machine front-srv-02 :
scp /etc/ha.d/authkeys root@192.168.0.51:/etc/ha.d/authkeys
scp /etc/ha.d/ha.cf root@192.168.0.51:/etc/ha.d/ha.cf
scp /etc/ha.d/haresources root@192.168.0.51:/etc/ha.d/haresources
4 - Démarrage des serveurs et test
Nous allons démarrer les serveurs sur chacune des machines :
service heartbeat start
On va pouvoir tester notre cluster en appelant le site via l’IP virtuelle 192.168.0.49 dans notre navigateur.
On va arrêter le serveur front-srv-01 et constater la bascule en rechargeant la page dans le navigateur par l’affichage du index.html qui diffère sur chacune d’entre elles.