REPARTITION DE CHARGE LINUX
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 1
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. 2
3. TOPOLOGIE LOGIQUE ET PHYSIQUE FINALE 3
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/» 4
/etc/bind/db.gsb-rd.local Cluster répartition de charge (Linux) $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. 5
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] path = /mnt/test read only = no guest ok = yes Nom du partage sur le réseau Chemin du dossier à partagé On autorise l ecriture 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 6
6. INSTALLATION DES SERVEURS WEB 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> 7
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 : apt-get install nginx Serveur web (HTML) Reverse proxy Load-balancing 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; } } 8
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 iftop On se connecter sur le site depuis un client. On lance «iftop» et on regarde si on voit notre client remonté 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 9