REPARTITION DE
CHARGE
LINUX
1
I. SOMMAIRE
II. Introduction ... 2
1. Principe cluster ... 2
III. Contexte ... 2
2. Objectifs ... 2
3. Topologie logique et physique finale ... 3
IV. Préparation des postes ... 4
4. Création du DNS ... 4
5. Serveur de fichier ... 6
6. Installation des serveurs web ... 7
V. Création du cluster ... 8
VI. Test de fonctionnement ... 9
2
II. INTRODUCTION
1. PRINCIPE CLUSTER
Quand un client contacte le cluster, il partage la connexion (suivant les paramètres de celui-ci) en partie égale sur les serveurs appartenant au cluster.
III. CONTEXTE
2. OBJECTIFS
Nous devons à la fin de ce TP avoir deux serveurs web sous linux (serveur web apache), un serveur de fichiers (avec montage NFS), un serveur DNS (bind9) ainsi qu’un cluster de basculement (nginx). Nous installerons par la suite « php » qui nous permettra d’avoir un site dynamique.
3
3. TOPOLOGIE LOGIQUE ET PHYSIQUE FINALE
4
IV. PREPARATION DES POSTES
4. CREATION DU DNS
Avant d’installer quelconques paquets (logiciels sous Linux), on doit mettre à jour le système. Pour faire cela on utilise les commandes :
apt-get update && apt-get upgrade -y
Nous sommes prés à installer un serveur DNS, nous avons fait le choix de
« Bind9 » qui est le plus répandu à l’heure actuelle : apt-get install bind9
Notre serveur DNS est installé mais n’est pas configuré. Pour cela on va déclarer notre future zone DNS dans le fichier :
/etc/bind/named.conf
zone "gsb-rd.local" { type master;
file "/etc/bind/db.gsb-rd.local";
};
zone "1.168.192.in-addr.arpa" { type master;
file "/etc/bind/db/1.168.192.in-addr.arpa";
};
On crée deux zones :
gsb-rd.local : « qui est la zone de recherche directe », on spécifie le fichier de zone grâce à l’abribus "file" le fichier de zone qui sera dans
« /etc/bind/ »
1.168.192.in-addr.arpa : « qui est la zone de recherche indirecte » on spécifie le fichier de zone grâce a l’abribus "file" le fichier de zone qui sera dans « /etc/bind/ »
5
/etc/bind/db.gsb-rd.local
$TTL 604800
@ IN SOA ns.gsb-rd.local. root.gsb-rd.local. ( 2014100801 ;Serial
604800 ;Refresh 86400 ;Retry 2419200 ;Expire 604800 ) ;Negative Cache TTL
;
@ IN NS ns.gsb-rd.local.
ns IN A 192.168.1.100
; host
debianriviere IN A 192.168.1.111 debiancamboulas IN A 192.168.1.110 debianalexis IN A 192.168.1.112 www IN A 192.168.1.100
On doit tout d’abord indiquer le nom du serveur de nom (NS), ici nous avons choisi de le nommé « ns.gsb-rd.local »
On nommera aussi par la suite les hôtes du domaine (A) avec le nom souhaité et leurs adresses IP respectives.
/etc/bind/1.168.192.in-addr.arpa
$TTL 604800
@ IN SOA ns.gsb-rd.local. root.gsb-rd.local ( 2014091701 ;Serial
604800 ;Refresh 86400 ;Retry 2419200 ;Expire 604800 ) ;Negative Cache TTL
;
@ IN NS ns.
1.0.0 IN PTR ns.gsb-rd.local.
;host
110 IN PTR debiancamboulas.gsb-rd.local.
111 IN PTR debianriviere.gsb-rd.local.
112 IN PTR debianalexis.gsb-rd.local.
/ ! \ Pour les PTR il faut juste indiquer le dernier octet de l’adresse IP.
6
La configuration du serveur DNS est enfin terminé, il ne reste plus qu’à redémarrer le service « Bind » pour que les configurations soient prises en comptes.
service bind9 restart
5. SERVEUR DE FICHIER
On se dirige maintenant sur le serveur de fichier ou nous allons installer le paquet samba qui permet de crée un serveur de fichier (Windows – Linux) grâce au protocole SMB (protocole qui permet le partage de ressource sur des réseaux) apt-get install samba
Cela nous crée un dossier avec tout les fichiers de configuration de samba nous allons modifier l’un d’eux. On va se mettre en bas du fichier pour ajouter notre futur dossier partagé.
/etc/samba/smb.conf
[site] Nom du partage sur le réseau path = /mnt/test Chemin du dossier à partagé read only = no On autorise l’ecriture
guest ok = yes On autorise tout les utilisateur
chmod –R 777 /mnt/test Donne le droit de lecture et écriture Il nous faut maintenant connecter les dossiers partagés sur les serveurs web, pour cela nous devons crée un dossier ou nous accueillerons le partage. Nous créons le dossier « site » dans le dossier « média » déjà crée.
mkdir /mnt/site
On va maintenant installer le paquet « cifs-utils » qui permet de crée des montages avec le protocole CIFS (ancien protocole de partage de ressources).
apt-get intall cifs-utils
Enfin nous pouvons crée la connexion avec le partage depuis les deux clients grâce à la commande mount.
mount -t cifs //192.168.1.112/site /media/site/ -o rw
7
6. INSTALLATION DES SERVEURS W EB
Nous avons pris le serveur web le plus connu et le plus répandu qui est apache (version 2). Nous allons donc faire comme d’habitude pour installer un nouveau paquet.
apt-get install apache2
Nous n’avons pas de modification particulières à apporté à la configuration d’apache. Il faut juste modifier la destination des ressources pour que le vhost par défaut pointe sur le dossier partagé.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /mnt/test À modifier avec le chemin <Directory />
Options FollowSymLinks AllowOverride None </Directory>
<Directory /mnt/test> À modifier avec le chemin Options Indexes FollowSymLinks MultiViews AllowOverride None
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>
8
On n’oublie pas de recharger la configuration d’apache.
service apache2 reload
V. CREATION DU CLUSTER
Pour la répartition de charge nous avons choisi le paquet nginx qui permet beaucoup de choses :
Serveur web (HTML)
Reverse proxy
Load-balancing apt-get install nginx
Il nous crée le fichier de configuration du cluster. Pour cela il nous faut créer un fichier dans la configuration de nginx.
/etc/nginx/site-available/gsb-rd.local
upstream www.gsb-rd.local { Nom d’accès au cluster ip_hash; Affinitées d’hôtes server 192.168.1.110:80; Serveur web 1 server 192.168.1.111:80; Serveur web 2 }
server {
location / {
proxy_pass http://www.gsb-rd.local;
} }
9
VI. TEST DE FONCTIONNEMENT
Pour teste que la répartition de charge (1 pour 1) marche bien nous avons installé le paquet « iftop » qui permet de voir les connexions active sur l’hôte.
apt-get install iftop
On se connecter sur le site depuis un client.
On lance « iftop » et on regarde si on voit notre client remonté iftop
192.168.1.100 => 192.168.25.128
On peut en déduire que le cluster envoie des données vers le client qui est 192.168.25.128