Plusieurs sites Web sur un seul Serveur Web avec un Répartiteur de charge entre plusieurs serveurs WEB
Prérequis :
- Deux VM avec un OS linux pour les serveurs Web.
serveurWeb n°1 ayant comme @ip : 192.168.33.11 serveurWeb n°2 ayant comme @ip : 192.168.33.12
Une VM pour le Répartiteur de charge avec un OS Linux et 2 cartes réseaux
eth0 : dhcp Résaux Local (accès par pont) eth1 : 192.168.33.10
- Une machine cliente ça peut être votre pc
---
---
Partie 1 : Installation de 3 boxes Vagrant (LB1,WEB1 et WEB2)
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
#installation d’un équilibreur de charge (load balancer) config.vm.define "lb1" do |lb1|
lb1.vm.box = "ubuntu/trusty64"
lb1.vm.network "private_network", ip: "192.168.33.10"
lb1.vm.network "public_network"
lb1.vm.provision "shell", inline: <<-SHELL echo "lb1" > /etc/hostname
apt-get update
apt-get install -y haproxy SHELL
end #installation de deux serveurs Web config.vm.define "web1" do |web1|
web1.vm.box = "ubuntu/trusty64"
web1.vm.network "private_network", ip: "192.168.33.11"
#web1.vm.synced_folder "c:/flat", "/vagrant_data"
web1.vm.provision "shell", inline: <<-SHELL echo "web1" > /etc/hostname
Noureddine.GRASSA
- Prérequis : Installation de Virtualbox et de Vagrant - # Vagrant init
- # Editer Vagrantfile, effacer tout le contenu et copier ceci :
(télécharger le sur le site : n.grassa.free.fr)
apt-get update
apt-get install -y apache2 SHELL
end
config.vm.define "web2" do |web2|
web2.vm.box = "ubuntu/trusty64"
web2.vm.network "private_network", ip: "192.168.33.12"
web2.vm.provision "shell", inline: <<-SHELL echo "web2" > /etc/hostname
apt-get update
apt-get install -y apache2 SHELL
end
config.vm.box = "base"
end
- # Vagrant validate Vagrantfile - # Vagrant up
- Pour accéder aux boxes : vagrant ssh web1 ou vagrant ssh web2 - Vous allez ajouter dans Vagrantfile et dans la partie provision
echo "Serveur web1" > /var/www/html/index.html (sur le serveur web n°1)
echo "Serveur web2" > /var/www/html/index.html (sur le serveur web n°2)
- # Vagrant provision
- Vous allez ensuite accéder sur le Load balancer : vagrant ssh lb1
Il faut ensuite activer haproxy dans le fichier /etc/default/haproxy : ENABLED=1
et aussi l'activer dans le fichier /etc/init.d/haproxy : ENABLED=1
Editer le fichier /etc/haproxy/haproxy.cfg
listen lb1 votre_adresse_ip_public:80
#web mode http
#stat haproxy stats enable stats hide-version stats refresh 30s stats show-node
stats auth admin:admin stats uri /stats
#mode de balancement balance roundrobin
#options
option httpclose
#Les serveurs WEB
server web1 192.168.33.11:80 check server web2 192.168.33.12:80 check
Redémarrer le service apache 1. /etc/init.d/haproxy restart
Vous pouvez maintenant accéder à l’interface de statistiques de HaProxy via l’addresse: http://adresse_ip_lb1/stats avec le login/password admin/admin
Noureddine.GRASSA
On voit ci-contre que le répartiteur de charge Haproxy a pris en charge les deux serveurs WEB
Vous pouvez maintenant accéder à votre page web via
l’adresse : http://adresse_ip_lb faites plusieurs fois F5 qu’est ce que vous remarquez ?
Partie 2 :
Maintenant vous allez créer deux pages Web sur le premier serveur web dans deux emplacements.#vagrant ssh web1
• mkdir /var/www/html/site1
• mkdir /var/www/html/site2
• mkdir /var/www/html/logs
• echo " bienvenue sur mon site N°1 " > /var/www/html/site1/index.html
• echo " bienvenue sur mon site N°2 " > /var/www/html/site2/index.html Editer le fichier /etc/apache2/sites-available/000-default.conf (voici les lignes à ajouter à la fin du fichier)
NameVirtualHost *
<Virtualhost *>
ServerName sitepolytech1.com ServerAlias www.sitepolytech1.com DocumentRoot /var/www/html/site1
Customlog /var/www/html/logs/site1.log combined Errorlog /var/www/html/logs/site1.log
<Files “index.html”>
Order Deny, Allow Allow from ALL
</Files>
</VirtualHost>
Noureddine.GRASSA Polytech
# Créer de même un virtualhost pour sitepolytech2.com dans le fichier /etc/apache2/sites-available/default
• Redémarrer le service apache - /etc/init.d/apache2 restart
• Coté Client
Editer le fichier /etc/hosts sous Linux
Ou C:\Windows\System32\drivers\etc\hosts sous Windows et ajouter 192.168.33.11 sitepolytech1.com
192.168.33.11 sitepolytech2.com
Tester l’accès au sitepolytech1 respectivement sitepolytech2 depuis votre navigateur sur le serveur WEB N°1
Bon Travail
Protéger votre site Web par un mot de passe
htaccess - Creér un répertoire private dans /var/www - Ajouter 2 fichiers index.html et .htaccess - Editer le fichier .htaccess et ajouter
AuthUserFile /etc/apache2/.htpasswd AuthGroupFile /dev/null
Authname « zone privee » Authtype Basic
Require valid-user
Créer un user capable d’accèder à cette zone privée #sudo htpasswd –cmd /etc/apache2/.htpasswd toto
Editer le fichier /etc/apache2/site-available/default et modifier
<Directory /var/www/private>
Options Indexes FollowSymLinks MultiViews AllowOverride AuthConfig
Order allow,deny
</Directory>
Noureddine.GRASSA