LP ASRALL
Outils Logiciels Libres
LDAP, CMS et Haute Disponibilit´ ee
Auteurs :
R´ emi Jachniewicz , Julien Lacava , Gatien Gaspard , Romain Gegout , Benoit Henryon
21 mars 2009
Table des mati` eres
I. LDAP 4
1. Installation du serveur openLDAP 5
2. Inspection des sch´emas 5
3. Configuration du serveur 5
4. Cr´eation du DIT 5
5. D´emarrage du serveur 6
6. Insertion des donn´ees dans l’annuaire 6
7. Recherche d’informations 6
7.1. afficher les valeurs de tous les attributs de tous les ´etudiants et de tous les profs 6 7.2. afficher les noms des attributs cn , description et telephoneNumber des ´etudiants
de NANCY . . . 7 7.3. afficher les valeurs de l’attribut mail des ´etudiants qui ont un title . . . 11 7.4. afficher les valeurs de tous les attributs des ´etudiants dont le sn commence par
la lettre M et qui n’ont pas de title . . . 12 7.5. afficher les valeurs de tous les attributs op´erationnels et non op´erationnels de
tous les ´etudiants . . . 13 7.6. afficher les membres du Groupe 2 . . . 13 7.7. afficher les valeurs des attributs cn des Administrateurs . . . 13 7.8. afficher les informations relatives `a l’annuaire en interrogeant l’objet rootDSE 13 7.9. afficher les informations relatives aux sch´emas utilis´es par l’annuaire en inter-
rogeant l’objet subschemaSubEntry . . . 13 7.10. Lister tout les ´etudiants (via navigateur) . . . 13 7.11. lister les mails des ´etudiants qui ont un title (via navigateur) . . . 13 7.12. lister les attributs des ´etudiants dont le nom commence par M (via navigateur) 13 7.13. Lister tous les ´etudiants (avec phpldapadmin) . . . 14 7.14. liste des ´etudiants dont le nom commence par ’M’(avec phpldapadmin) . . . . 14 7.15. liste des ´etudiants du group ASRALL2 (avec phpldapadmin) . . . 14 7.16. recherche les mails des ´etudiants qui ont le titre Monsieur au format ldif . . . 14 7.17. Refaire une recherche en testant le param`etre –z de ldapsearch (limitez `a 12
entr´ees maximales). . . 14
8. Journalisation 16
9. Modifications de donn´ees existantes 17
10.Mise en place du partitionnement 18
11.Mise en place de la r´eplication 18
12.Mise en place des ACL 18
II. Drupal 19
13.Guide d’installation : 19
14.Guide d’administration : 19
14.1. Configurer LDAP . . . 19
14.2. Gestion des groupes LDAP . . . 20
14.3. Ajout de modules `a Drupal . . . 20
14.4. Prise en main . . . 20
15. ´Evaluation des fonctionnalit´es : 20 15.1. Gestion du Versionning . . . 21
III. Haute Disponibilit´ e 22
16.LVS 23
17.Heartbeat 24
18.Zabbix 25
19.Mon 28
20.Mysql 29
21.Monitoring 31
Premi` ere partie .
LDAP
1. Installation du serveur openLDAP
Voici les options telles que configur´ee lors de l’installation : sudo apt-get install slapd ldap-utils
mot de passe admin : admin sudo dpkg-reconfigure ommetre config -> non
nom de domaine ->asrall.com nom organisation ->asrallSSH mot de passe admin -> admin module de base de donnees -> hdb supprimer bdd
autoriser ldapv2
2. Inspection des sch´ emas
Les classes filles de personnes sont : organizationalperson et residentialperson Mettre le tableau ici
Les classes h´eritent des attributs parents obligatoires, c’est pourquoi par exemple l’attribut sn ou encore cn n’est pas red´eclar´e dans les autres classes.
3. Configuration du serveur
Cr´eation d’un utilisateur : sudo slappasswd -h MD5
// R´ecup´eration du hash MD5 placer le r´esultat dans le fichier /etc/ldap/slapd.conf : rootdn ”cn=manager,dc=asrall,dc=com”
rootpw SSHAyCcwfMW2zG5iCiTEh8ZogGWtkf0qpPxr
4. Cr´ eation du DIT
Fichier dit.ldif :
On cr´ee un DIT avec : sudo slapadd -l ./dit.ldif On v´erifie :
sudo slapcat
5. D´ emarrage du serveur
D´emarrer le serveur en for¸cant un niveau de debug de 5 et en gardant les options par d´efaut (ne lancez pas le serveur en tˆache de fond en ajoutant un & `a la fin de la ligne de commande pour pouvoir voir ce qu’il retournera)
Il existe 14 loglevel possibles (cumulables entre eux) (voir page 2 Tutoriel) Pour choisir le loglevel il y a 2 possibilit´es :
-´editer ’loglevel’ dans slapd.conf
-soit en ligne de commandes au lancement de ldap sudo /usr/sbin/slapd -d 5 // 5 pour loglevel 5
V´erifier que le process id du demon slapd est bien contenu dans le fichier pidfile en fai- sant un cat du fichier pidfile.
Le fichier pidfile = /var/run/slapd/slapd.pid cat slapd.pid -> 5744
Le fichier pidfile = /var/run/slapd/slapd.args cat slapd.args -> /usr/sbin/slapd -d 5 start
6. Insertion des donn´ ees dans l’annuaire
ldapadd -f asrall.ldif -x -W -D ”cn=manager,dc=asrall,dc=com” ldapadd -f etudiant.ldif in- sertion de donn´ees via phpldapadmin : installation : sudo apt-get install phpldapadmin modifi-
cation de /etc/php5/apache2/php.ini : memory limit = 50M acces a l’interface : http ://adresse serveur/phpldapadmin test
7. Recherche d’informations
7.1. afficher les valeurs de tous les attributs de tous les ´ etudiants et de tous les profs
ldapsearch -x -b ”ou=Profs,ou=NANCY,dc=asrall,dc=com” -s sub *
# extended LDIF
#
# LDAPv3
# base <ou=Profs,ou=NANCY,dc=asrall,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: Desktop mod
#
# Profs, NANCY, asrall.com
dn: ou=Profs,ou=NANCY,dc=asrall,dc=com
# p.dosch, Profs, NANCY, asrall.com
dn: cn=p.dosch,ou=Profs,ou=NANCY,dc=asrall,dc=com
# b.mangeol, Profs, NANCY, asrall.com
dn: cn=b.mangeol,ou=Profs,ou=NANCY,dc=asrall,dc=com
# e.nataf, Profs, NANCY, asrall.com
dn: cn=e.nataf,ou=Profs,ou=NANCY,dc=asrall,dc=com
# d.maringer, Profs, NANCY, asrall.com
dn: cn=d.maringer,ou=Profs,ou=NANCY,dc=asrall,dc=com
# j.longchamp, Profs, NANCY, asrall.com
dn: cn=j.longchamp,ou=Profs,ou=NANCY,dc=asrall,dc=com
# m.simon, Profs, NANCY, asrall.com
dn: cn=m.simon,ou=Profs,ou=NANCY,dc=asrall,dc=com
7.2. afficher les noms des attributs cn , description et telephoneNumber des ´ etudiants de NANCY
ldapsearch -x -b ”ou=Etudiants,ou=NANCY,dc=asrall,dc=com” -s one cn description te- lephoneNumber
# extended LDIF
#
# LDAPv3
# base <ou=Etudiants,ou=NANCY,dc=asrall,dc=com> with scope oneLevel
# filter: (objectclass=*)
# requesting: cn description telephoneNumber
#
# g.gaspard, Etudiants, NANCY, asrall.com
dn: cn=g.gaspard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: g.gaspard
description: Gatien Gaspard
telephoneNumber: 0000000000
# j.lacava, Etudiants, NANCY, asrall.com
dn: cn=j.lacava,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: j.lacava
description: Julien Lacava telephoneNumber: 0000000000
# d.rard, Etudiants, NANCY, asrall.com
dn: cn=d.rard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: d.rard
description: David Rard telephoneNumber: 0000000000
# f.chassagne, Etudiants, NANCY, asrall.com
dn: cn=f.chassagne,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: f.chassagne
description: Felix Chassagne telephoneNumber: 0000000000
# j.leemans, Etudiants, NANCY, asrall.com
dn: cn=j.leemans,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: j.leemans
description: Jerome Leemans telephoneNumber: 0000000000
# l.dominguez, Etudiants, NANCY, asrall.com
dn: cn=l.dominguez,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: l.dominguez
description: Luis Dominguez telephoneNumber: 0000000000
# r.gegout, Etudiants, NANCY, asrall.com
dn: cn=r.gegout,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: r.gegout
description: Romain Gegout telephoneNumber: 0000000000
# s.jean, Etudiants, NANCY, asrall.com
dn: cn=s.jean,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: s.jean
description: Sebastien Jean telephoneNumber: 0000000000
# f.lambert, Etudiants, NANCY, asrall.com
dn: cn=f.lambert,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: f.lambert
description: Florian Lambert telephoneNumber: 0000000000
# g.lambert, Etudiants, NANCY, asrall.com
dn: cn=g.lambert,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: g.lambert
description: Gael Lambert telephoneNumber: 0000000000
# l.lemal, Etudiants, NANCY, asrall.com
dn: cn=l.lemal,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: l.lemal
description: Ludovic Lemal telephoneNumber: 0000000000
# r.dervin, Etudiants, NANCY, asrall.com
dn: cn=r.dervin,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: r.dervin
description: Romain Dervin telephoneNumber: 0000000000
# y.baris, Etudiants, NANCY, asrall.com
dn: cn=y.baris,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: y.baris
description: Yusuf Baris telephoneNumber: 0000000000
# s.lecaille, Etudiants, NANCY, asrall.com
dn: cn=s.lecaille,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: s.lecaille
description: Simon Lecaille telephoneNumber: 0000000000
# j.nogre, Etudiants, NANCY, asrall.com
dn: cn=j.nogre,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: j.nogre
description: Joel Nogre telephoneNumber: 0000000000
# q.hourlier, Etudiants, NANCY, asrall.com
dn: cn=q.hourlier,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: q.hourlier
description: Quentin Hourlier
telephoneNumber: 0000000000
# a.bailly, Etudiants, NANCY, asrall.com
dn: cn=a.bailly,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: a.bailly
description: Alexandre Bailly telephoneNumber: 0000000000
# c.mathieu, Etudiants, NANCY, asrall.com
dn: cn=c.mathieu,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: c.mathieu
description: Cedric Mathieu telephoneNumber: 0000000000
# h.meloni, Etudiants, NANCY, asrall.com
dn: cn=h.meloni,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: h.meloni
description: Hugo Meloni telephoneNumber: 0000000000
# j.fritz, Etudiants, NANCY, asrall.com
dn: cn=j.fritz,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: j.fritz
description: Jean Fritz telephoneNumber: 0000000000
# y.ilhan, Etudiants, NANCY, asrall.com
dn: cn=y.ilhan,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: y.ilhan
description: Yilmaz Ilhan telephoneNumber: 0000000000
# b.seclier, Etudiants, NANCY, asrall.com
dn: cn=b.seclier,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: b.seclier
description: Benjamin Seclier telephoneNumber: 0000000000
# v.meslard, Etudiants, NANCY, asrall.com
dn: cn=v.meslard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: v.meslard
description: Vincent Meslard telephoneNumber: 0000000000
# g.farinet, Etudiants, NANCY, asrall.com
dn: cn=g.farinet,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: g.farinet
description: Geoffry Farinet telephoneNumber: 0000000000
# r.jachniewicz, Etudiants, NANCY, asrall.com
dn: cn=r.jachniewicz,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: r.jachniewicz
description: Remi Jachniewicz telephoneNumber: 0000000000
# b.henryon, Etudiants, NANCY, asrall.com
dn: cn=b.henryon,ou=Etudiants,ou=NANCY,dc=asrall,dc=com cn: b.henryon
description: Benoit Henryon telephoneNumber: 0000000000
# search result search: 2
result: 0 Success
# numResponses: 27
# numEntries: 26
7.3. afficher les valeurs de l’attribut mail des ´ etudiants qui ont un title
ldapsearch -x -b ”ou=Etudiants,ou=NANCY,dc=asrall,dc=com” -s one title=”monsieur”
# extended LDIF
#
# LDAPv3
# base <ou=Etudiants,ou=NANCY,dc=asrall,dc=com> with scope oneLevel
# filter: title=monsieur
# requesting: mail
#
# g.gaspard, Etudiants, NANCY, asrall.com
dn: cn=g.gaspard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr
# j.lacava, Etudiants, NANCY, asrall.com
dn: cn=j.lacava,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr
# d.rard, Etudiants, NANCY, asrall.com
dn: cn=d.rard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr
# f.chassagne, Etudiants, NANCY, asrall.com
dn: cn=f.chassagne,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: felix.chassagne@etudiants-univ-nancy2.fr
# j.leemans, Etudiants, NANCY, asrall.com
dn: cn=j.leemans,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: jerome.leemans@etudiants-univ-nancy2.fr
# l.dominguez, Etudiants, NANCY, asrall.com
dn: cn=l.dominguez,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: luis.dominguez@etudiants-univ-nancy2.fr
# search result search: 2
result: 0 Success
# numResponses: 7
# numEntries: 6
7.4. afficher les valeurs de tous les attributs des ´ etudiants dont le sn commence par la lettre M et qui n’ont pas de title
ldapsearch -x -b ”ou=Etudiants,ou=NANCY,dc=asrall,dc=com” -s one ’(&(sn=M*)( !(title=*)))’
*
# extended LDIF
#
# LDAPv3
# base <ou=Etudiants,ou=NANCY,dc=asrall,dc=com> with scope oneLevel
# filter: (\&(sn=M*)(!(title=*)))
# requesting: Desktop mod
#
# c.mathieu, Etudiants, NANCY, asrall.com
dn: cn=c.mathieu,ou=Etudiants,ou=NANCY,dc=asrall,dc=com
# h.meloni, Etudiants, NANCY, asrall.com
dn: cn=h.meloni,ou=Etudiants,ou=NANCY,dc=asrall,dc=com
# v.meslard, Etudiants, NANCY, asrall.com
dn: cn=v.meslard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
7.5. afficher les valeurs de tous les attributs op´ erationnels et non op´ erationnels de tous les ´ etudiants
7.6. afficher les membres du Groupe 2
ldapsearch -x -b ”ou=Group,ou=NANCY,dc=asrall,dc=com” -s one cn=ASRALL2
7.7. afficher les valeurs des attributs cn des Administrateurs
ldapsearch -x -b ”cn=ADMINISTRATEURS,ou=Groups,ou=NANCY,dc=asrall,dc=com”
-s one cn
7.8. afficher les informations relatives ` a l’annuaire en interrogeant l’objet rootDSE
7.9. afficher les informations relatives aux sch´ emas utilis´ es par l’annuaire en interrogeant l’objet subschemaSubEntry 7.10. Lister tout les ´ etudiants (via navigateur)
ldap ://192.168.10.11 :389/ou=Etudiants,ou=NANCY,dc=asrall,dc=com ?* ?sub ?(cn=*)
7.11. lister les mails des ´ etudiants qui ont un title (via navigateur)
ldap ://192.168.10.11 :389/ou=Etudiants,ou=NANCY,dc=asrall,dc=com ?mail ?sub ?(title=*)
7.12. lister les attributs des ´ etudiants dont le nom commence par M (via navigateur)
ldap ://192.168.10.11 :389/ou=Etudiants,ou=NANCY,dc=asrall,dc=com ?* ?sub ?(sn=M*)
7.13. Lister tous les ´ etudiants (avec phpldapadmin)
7.14. liste des ´ etudiants dont le nom commence par ’M’(avec phpldapadmin)
7.15. liste des ´ etudiants du group ASRALL2 (avec phpldapadmin) 7.16. recherche les mails des ´ etudiants qui ont le titre Monsieur au
format ldif
ldapsearch -LLL -x -b ”ou=Etudiants,ou=NANCY,dc=asrall,dc=com” -s one title=”monsieur”
dn: cn=g.gaspard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr
dn: cn=j.lacava,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr
dn: cn=d.rard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr
dn: cn=f.chassagne,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: felix.chassagne@etudiants-univ-nancy2.fr
dn: cn=j.leemans,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: jerome.leemans@etudiants-univ-nancy2.fr
dn: cn=l.dominguez,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: luis.dominguez@etudiants-univ-nancy2.fr
7.17. Refaire une recherche en testant le param` etre –z de ldapsearch (limitez ` a 12 entr´ ees maximales).
Que retourne le serveur si jamais il y a plus de 12 entr´ees correspondant au filtre de recherche ? ldapsearch -z 10 -x -b ”ou=Etudiants,ou=NANCY,dc=asrall,dc=com” -s one title=”monsieur” mail
# extended LDIF
#
# LDAPv3
# base <ou=Etudiants,ou=NANCY,dc=asrall,dc=com> with scope oneLevel
# filter: title=monsieur
# requesting: mail
#
# g.gaspard, Etudiants, NANCY, asrall.com
dn: cn=g.gaspard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr
# j.lacava, Etudiants, NANCY, asrall.com
dn: cn=j.lacava,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr
# d.rard, Etudiants, NANCY, asrall.com
dn: cn=d.rard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr
# f.chassagne, Etudiants, NANCY, asrall.com
dn: cn=f.chassagne,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: felix.chassagne@etudiants-univ-nancy2.fr
# j.leemans, Etudiants, NANCY, asrall.com
dn: cn=j.leemans,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: jerome.leemans@etudiants-univ-nancy2.fr
# l.dominguez, Etudiants, NANCY, asrall.com
dn: cn=l.dominguez,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: luis.dominguez@etudiants-univ-nancy2.fr
# search result search: 2
result: 0 Success
# numResponses: 7
# numEntries: 6
dans le cas o`u on limite a une valeut inf´erieure au nombre r´eel de r´esultats : ldapsearch -z 3 -x -b ”ou=Etudiants,ou=NANCY,dc=asrall,dc=com” -s one title=”monsieur” mail
# extended LDIF
#
# LDAPv3
# base <ou=Etudiants,ou=NANCY,dc=asrall,dc=com> with scope oneLevel
# filter: title=monsieur
# requesting: mail
#
# g.gaspard, Etudiants, NANCY, asrall.com
dn: cn=g.gaspard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr
# j.lacava, Etudiants, NANCY, asrall.com
dn: cn=j.lacava,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr
# d.rard, Etudiants, NANCY, asrall.com
dn: cn=d.rard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr
# search result search: 2
result: 4 Size limit exceeded
# numResponses: 4
# numEntries: 3
\subsection{Refaire une recherche en testant le param`etre {S de ldapsearch. Comment sont affich´ees les r´esultats par rapport `a une recherche sans param`etre {S ?}
recherche les 3 premiers mails des ´etudiants et affiche par ordre alphab´etique
ldapsearch -S mail -z 3 -x -b "ou=Etudiants,ou=NANCY,dc=asrall,dc=com" -s one title="monsieur" mail
\begin{verbatim}
# extended LDIF
#
# LDAPv3
# base <ou=Etudiants,ou=NANCY,dc=asrall,dc=com> with scope oneLevel
# filter: title=monsieur
# requesting: mail
#
# d.rard, Etudiants, NANCY, asrall.com
dn: cn=d.rard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: david.rard@etudiants-univ-nancy2.fr
# g.gaspard, Etudiants, NANCY, asrall.com
dn: cn=g.gaspard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: gatien.gaspard@etudiants-univ-nancy2.fr
# j.lacava, Etudiants, NANCY, asrall.com
dn: cn=j.lacava,ou=Etudiants,ou=NANCY,dc=asrall,dc=com mail: julien.lacava@etudiants-univ-nancy2.fr
8. Journalisation
en debug 0 -¿ aucune info
en debug 32 (traitement des filtres de recherche) on obtient une info par r´esultat de re- cherche
begin get_filter PRESENT
end get_filter 0
=> bdb_filter_candidates AND
=> bdb_list_candidates 0xa0
=> bdb_filter_candidates PRESENT
<= bdb_filter_candidates: id=-1 first=1 last=51
<= bdb_list_candidates: id=-1 first=8 last=33
<= bdb_filter_candidates: id=-1 first=8 last=33
=> test_filter PRESENT
<= test_filter 6
=> test_filter PRESENT
<= test_filter 6
=> test_filter PRESENT
<= test_filter 6
=> test_filter PRESENT
<= test_filter 6
en debug 512(statistique sur les r´esultats renvoy´ees au client) slapd starting conn=0 op=1 ENTRY dn=”cn=g.gaspard,ou=etudiants,ou=nancy,dc=asrall,dc=com” conn=0 op=1 EN- TRY dn=”cn=j.lacava,ou=etudiants,ou=nancy,dc=asrall,dc=com” conn=0 op=1 ENTRY dn=”cn=d.rard,ou=etudiants,ou=nancy,dc=asrall,dc=com”
9. Modifications de donn´ ees existantes
9.1. Ajouter l’attribut departmentNumber ` a 4 ´ etudiants de NANCY de votre choix.
a) on cr´e un fichier texte modif1.txt : dn : cn=g.gaspard,ou=Etudiants,ou=NANCY,dc=asrall,dc=com changetype : modify add : departementNumber departementNumber : 57
dn : cn=j.lacava,ou=Etudiants,ou=NANCY,dc=asrall,dc=com changetype : modify add : departementNumber departementNumber : 57
dn : cn=r.gegout,ou=Etudiants,ou=NANCY,dc=asrall,dc=com changetype : modify add : departementNumber departementNumber : 54
dn : cn=y.baris,ou=Etudiants,ou=NANCY,dc=asrall,dc=com changetype : modify add : departementNumber departementNumber : 88
b) On lance l’int´egration de ce fichier : ldapmodify -x -D ”cn=manager,dc=asrall,dc=com”
-f modif1.txt -w managerpwd
9.2. Supprimer l’attribut description ` a 3 profs de TOULOUSE de votre choix
a) on cr´e le fichier : dn : cn=j.hallyday,ou=Profs,ou=TOULOUSE,dc=asrall,dc=com chan- getype : modify delete : telephoneNumber
b) on lance : ldapmodify -x -D ”cn=manager,dc=asrall,dc=com” -f modif2.txt -w mana- gerpwd
9.3. Modifier les attributs mail et telephoneNumber de 3 profs de votre choix
9.4. Supprimer les entr´ ees de 2 ´ etudiants de TOULOUSE et celle d’un prof de NANCY
9.5. D´ eplacer un ´ etudiant de TOULOUSE vers les profs de NANCY 9.6. Renommer une ´ etudiante en changeant son attribut cn en
conservant l’ancien cn (par exemple si elle a chang´ e de nom en se mariant et qu’elle veut quand mˆ eme voir apparaˆıtre son nom de jeune fille)
9.7. Supprimer un des ´ etudiants du groupe Utilisateurs
10. Mise en place du partitionnement
11. Mise en place de la r´ eplication
12. Mise en place des ACL
Deuxi` eme partie . Drupal
13. Guide d’installation :
T´el´echargement de drupal sur http://drupalfr.org/
Version intall´ee : Drupal6.9
Pr´erequis : php5, mysql, apache2, phpmyadmin, php5-gd
D´ecompresser l’archive contenant Drupal dans un r´epertoire accessible par Apache (/var/www/drupal par exemple).
Rendre www-data propri´etaire de l’ensemble du CMS (chown www-data :www-data -R /var/www/drupal).
Renommer le fichier /var/www/drupal/sites/defaults.settings.php en settings.php Rajouter les droits d’´ecriture `a ce fichier (chmod u+w settings.php).
Rajouter les droits d’´ecriture au r´epertoire /var/www/drupal/sites/defaults/files (chmod u+w -R files)
Cr´eer une base de donn´ees pour Drupal.
Ouvrir un navigateur `a l’adresse http ://ipduserveur/drupal/install.php Dans le navigateur :
Remplir les informations pour la cr´eation d’un utilisateur : Login : drupal
MDP : drupal54
Pr´eciser le nom de la base de donn´ees.
Sauvegarder
Enlever les droits d’´ecriture sur settings.php (chmod u-w settings.php)
14. Guide d’administration :
Suppression de l’authentification par mail lors de la cr´eation d’un compte : aller dans Administer -> UserManagement -> UserSettingset d´ecocher la case ”Require e-mail veri- fication”
Par defaut, il y a deux types deusers, anonyme et identifi´e.
Afin de donner des droits sp´ecifiques, il faut cr´eer des rˆoles que l’on pourra affecter aux utilisateurs voulus. Pour ce faire, il faut d´efinir les permissions d´esir´ees :
Administer -> UserManagement -> Roles
14.1. Configurer LDAP
Pour g´erer les utilisateurs depuis un serveur LDAP, il faut installer le module php5-ldap.
Pour l’int´egration de LDAP dans Drupal, il faut y installer le module ldap integration.
configuration de Ldap authentication :
Mixed mode. The LDAP authentication is performed only if Drupal authentication fails Di- sallow login and log the conflict
Add server :
Base DNs : dc=asrall,dc=com UserName attribute : cn Email attribute : mail
14.2. Gestion des groupes LDAP
Groups exist as LDAP entries where a multivalued attribute contains the members’ CNs
Nodes containing groups (one per line) :cn=ADMINISTRATEURS,ou=Groups,ou=NANCY,dc=asrall,dc=com Attribute holding group members : uniqueMember
14.3. Ajout de modules ` a Drupal
Copier coller le contenu d’une archive contenant le module dans le r´epertoire /var/www/drupal/modules (si celui-ci n’est pas disponible par d´efaut)
Aller sur administer->site building->modules et activer le module d´esir´e.
exemple : shoutcast :
extraction dans le dossier modules
activation via administer->site building->modules->shoutbox ajout du block aux pages :
administer->site building->blocks->shoutbox exemple : blog :
activation via administer->site building->modules->blog Ajout du support de la langue francaise :
r´ecup´eration de l’archive contenant le fran¸cais puis activation viaadminister->site configuration->languages.
14.4. Prise en main
Drupal s’av`ere extremement rapide et ais´e `a installer et `a mettre en oeuvre. L’ajout de fonctionnalit´e est ´egalement tr´es intuitif puisqu’il suffit d’ajouter le module dans le r´epertoire module de drupal et activer celui-ci via l’interface d’administration.
15. ´ Evaluation des fonctionnalit´ es :
L’authentification et la gestion des utilisateurs via LDAP s’av´ere relativement simple `a mettre en place. La traduction dans diverses langues ´egalement.
Quant `a l’´edition du contenu, Drupal dispose d’un ´editeur de texte tr`es sommaire, il est n´eanmoins possible d’installer un ´editeur Wysiwyg via un module compl´ementaire.
La connexion `a une base de donn´ees se fait naturellement lors de l’installation, drupal se charge de cr´eer ce qu’il a besoin.
15.1. Gestion du Versionning
Cr´eer du contenu. Modifier le contenu (en cochant la case Information sur les revisions –¿
cr´eer une revision). La liste des revisions est accessible via le menu ”revisions” sur les pages contenant plusieurs revisions.
Troisi` eme partie .
Haute Disponibilit´ e
16. LVS
Linux Virtual Server (LVS) est une solution avanc´ee de r´epartition de charge pour GNU/Linux.
C’est un logiciel libre commenc´e par Wensong Zhang en mai 1998. La mission de ce projet
´
etait de construire un serveur de haute performance pour Linux utilisant la technologie du clustering.
L’´equilibrage de type NAT via LVS que nous allons mettre en place s’appuie essentiellement sur ipvsadm qui est l’outil d’administration d’LVS mais aussi de Ldirectord qui va s’occuper de la configuration et la d´etection de serveurs web down.
Sur le/les ´equilibreur(s) :
Tout d’abord on installe Ldirectord :
sudo apt-get install ldirectord
Ensuite on cr´ee une interface virtuelle, qui sera utilis´ee par le client d´esirant visiter le site web :
sudo ifconfig eth0 :virt 192.168.2.110 Configuration de Ldirectord :
Les fichiers de configurations portent l’extension .cf et ont pour r´epertoire /etc/ha.d/.
Dans ce fichier il faut renseigner plusieurs ´el´ements : virtual=192.168.2.110:80
protocol=tcp scheduler=rr
real=192.168.10.91:90 masq 1 real=192.168.10.110:80 masq 1 request="test.html"
receive="200"
– Virtual renseigne sur l’adresse ip virtuelle qui sera acc´ed´ee par le client.
– Protocol permettant de d´efinir le type de protocole utilis´e, ici tcp car http est bas´e sur celui-ci.
– Schedulercorrespond a l’agorithme utilis´e pour l’´equilibrage, rr signifiant Round Robin.
real liste les serveurs constituant la pool avec l’adresse ip de chacuns d’eux, sont type de forward et le poid.Le type masq (pour masquerade) correspond au LVS de type NAT et le poid permet de d´efinir une priorit´e de l’aiguillage.
– Request d´efini le nom de la resource qui sera acced´ee pour v´erifier que les serveurs web sont toujours disponibles.
– Receive contient la valeur que devra contenir la resource pour ˆetre consid´er´e comme disponible.
Sur les serveurs web :
Il y a deux petits points `a mettre en place sur les serveurs :
La premi`ere consiste `a changer la passerelle actuelle par l’ip de l’´equilibreur :
/sbin/route add default gw 192.168.10.221
Ensuite il faut cr´eer `a la racine le fichier test.html et y mettre comme contenu ¡¡200¿¿.
Lancement : En mode d´ebug :
/usr/sbin/ldirectord -d /etc/ha.d/www.cf start En mode normal :
/etc/init.d/ldirectord start
17. Heartbeat
La haute disponibilit´e va ˆetre assur´ee par heartbeat, celui-ci doit ˆetre install´e sur chacun des ´equilibreurs. On installe heartbeat :
sudo apt-get install heartbeat
Configuration : Il y a 3 fichiers `a configurer pour qu’heartbeat fonctionne comme d´esir´e : /etc/ha.d/ha.cf :
bcast eth0 <= Interface utilis´ee pour le battement debugfile /var/log/ha-debug <= fichier de d´ebug
logfile /var/log/ha-log <= fichier de log logfacility local0 <= Log utilisant syslog-ng
keepalive 2 <= temps (en s) entre chaque battement
deadtime 10 <= temps au bout du quel on consid`ere une machine morte
warntime 6 <= on consid`ere que la machine met du temps `a r´epondre apr`es 6s initdead 60 <= temps avant de lancer le premier battement au d´emarrage udpport 694 <= port utilis´e pour l’envoi du battement
node equ1 <= d´eclaration des machines devant ^etre surveill´ees
node equ2
auto_failback on <= r´eintegre une machine qui repasse en ´etat de marche /etc/had.d/haresources :
equ1
| {z }
Ipaddr :: 192.168.10.221
| {z }
Node Ip virt `a attribuer /etc/ha.d/authkeys :
auth 1 <= on utilise la m´ethode d’authentification 1
1 sha1 CleSecrete <= Num´ero de m´ethode, Type de cryptage et cl´e Ensuite il ne nous reste plus qu’a lancer heartbeat sur les machines :
/etc/init.d/heartbeat start
18. Zabbix
Pr´erequis avant installation :
Il faut disposer d’un serveur Web g´erant le PHP avec une base de donn´ees MySql ou PostgreSQL.
Installation :
Il y a trois paquet `a installer :
– zabbix-server-mysql pour utiliser une base MySQL ou zabbix-server-pgsql pour utiliser une base PostGRES
– zabbix-frontend-php : l’interface PHP pour le serveur – zabbix-agent : pour pouvoir monitorer le serveur lui-mˆeme Dans php.ini, il faut changer quelques options :
L’option max execution time qui fixe le temps maximal d’ex´ecution d’un script, en secondes doit ˆetre mise `a 600 pour l’installation de zabbix.
Il y a aussi l’option date.timezone qui doit ˆetre renseigner pour pouvoir afficher un temps correct sur le frontend en php.
La configuration de l’agent est tr`es simple car il y a trois directives `a renseigner dans les fichiers zabbix agent.conf zabbi agentd.conf. Dans le premier il faut pr´eciser l’adresse du ser- veur ”Server=localhost”. Dans l’autre fichier, il faut renseigner deux champs. L’un pr´ecisant aussi l’adresse du serveur et l’autre indiquant le nom de machine qui sera utilis´e par le fron- tend : ”Server=127.0.0.1” et ”Hostname=ZabbixServ”.
Pour ajouter une machine :
Menu ”Configuration -> Hotes -> Cr´eer un h^ote”
Figure 1: Ajout d’une machine
Voici le menu pour ajouter une machine. Il faut pr´eciser son nom, son adresse IP, son statut,
et pour pouvoir monitorer des services, par exemples snmp, il faut lui ajouter le template snmp (il faut bien entendu que snmp soit installer sur cette machine).
Pour afficher l’occupation du disque par exemple :
Menu ”Configuration -> Graphiques -> Cr´eation de graphiques”
Figure 2: Ajout d’un graphique
Comme on le voit sur l’image, on peut selectionner diff´erents items pour la machine. Ici, on selectionne ”Free disk space on /”. On peut choisir la couleur afficher sur le graphique, le style de dessin affich´e ...
Pour voir par exemple qu’un serveur Web est tomb´e :
Menu ”Configuration -> Actions -> Cr´eer une action”
Figure 3: Ajout d’un graphique
Ici, on peut choisir diff´erent services `a monitorer. On clique sur le nom du service pour le monitorer. Dans le menu ”M´etriques -> Evennements”, on peut voir le status des services monitorer ainsi que les actions li´ees au changement de status de certains services.
Par exemple si on veut envoyer un mail `a l’administrateur quand le serveur web d’une machine tombe, il faut configurer zabbix de la mani`ere suivante :
Menu ”Administration -> Types Media -> Email” Donc dans l’onglet Administration / Media Type)
Figure 4: Configuration mail
SMTP server : l’adresse IP ou le nom DNS de ton serveur de mail (SMTP) exemple :
”smtp.free.fr” ici ”localhost”
SMTP helo : c’est la chaine qu’il va renvoyer au serveur pour s’identifier ; en g´en´eral ce n’est pas tr`es important ; par exemple ”zabbixserver” ici ”localhost”
SMTP email : Email avec laquelle les mails sont envoy´e (le ”From”) ; exemple ”zabbixser- ver@free.fr” ici julien@xionis.home
Ensuite, il faut associer un media ”Email” (une adresse Email de destination) `a l’utilisateur Zabbix qui va envoyer les mail. La configuration des emails `a envoyer se passe dans le menu
”"Configuration -> Actions” qui est d´ecrit au dessus.
Figure 5: Configuration mail
Ici on voit que si Apache tombe sur le serveur ldap, alors un mail sera envoy´e `a l’utilisateur Admin dont l’adresse a ´et´e pr´ecis´e dans le menu ”Administration -> Utilisateurs”.
19. Mon
Installation de mon via :
sudo apt-get install mon
Configuration pour surveillance du service http et envoi de mail en cons´equent : hostgroup local localhost equ1 <=d´efinition des h^otes
watch local <= surveillance du groupe local service http <= surveillance http
monitor http.monitor
interval 2m <= On v´erifire toutes les 2 min depend SELF::fping
period wd {Sun-Sat} <= p´eriode de v´erification
alert mail.alert remi@localhost <= envoi de mail en cas de soucis alertafter 10m <= alert apr`es n minutes
\begin{verbatim}
On recharge la configuration :
\begin{center}sudo /etc/init.d/mon reload\end{center}
En utilisant la command monshow on peut v´erifier l’´etat actuel des ´el´ements surveill´es:
\begin{verbatim}
GROUP SERVICE STATUS LAST NEXT ALERTS SUMMARY
D local http - 9s 0s none 127.0.0.1 equ1
Ici pas de soucis avec http. Maintenant arretons Apache : sudo /etc/init.d/apache2 stop
Apr`es quelques secondes en retestant monshow on s’aper¸coit qu’il y a un probl`eme (FAIL) : D local http FAIL 2s 0s none 127.0.0.1 equ1
Red´emarrage en cas d’Apache d´esactiv´e : En cas d’un apache qui venait `a tomber, il peut ˆ
etre interessant de tenter de relancer celui-ci avec mon. Pour cel`a nous allons cr´eer un script dans /etc/ha.d/mon/alert.d/ que nous nommeront Apache UpDown. Celui-ci contient :
20. Mysql
Configuration du maˆıte Il faut tout d’abord ´editer le fichier /etc/mysql/my.cnf. L’´etape consistant a activer l’´ecoute autre que sur localhost via :
#skip-networking
#bind-address = 127.0.0.1
Maintenant il est n´ecessaire d’indiquer `a MySQL pour quel base les logs seront ´ecrits (ces logs seront utilis´e par le serveur esclave afin de d´et´ecter des changements). On lui indique le chemin des log et nous sp´ecifions que le serveur jouera le rˆole de maˆıtre :
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=drupal
server-id=1
Ensuite on red´emarre Mysql :
/etc/init.d/mysql restart
Nous allons maintenant cr´eer un utilisateur avec les droits de r´eplications via mysql mysql -u root -p
On attibue les droits :
GRANT REPLICATION SLAVE ON *.* TO ’serv esclace’@’%’ IDENTIFIED BY
’¡motdepass¿’ ;FLUSH PRIVILEGES ;
Nous allons maintenant bloquer la table qui nous int´eresse : USE drupal;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
Ce qui devrait nous afficher :
+---+---+---+---+
| File | Position | Binlog_do_db | Binlog_ignore_db | +---+---+---+---+
| mysql-bin.006 | 183 | drupal | |
+---+---+---+---+
1 row in set (0.00 sec)
Il est n´ecessaire de garder ces informations pour le serveur esclave.
On cr´ee maintenant un dump de la table :
mysqldump -u root -p –opt drupal ¿ drupal.sql Une fois le dump ´etabli nous pouvons d´ebloquer la base :
mysql -u root -p Enter password:
UNLOCK TABLES;
quit;
La configuration du maˆıtre est d´esormais termin´ee.
Configuration de l’esclave :
On cr´ee tout d’abord la base `a r´epliquer : mysql -u root -p
Enter password:
CREATE DATABASE drupal;
quit;
On importe ensuite la base pr´ecedement copi´ee :
mysql -u root -p drupal ¡ drupal.sql
Il faut maintenant indiquer `a Mysql qu’il sera l’esclave, que le maitre est 192.168.0.100 et que la base se nomme drupal. Pour cel`a on modifie le fichier /etc/mysql/my.cnf
server-id=2
master-host=192.168.0.100 master-user=esclave
master-password=motdepasse master-connect-retry=60 replicate-do-db=drupal
On r´edemarre Mysql :
/etc/init.d/mysql restart Ensuite on lance Mysql pour les derniers r´eglages :
mysql -u root -p On stoppe le mode esclave :
SLAVE STOP ;
CHANGE MASTER TO MASTER HOST=’192.168.0.100’, MASTER USER=’drupal’, MASTER PASSWORD=’motdepass’, MASTER LOG FILE=’mysql-bin.006’,
MASTER LOG POS=183 ;
– MASTER HOST is the IP address or hostname of the master (in this example it is 192.168.0.100).
– MASTER USER is the user we granted replication privileges on the master.
– MASTER PASSWORD is the password of MASTER USER on the master.
– MASTER LOG FILE is the file MySQL gave back when you ran SHOW MASTER STATUS ; on the master.
– MASTER LOG POS is the position MySQL gave back when you ran SHOW MASTER STATUS ; on the master.
On relance le mode esclave :
SLAVE START ;
On constate que la r´eplication est bien op´erationnelle (v´erification via phpmyadmin).
21. Monitoring
Feedback n’´etant plus maintenu nous avons d´ecid´e de tester une autre solution nous eprmet- tant de suivre le status du cluster. MRTG et RRDTOOL sont les leaders dans ce domaine.
N´eanmoins la mise en place/configuration n’est pas rapide. C’est pourquoi des outils plus sp´ecifiques doivent ˆetre utilis´es.
Apr`es plusieurs recherches Ganglia semble tout indiqu´es. Apr`es quelques tests il a ´et´e d´ecid´e de choisir Ganglia de part ses nombreux graphiques fournis mais aussi le d´etail des
´
evenements pas heure (sur munin on ne peut zoomer au d´el`a des jours).
Installation/Configuration
Ganglia se d´ecompose en deux parties, un serveur et un client. Le serveur est `a installer sur chaque machine `a surveiller au travers de la commande :
apt-get install gmetad
Puis il faut configurer divers ´el´ements dans le fichier /etc/gmetad.conf : Les serveurs `a questionner :
data source ”Mon Cluster” localhost 192.168.10.222 192.168.10.91 192.168.10.110 Le nom de la grid :
gridname ASRALL
Il est ensuite n´ecessaire d’installer un client qui va s’occuper de r´ecup´erer toutes les infor- mations sur les diff´erents serveurs :
apt-get install ganglia-monitor
On attribue le nom de la grid via le fichier de configuration /etc/gmond.conf :
Name ASRALL
Ganglia est packag´e par d´efaut mais ne contient pas le frontend web, pour cel`a il suffit de t´el´echarger le tar.gz sur le site officiel et copier le r´epertoire ¡¡web¿¿ `a l’emplacement du serveur web.