close

Se connecter

Se connecter avec OpenID

Cliquez pour télécharger

IntégréTéléchargement
HAPROXY
Documentationtechnique
2015-2016
QUENTINDUPONT
BTSSIOSISR
Tabledesmatières
1. Introduction : ...................................................................................................... 3
2. Topologie : .......................................................................................................... 3
3. Configuration :.................................................................................................... 5
4. IP Forwarding : ................................................................................................... 7
5. Validation : ........................................................................................................ 10
6. Configuration des serveurs web : .................................................................. 11
7. Configuration de la haute disponibilité entre HAProxy grâce à HeartBeat 12
QUENTIN DUPONT – BTS SIO SISR
2
Compétences mises en œuvre :
https://public.etherpad-mozilla.org/p/PP812t4POT
1. Introduction:
HAProxy est une solution libre, fiable, et très performante de répartition de charges
de niveau 4 (transport / TCP) et 7 (application / http).
Elle est particulièrement adaptée aux sites web fortement sollicités qui nécessite de
la disponibilité.
2. Topologie:
Trois serveurs :
Un serveur de répartition de charge avec HAProxy, équipée de deux interfaces
réseaux, carte 1 avec un accès par pont et carte 2 en réseau interne 172.20.0.20/24
Deux serveurs Web avec Apache5 et PHP5 équipé d'une interface réseau en
réseau interne dont la configuration IP est : 172.20.0.21/24 et 172.20.0.22/24
QUENTIN DUPONT – BTS SIO SISR
3
Configuration réseau du ServerWeb1
Configuration réseau du ServerWeb2 :
QUENTIN DUPONT – BTS SIO SISR
4
La paquet HAProxy, n'est pas présent par défaut dans les dépôts principaux de
Debian, il faut utiliser les backports, pour cela il faut ajouter la ligne suivante dans le
fichier /etc/apt/sources.list :
deb http://ftp.debian.org/debian
jessie-backports main
apt-get update
apt-get upgrade
apt-get install haproxy
3. Configuration:
La configuration de HAProxy
/etc/haproxy/haproxy.cfg
se
fait
dans
le
fichier
de
configuration
Éditer ce dernier pour ajouter les lignes suivantes :
#Configuration
listen cluster_web <IPeth0>:80
#mode Web
mode http
# Mode de balancement Roundrobin
balance roundrobin
QUENTIN DUPONT – BTS SIO SISR
5
# Cette méthode est une répartition équitable de la charge entre les serveurs. Chaque
serveur traite le même nombre de requêtes mais cela nécessite d’avoir des serveurs
homogènes en terme de capacité de traitement de requêtes.
La méthode « least connection » : le serveur HAProxy renvoie vers le serveur le moins
chargé.
La méthode « source » signifie qu’un client en fonction de son adresse IP sera toujours
dirigé vers le même serveur.
La méthode « first response » : les requêtes clients sont envoyées simultanément à
tous les serveurs et le premier qui répond sera chargé de la connexion (du client).
#option
option httpclose
option forwardfor
#Les serveurs Web
server srvWeb1 172.20.0.21:80 check
server srvWeb2 172.20.0.22:80 check
#Stats
stats enable
stats hide-version
stats refresh 30s
stats show-node
stats auth admin:password
stats uri /stats
QUENTIN DUPONT – BTS SIO SISR
6
Enregistrer le fichier.
Redémarrer HAProxy : service haproxy restart
RDV navigateur Web de la machine physique : <IPeth0></stats, le login
admin|password
Vous devez accéder à l'interface d'administration de HAProxy.
4. IPForwarding:
Activation de l'IP Forwarding sur HAProxy1 pour que les serveurs Web aient accès à
internet + quelques règles iptables pour mettre en place du NAT afin de pouvoir
accédrer aux serveur Web via ssh.
Créer un fichier firewall dans le dossiers /etc/init.d :
touch /etc/init.d/firewall
nano /etc/init.d/firewall
#!/bin/bash
start(){
echo -n "- Application des règle Iptables : "
# supprimer les anciennes règles
iptables -F
iptables -X
iptables -t nat -F
QUENTIN DUPONT – BTS SIO SISR
7
# Activer le routage et la translation d'adresse
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#NAT pour SSH sur les serveur sWeb
iptables -t nat -A PREROUTING -p tcp -d <IPeth0> --dport 2221 -j DNAT --todestination 172.20.0.21:22
iptables -t nat -A PREROUTING -p tcp -d <IPeth0> --dport 2222 -j DNAT --todestination 172.20.0.22:22
echo "[Terminé]"
echo
}
stop(){
echo -n "- Flush des règle Iptables : "
# supprimer les anciennes règles
iptables -F
iptables -X
iptables -t nat -F
echo "[Terminé]"
echo
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
/sbin/iptables -L
/sbin/iptables -t nat -L
;;
*)
echo "Usage : firewall {start|stop|restart|status}"
esac
exit
QUENTIN DUPONT – BTS SIO SISR
8
Enregistrer le script, attribuer les droits d'exécution :
chmod +x /etc/init.d/firewall
Enregistrer le script, on redémarre le script.
QUENTIN DUPONT – BTS SIO SISR
9
5. Validation:
Depuis la machine HAProxy, connecter vous en ssh au serveur Web1 :
(Installer openssh-server et openssh-client sur les 3 machines)
(ajouter dans le fichier de configuration réseau des serveurs web la ligne :
gateway 172.20.0.20)
(Compléter les fichiers hosts)
Pour réactiver la connexion distante SSH pour le compte root, c'est en fait très
simple. Éditez le fichier /etc/ssh/sshd_config et remplacez
PermitRootLogin without-password
par
PermitRootLogin yes
Ensuite, il ne reste plus qu'à redémarrer ssh :
# service ssh restart
ssh root@172.20.0.21
Depuis la machine HAProxy, connecter vous en ssh au serveur Web2 :
ssh root@172.20.0.22
QUENTIN DUPONT – BTS SIO SISR
10
Ping 8.8.8.8 depuis les srvWeb.
6. Configurationdesserveursweb:
Installer apache2 et php5 sur les deux serveurs Web :
(Mettre à jour les sources)
apt-get install apache2
apt-get install php5
QUENTIN DUPONT – BTS SIO SISR
11
Modifier le contenu des fichier index.html dans les 2 serveurs web
Supprimer leur contenu : echo > /var/www/html/index.html
Éditez les fichiers pour ajouter les lignes suivantes :
srvWeb1 :
<center>
<h1> Bienvenue sur le Serveur Web 1
</center>
srvWeb2 :
<center>
<h1> Bienvenue sur le Serveur Web 2
</center>
service apache2 restart
7. ConfigurationdelahautedisponibilitéentreHAProxygrâceà
HeartBeat
Contexte :
- Deux machines sont HAProxy (HAproxy1, HAProxy2), même configuration.
- Une adresse virtuelle 192.168.1.100/24 sur eth1:0 sera émulée par la machine
active.
- La machine prioritaire (active en temps normal) est HAProxy1.
- HAProxy1 : 1792.168.1.1/24 et HAProxy2: 192.168.1.2/24
Préparation :
- Éditer le fichier /etc/hostname et vérifier que les machines sont bien nommées,
respectivement HAProxy1 et HAproxy2.
- Les fichiers hosts des deux machines doivent contenir :
127.0.0.1 localhost
192.168.1.1 HAProxy1
192.168.1.2 HAProxy2
Il faut en effet que les deux machines puissent se joindre par leurs noms :
• ping HAProxy1
• ping HAProxy2
Attention : Pour installer heartbeat sur les deux machine HAProxy, vous devez ajouter
une 3ième carte réseau configurée en NAT (DHCP).
QUENTIN DUPONT – BTS SIO SISR
12
Vérifier le fichier sources.list
•
•
•
apt-get update
apt-get upgrade
apt-get install heartbeat
Dans le ficheir /etc/haproxy/haproxy.cfg des deux machine haproxy changer l'interface
d'écoute :
• 192.168.1.100
Redémarrer HAProxy : service haproxy restart
La configuration de heartbeat se fait dans 3 fichiers du dossier /etc/ha.d, il faut créer
ces derniers au nicveau des deux serveur HAProxy:
touch /etc/ha.d/ha.cf
touch /etc/ha.d/haresources
touch /etc/ha.d/authkeys
Editons le premier fichier :
nano /etc/ha.d/ha.cf
Ajouter les lignes suivantes :
# Fichier où loguer les évènements relatifs à heartbeat
logfile
/var/log/ha-log
logfacility local0 (permet de logger les évènements ayant succès ou echec)
QUENTIN DUPONT – BTS SIO SISR
13
# Intervale entre les battements de coeur (en seconde)
keepalive 5
# Temps nécessaire avant de considérer qu'un noeud est mort en s
deadtime 30
# Spécifie l'interface réseau utilisée pour envoyer les battements de coeur (UDP)
bcast eth1
# Liste des machines utilisées pour la haute disponibilité, séparées par des espaces
node HAproxy1 HAproxy2
# Comportement si la machine en panne revient sur le réseau
# off : en attente, on : la machine redevient active.
auto_failback on
Enregistrer votre fichier.
Éditer le fichier /etc/ha.d/haresources
Ajouter les lignes suivantes :
HAProxy1 192.168.1.100/24/eth1 haproxy
Enregistrer votre fichier.
Éditer le fichier /etc/ha.d/authkeys
Ajouter les lignes suivantes :
auth 1
1 md5 azerty
Enregistrer votre fichier.
Il faut sécuriser la lecture de ce fichier :
chmod 600 /etc/ha.d/authkeys
- Validation
Il faut stopper le service haproxy au niveau des deux machines.
service haproxy stop
Démarrer le service heartbeat au niveau de la machine HAProxy1 puis HAproxy2.
Vous devez voir apparaitre (ifconfig) une interface virtuelle au niveau de HAProxy1 :
eth1:0 192.168.1.100
RDV Machine client avec l'adresse 192.168.1.100
QUENTIN DUPONT – BTS SIO SISR
14
Auteur
Document
Catégorie
Uncategorized
Affichages
6
Taille du fichier
676 KB
Étiquettes
1/--Pages
signaler