Différences entre versions de « Configurer un HA Proxy sur Cloudstack »

De Ikoula Wiki
Jump to navigation Jump to search
(Ajout partie configuration. Création d'un article Creer une instance Cloudstack dédié)
(Ajout partie configuration + IPTables + WebServers)
Ligne 15 : Ligne 15 :
 
;Nous pouvons nous connecter à partir de la console intégrée ou par ssh
 
;Nous pouvons nous connecter à partir de la console intégrée ou par ssh
 
[[File:ConnectVM.png]]
 
[[File:ConnectVM.png]]
 +
===Pré-requis===
 +
L'un des pré-requis essentiel est de conserver son système le plus à jour possible.<br>
 +
<pre> apt-get update
 +
apt-get upgrade </pre>
 +
Afin de conserver votre système Debian à jour, assurez-vous de posséder une liste des dépôts officiels. Vous pourrez trouver une liste des dépôts disponibles chez Ikoula et les instructions d'installation [[Quelles_sont_les_sources_des_d%C3%A9p%C3%B4ts_debian_chez_Ikoula|à cette adresse]].
 +
<div style="background-color: #FF9999;"> '''Avertissement''': Avant toute modification de votre système prévoyez toujours une sauvegarde de vos fichiers en cas de mauvaise manipulation.<br>
 +
Sur un serveur de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l'impact de vos actions.</div>
 +
 +
Pour l'installation de notre instance de ''Loadbalancing'' sous Cloudstack nous aurons besoin du service '''HA Proxy'''.<br>
 +
 +
===Installation d'HA Proxy===
 +
;Pour installer HA Proxy en version 1.5, exécutez la commande suivante dans votre terminal
 +
<pre> apt-get install haproxy </pre>
 +
 +
;Si vous souhaitez la dernière version de HA Proxy, la version 1.6, exécutez les commandes suivantes
 +
<pre>
 +
# Ajout du repo
 +
echo deb http://httpredir.debian.org/debian jessie-backports main | tee /etc/apt/sources.list.d/backports.list
 +
apt-get install debian-keyring
 +
# Recuperation de la cle gpg
 +
gpg --keyring /usr/share/keyrings/debian-keyring.gpg --export bernat@debian.org |  apt-key add -
 +
# Mise a jour des depots
 +
apt-get update
 +
# Installation de haproxy
 +
apt-get install haproxy -t jessie-backports-1.6
 +
</pre>
 +
 +
===Activation d'HA Proxy===
 +
;HA Proxy est maintenant installé, nous devons à présent l'activer en remplaçant la valeur ENABLED=0 par ENABLED=1 dans les deux fichiers /etc/default/haproxy et /etc/init.d/haproxy
 +
<pre># activation de HA Proxy dans /etc/default/haproxy
 +
sed -i "s/ENABLED=0/ENABLED=1/g" /etc/default/haproxy
 +
# activation de HA Proxy dans /etc/init.d/haproxy
 +
sed -i "s/ENABLED=0/ENABLED=1/g" /etc/init.d/haproxy
 +
</pre>
 +
 +
===Configuration d'HA Proxy===
 +
La configuration de HA Proxy est réalisée dans le fichier '''/etc/haproxy/haproxy.cfg''' .
 +
;Voici un exemple de configuration d''''HAProxy'''
 +
<pre>
 +
global
 +
        log /dev/log    local0
 +
        log /dev/log    local1 notice
 +
        chroot /var/lib/haproxy
 +
        user haproxy
 +
        group haproxy
 +
        daemon
 +
 +
defaults
 +
        log    global
 +
        mode    http
 +
        option  httplog
 +
        option  dontlognull
 +
        contimeout 5000
 +
        clitimeout 50000
 +
        srvtimeout 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
 +
 +
listen cluster_web xxx.xxx.xxx.xxx:80
 +
 +
        mode http
 +
 +
        balance roundrobin
 +
 +
 +
        option httpclose
 +
        option forwardfor
 +
 +
 +
        server web1 yyy.yyy.yyy.yyy:80 check
 +
        server web2 zzz.zzz.zzz.zzz:80 check
 +
 +
 +
        stats enable
 +
        stats hide-version
 +
        stats refresh 30s
 +
        stats show-node
 +
        stats auth ikoula:ikoula
 +
        stats uri  /stats
 +
</pre>
 +
L'adresse ip xxx.xxx.xxx.xxx étant l'adresse ip de notre serveur de répartition de charge, les adresses yyy.yyy.yyy.yyy et zzz.zzz.zzz.zzz sont nos serveurs web placés derrière le ''loadbalancer''.
 +
 +
{| border="1" cellpadding="20" cellspacing="0"
 +
|listen cluster_web
 +
|L'adresse et le port sur lesquels le service HA Proxy devra écouter les connexions.
 +
|-
 +
|mode
 +
|Le mode du balancement, dans notre exemple '''http''' pour du web
 +
|-
 +
|balance
 +
|L'algorithme utilisé pour la répartition de charge, dans notre exemple RoundRobin<br>Les valeurs disponibles sont: '''RoundRobin, Source, Least connection, First Response'''
 +
|-
 +
|server
 +
|Déclaration des différents serveurs placés derrière notre ''loadbalancer'', dans notre exemple '''web1''' et '''web2'''.
 +
|-
 +
|stats
 +
|Permet de configurer l'accès la page de statistiques du ''loadbalancer''<br>Dans notre exemple la page sera accessible sur xxx.xxx.xxx.xxx/stats avec '''ikoula'''/'''ikoula''' comme login et mot de passe
 +
|-
 +
|}
 +
 +
===Démarrage d'HA Proxy===
 +
;Nous pouvons à présent démarrer '''HA Proxy'''
 +
<pre> service haproxy start </pre>
 +
ou
 +
<pre> etc/init.d/haproxy start </pre>
 +
 +
:En nous rendant sur notre ip xxx.xxx.xxx.xxx/stats et en utlisant notre login et mot de passe nous arrivons sur la page d'administration de HA Proxy.
 +
[[File:HAProxyStats.png]]
 +
===Ajout de l'IP Forwarding===
 +
Afin de permettre à nos de serveurs web d'accéder à internet et également pour pouvoir nous connecter en ssh dessus, nous devons mettre en place l''''IP Forwarding''' grâce à [[Sécuriser sa machine Debian#IPTables |IPTables]].
 +
 +
;Activer l''''IP Forwarding'''
 +
<pre> echo 1 > /proc/sys/net/ipv4/ip_forward
 +
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE </pre>
 +
 +
;Ainsi que deux règles pour permettre la connexion ssh vers nos serveurs web
 +
<pre>
 +
iptables -t nat -A PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 2221 -j DNAT --to-destination yyy.yyy.yyy.yyy:22
 +
iptables -t nat -A PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 2222 -j DNAT --to-destination zzz.zzz.zzz.zzz:22
 +
</pre>
 +
 +
;Nous pouvons à présent nous connecter à nos serveur en ssh en tapant
 +
<pre># Serveur web1
 +
ssh root@xxx.xxx.xxx.xxx -p 2221
 +
# Serveur web2
 +
ssh root@xxx.xxx.xxx.xxx -p 2222
 +
</pre>
 +
 +
===Configurer les serveurs web===
 +
;Si les serveurs ne possèdent pas encore de service web il faut en installer un, par exemple
 +
<pre> apt-get install apache2 php5 </pre>
 +
 +
;Une fois les services web installés, ou si le serveur en possédait déjà un, web1 et web2 apparaîtront en vert dans la page stats
 +
[[File:HAProxyStat2.png]]

Version du 2 novembre 2015 à 16:50


Warning: Article en cours de rédaction. Des modifications peuvent intervenir à tout moment.

Introduction

Vous souhaitez configurer un HA Proxy sur la plateforme Cloudstack. Cet article vous expliquera la démarche à suivre au travers d'un exemple de configuration.

Mise en place

Voici la procédure à suivre afin de mettre en place un HA Proxy sous Cloudstack.

Créer la nouvelle instance HAProxy

Vous trouverez la procédure de création d'une instance sous Cloudstack sur l'article Creer une nouvelle instance cloudstack

Configurer la nouvelle instance HAProxy

Notre VM est maintenant démarrée

InfoVM.png

Nous pouvons nous connecter à partir de la console intégrée ou par ssh

ConnectVM.png

Pré-requis

L'un des pré-requis essentiel est de conserver son système le plus à jour possible.

 apt-get update
 apt-get upgrade 

Afin de conserver votre système Debian à jour, assurez-vous de posséder une liste des dépôts officiels. Vous pourrez trouver une liste des dépôts disponibles chez Ikoula et les instructions d'installation à cette adresse.

Avertissement: Avant toute modification de votre système prévoyez toujours une sauvegarde de vos fichiers en cas de mauvaise manipulation.
Sur un serveur de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l'impact de vos actions.

Pour l'installation de notre instance de Loadbalancing sous Cloudstack nous aurons besoin du service HA Proxy.

Installation d'HA Proxy

Pour installer HA Proxy en version 1.5, exécutez la commande suivante dans votre terminal
 apt-get install haproxy 
Si vous souhaitez la dernière version de HA Proxy, la version 1.6, exécutez les commandes suivantes
# Ajout du repo
echo deb http://httpredir.debian.org/debian jessie-backports main | tee /etc/apt/sources.list.d/backports.list
apt-get install debian-keyring
# Recuperation de la cle gpg
gpg --keyring /usr/share/keyrings/debian-keyring.gpg --export bernat@debian.org |  apt-key add -
# Mise a jour des depots
apt-get update
# Installation de haproxy
apt-get install haproxy -t jessie-backports-1.6

Activation d'HA Proxy

HA Proxy est maintenant installé, nous devons à présent l'activer en remplaçant la valeur ENABLED=0 par ENABLED=1 dans les deux fichiers /etc/default/haproxy et /etc/init.d/haproxy
# activation de HA Proxy dans /etc/default/haproxy
sed -i "s/ENABLED=0/ENABLED=1/g" /etc/default/haproxy
# activation de HA Proxy dans /etc/init.d/haproxy
sed -i "s/ENABLED=0/ENABLED=1/g" /etc/init.d/haproxy

Configuration d'HA Proxy

La configuration de HA Proxy est réalisée dans le fichier /etc/haproxy/haproxy.cfg .

Voici un exemple de configuration d'HAProxy
global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        user haproxy
        group haproxy
        daemon
 
defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        contimeout 5000
        clitimeout 50000
        srvtimeout 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
 
listen cluster_web xxx.xxx.xxx.xxx:80

        mode http

        balance roundrobin
 

        option httpclose
        option forwardfor
 

        server web1 yyy.yyy.yyy.yyy:80 check
        server web2 zzz.zzz.zzz.zzz:80 check
 

        stats enable
        stats hide-version
        stats refresh 30s
        stats show-node
        stats auth ikoula:ikoula
        stats uri  /stats

L'adresse ip xxx.xxx.xxx.xxx étant l'adresse ip de notre serveur de répartition de charge, les adresses yyy.yyy.yyy.yyy et zzz.zzz.zzz.zzz sont nos serveurs web placés derrière le loadbalancer.

listen cluster_web L'adresse et le port sur lesquels le service HA Proxy devra écouter les connexions.
mode Le mode du balancement, dans notre exemple http pour du web
balance L'algorithme utilisé pour la répartition de charge, dans notre exemple RoundRobin
Les valeurs disponibles sont: RoundRobin, Source, Least connection, First Response
server Déclaration des différents serveurs placés derrière notre loadbalancer, dans notre exemple web1 et web2.
stats Permet de configurer l'accès la page de statistiques du loadbalancer
Dans notre exemple la page sera accessible sur xxx.xxx.xxx.xxx/stats avec ikoula/ikoula comme login et mot de passe

Démarrage d'HA Proxy

Nous pouvons à présent démarrer HA Proxy
 service haproxy start 

ou

 etc/init.d/haproxy start 
En nous rendant sur notre ip xxx.xxx.xxx.xxx/stats et en utlisant notre login et mot de passe nous arrivons sur la page d'administration de HA Proxy.

HAProxyStats.png

Ajout de l'IP Forwarding

Afin de permettre à nos de serveurs web d'accéder à internet et également pour pouvoir nous connecter en ssh dessus, nous devons mettre en place l'IP Forwarding grâce à IPTables.

Activer l'IP Forwarding
 echo 1 > /proc/sys/net/ipv4/ip_forward
 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
Ainsi que deux règles pour permettre la connexion ssh vers nos serveurs web
iptables -t nat -A PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 2221 -j DNAT --to-destination yyy.yyy.yyy.yyy:22
iptables -t nat -A PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 2222 -j DNAT --to-destination zzz.zzz.zzz.zzz:22
Nous pouvons à présent nous connecter à nos serveur en ssh en tapant
# Serveur web1
ssh root@xxx.xxx.xxx.xxx -p 2221
# Serveur web2
ssh root@xxx.xxx.xxx.xxx -p 2222

Configurer les serveurs web

Si les serveurs ne possèdent pas encore de service web il faut en installer un, par exemple
 apt-get install apache2 php5 
Une fois les services web installés, ou si le serveur en possédait déjà un, web1 et web2 apparaîtront en vert dans la page stats

HAProxyStat2.png