View
4
Download
0
Category
Preview:
Citation preview
HAPROXY
1- CREATION DES DEUX SERVEUR WEB
Tout d’abord je me connecte à VM Ware afin d’utiliser la machine virtuelle Linux qui faisant office de
serveur web et ayant pour adresse IP : 192.168.3.10
Sur cette machine virtuelle je mets dans le dossier « www » le dossier contenant les codes de mon
site (index.html). Et je vérifie que mon site est accessible en recherchant dans le moteur de
recherche d’un poste client, l’URL : https://192.168.3.10 /index.html
Puis je créé une machine Linux qui fera office de clone du premier serveur web, je lui donne
l’adresse IP suivante : 192.168.3.11 (ne pas oublié de réinitialisé l’adresse mac)
Et je vérifie que mon site est accessible en recherchant dans le moteur de recherche d’un poste
client, l’URL : https://192.168.3.11/index.html
Nous avons donc deux serveurs Web identiques qui chacun donne accès à un à un même site mais
ils ont une adresse IP différentes.
2 -INSTALLATION ET CONFIGURATION DE LA MACHINE DEBIAN (PROXY)
!!!On Installe l’OS Linux avec pour identifiant root : root
Je mets une adresse statique car celle-ci doit rester la même, en effet cette adresse sera inscrite dans
un fichier de configuration du serveur HaProxy et donc cette adresse ne doit en aucun cas être
changé.
nano /etc/network/interfaces
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.3.90
netmask 255.255.255.0
gateway 192.168.3.1
Apres cette modification Il faut REBOOTER !
-Je modifie le fichier resolv.conf afin de définir l’adresse du lycée
nano /etc/network/resolv.conf
- Je modifie ce fichier pour que ma machine puisse récupérer les paquets.
nano /etc/apt/sources.list
-Puis il faut mettre à jour : aptitude update et aptitude upgrade
3 - INSTALLATION ET CONFIGURATION DE HAPROXY
- J’installe les paquets de Haproxy.
-Le démon haproxy est configuré pour se lancer au démarrage de la machine. Son script de
lancement se trouve dans /etc/init.d. Mais par défaut, HaProxy n'est pas activé. Pour le faire, il faut
mettre la valeur « 1 » à la variable ENABLED dans le fichier /etc/default/haproxy. Comme ci dessous
-le démon ne démarre toujours pas car le fichier de configuration par défaut ne contient pas toutes
les directives nécessaires
-Dans le fichier haproxy.cfg (/etc/haproxy/haproxy.cfg)
Je modifie le fichier:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/
crt-base /etc/ssl/
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL).
ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-
SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http-in
bind *:80
reqadd X-Forwarded-Proto:\ http
default_backend application-backend
frontend https-in
bind *:443 ssl crt /etc/ssl/ca.pem
reqadd X-Forwarded-Proto:\ https
default_backend application-backend
backend application-backend
redirect scheme https if !{ ssl_fc }
balance leastconn
option httpclose
option forwardfor
cookie JSESSIONID prefix
server www 192.168.3.10:80 check
server www2 192.168.3.11:80 check
Les deux dernières lignes recensent les adresses ip des 2 serveurs WEB sur lequel le proxy va
rediriger.
Les modifications servent aussi à mettre en place un certificat ssl sur les serveurs web.
Jusqu’à présent, pour utiliser du chiffrement TLS avec HAProxy, il fallait soit utiliser le mode TCP, soit utiliser une version modifiée de STunnel. Désormais, HAProxy prend en charge le chiffrement SSL côté client comme côté serveur.
Il faut penser à récupérer les certificats de la MFC sur les autres serveurs et d’installer OpenSSL.
ON TESTE LE PROXY : Dans la barre d’adresse du navigateur d’une machine cliente du réseau, on
tape l’adresse IP du serveur ou nous avons configuré le proxy.
On rafraichit la page et on est redirigé sur le deuxième serveur web.
ON OBSERVE QUE LE PROXY A BIEN REDIRIGE VERS LE SERVEUR WEB1 PUIS APRES AVOIR RAFRAICHIS
LA PAGE SUR LE SERVEUR WEB2. LE SERVICE HA PROXY FONCTIONNE CORRECTEMENT. IL Y A BIEN
UNE REPARTITION DES CHARGES !
4- MISE EN PLACE DE STATISTIQUES SUR HAPROXY
- Dans le fichier haproxy.cfg (/etc/haproxy/haproxy.cfg) je voudrais mettre en place des statistiques.
J’ajoute donc ces 3 lignes :
INFO : stats uri permet d’activer la page de statistiques, en définissant l’endroit où les statistiques
pourront êtres consultées (ici http://192.168.3.90/stats)
stats auth sécurise l’accès en le protégeant par un nom d’utilisateur et un mot de passe séparés par
« : » ici par exemple le login est admin et le mot de passe est admin.
stats refresh rafraîchit la page toutes les 30s
ON TESTE LA MISE EN PLACE DES STATISTIQUES SUR LE PROXY :
Dans la barre d’adresse du navigateur d’une machine cliente du réseau, on tape
http://192.168.3.90/stats
LE RESULTAT : Le proxy nous demande une authentification (admin : admin) et on arrive sur cette
page :
http://192.168.3.90/stats
5- HEARTBEAT
Heartbeat est un logiciel de surveillance de la disponibilité des programmes, Heartbeat écoute
les battements de cœur - des signaux émis par les services d'une grappe de serveurs lorsqu'ils sont
opérationnels. il va permettre d'envoyer un signal régulié par la connexion LAN (et/ou serie) entre les
deux serveurs pour vérifier leur état de fonctionnement dans le but de relayer les ressources du
serveur maitre au serveur esclave dans le cas où celui tomberait en panne et ainsi permettre de ne
pas interrompre les services liés au cluster. Au final nous aurons deux Serveurs faisant chacun office
de PROXY, Heartbeat va repartir les charges entre les deux proxy, si l’un tombe en panne l’autre
prend le relais. Ces deux ha proxy auront une adresse IP Virtuelle commune
Pour commencer on créer une machine similaire à notre premier serveur haproxy afin d’avoir deux
serveurs ayant chacun un haproxy. (Il faut changer l’adresse mac de la carte réseau si c’est un clone.)
On met une adresse IP en éditant le ficher interfaces avec la commande :
nano /etc/network/interfaces
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.3.91
netmask 255.255.255.0
gateway 192.168.3.1
http://fr.wikipedia.org/wiki/Logicielhttp://fr.wikipedia.org/wiki/Haute_disponibilit%C3%A9http://fr.wikipedia.org/wiki/Grappe_de_serveurs
On change le nom de la machine pour éviter de confondre nos deux machines, notre serveur proxy
d’origine se nomme « Proxy » et notre clone se nomme « Proxy2 » donc édite le fichier hostname :
nano /etc/hostname
haproxy2
Dans le fichier haproxy.cfg (/etc/haproxy/haproxy.cfg) (On met la même configuration que pour le
premier serveur Haproxy)
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/
crt-base /etc/ssl/
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL).
ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-
SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http-in
bind *:80
reqadd X-Forwarded-Proto:\ http
default_backend application-backend
frontend https-in
bind *:443 ssl crt /etc/ssl/ca.pem
reqadd X-Forwarded-Proto:\ https
default_backend application-backend
backend application-backend
redirect scheme https if !{ ssl_fc }
balance leastconn
option httpclose
option forwardfor
cookie JSESSIONID prefix
server www 192.168.3.10:80 check
server www2 192.168.3.11:80 check
!!! NE PAS OUBLIER DE REBOOT les services HAPROXY !!!
On installe les paquets Heartbeat sur les deux serveurs proxy.
apt-get install heartbeat
On va créer trois fichiers dans le dossier ha.d sur les deux serveurs
proxy.
– ha.cf : Pour la configuration générale de HeartBeat nano /etc/ha.d/ha.cf
# Indication du fichier de log
logfile /var/log/heartbeat.log
# Les logs heartbeat seront gérés par syslog, dans la catégorie daemon
logfacility daemon
# On liste tous les membres de notre cluster heartbeat (par les noms de préférences)
node haproxy
node haproxy2
# On défini la périodicité de controle des noeuds entre eux (en seconde)
keepalive 2
# Au bout de combien de seconde un noeud sera considéré comme "mort"
deadtime 5
# Quelle carte résau utiliser pour les broadcasts Heartbeat (eth1 dans mon cas)
bcast eth0
# Adresse du routeur pour vérifier la connexion au net
ping 192.168.3.1
# Rebascule-t-on automatiquement sur le primaire si celui-ci redevient vivant ? oui*
auto_failback yes
– haresources : Pour la configuration des ressources nano/etc/ha.d/haresources
proxy IPaddr::192.168.3.92/24/eth0 MailTo::jlacourly@mfc.lan::Failover_alert
– authkeys : Pour la clef partagée entre les serveurs du cluster nano /etc/ha.d/authkeys
auth 1
1 md5 jeanmichel
Ce fichier la doit avoir les permissions « 600 ». Donc sur les deux serveurs tapez:
chmod 600 /etc/ha.d/authkeys
Sur Proxy1 démarrez Heartbeat avec la commande suivante: /etc/init.d/heartbeat start
Maintenant sur Proxy2 démarrez aussi heartbeat avec la commande: /etc/init.d/heartbeat start
http://denisrosenkranz.com/tuto-ha-un-cluster-drbdapache-avec-heartbeat-
sur-debian-7/
http://denisrosenkranz.com/tuto-ha-un-cluster-drbdapache-avec-heartbeat-sur-debian-7/http://denisrosenkranz.com/tuto-ha-un-cluster-drbdapache-avec-heartbeat-sur-debian-7/
6 - REMONTEES D’ALERTES
On installe ThunderBird, un client de messagerie que nous utiliserons ici avec le compte
jlacourly@mfc.lan (adresse mail que l’on a recensé dans le fichier haressources)
Pour se connecter sur Thunderbird : login : jlacourly@mfc.lan mdp :jeanmichel
Exim4
Nous allons installer Exim pour donner la possibilité au serveur d’envoyer ses emails. Non pas
directement, mais via le serveur SMTP « officiel » interne.
La méthode du relai SMTP (ou relai « smarthost » pour Exim4) est préférée car c’est un serveur
connu qui va réellement envoyer le courrier et non pas un serveur privé.
Ce qui donnera : Serveur –> Serveur de messagerie –> destinataire
mailto:jlacourly@mfc.lanmailto:jlacourly@mfc.lan
Une fois la configuration d’Exim4 faites on teste notre remonté d’alerte. Pour cela on simule un arrêt
de la Haute Disponibilité d’Heartbeat
On observe qu’un mail d’alerte nous a bien été envoyé sur notre messagerie. Notre
remontée d’alertes fonctionne !
Internet
LAN 1 | 192.168.1.0/24
Johannes PC
(LABO113-3-3)
.63
VLAN 100
VMWare ESXi
.10
DMZ | 192.168.3.0/24 VLAN 300
ZyWALL
USG 100
LAN1
192.168.1.1
DMZ
192.168.3.1
WAN
Firewall/VPN
172.16.51.254
GLPI/OCS/Nagios
gestion
.9
haproxy1
.90
HTTPS
www
.10
AD(PDC)/DNS/RADIUS
mfc
.41IMAP/SMTP
.42
SGBD
sgbd
.40
HTTPS2
www2
.11
Réseau
BTS
172.16.32.0/19
haproxy2
.91
IP cluster heartbeat :
.92
Recommended