Projet

Général

Profil

Ldap-tips » Historique » Version 1

Pierre-Arnaud Poudret, 05/06/2013 15:49

1 1 Pierre-Arnaud Poudret
h1. Conseils pour le debuggage et l'administration d'openldap
2
3
h1. Loglevel
4
5
slapd écrit par défaut dans syslog.
6
7
Le niveau de log est défini par l'attribut olcLogLevel de cn=config. Par défaut, olcLogLevel=none.
8
9
Pour obtenir davantage de traces, modifier la valeur de olcLogLevel avec la somme d'un ou plusieurs des niveaux décrits ci-dessous:
10
<pre>
11
Level 	Keyword 	Description
12
-1 	any 	enable all debugging
13
0 	  	no debugging
14
1 	(0x1 trace) 	trace function callss
15
2 	(0x2 packets) 	debug packet handling
16
4 	(0x4 args) 	heavy trace debugging
17
8 	(0x8 conns) 	connection management
18
16 	(0x10 BER) 	print out packets sent and received
19
32 	(0x20 filter) 	search filter processing
20
64 	(0x40 config) 	configuration processing
21
128 	(0x80 ACL) 	access control list processing
22
256 	(0x100 stats) 	stats log connections/operations/results
23
512 	(0x200 stats2) 	stats log entries sent
24
1024 	(0x400 shell) 	print communication with shell backends
25
2048 	(0x800 parse) 	print entry parsing debugging
26
16384 	(0x4000 sync) 	syncrepl consumer processing
27
32768 	(0x8000 none) 	only messages that get logged whatever log level is set 
28
</pre>
29
30
Valeurs couramment utilisées:
31
* _olcLogLevel=256_: affiche les requêtes traitées par le LDAP (permet de voir exactement ce que fait un service qui interroge le LDAP)
32
* _olcLogLevel=256+16384_: affiche les requêtes et les traces spécifiques à la réplication
33
34
Les logs peuvent vite être assez volumineux.
35
=> bien penser à repasser olcLogLevel à none une fois le débuggage terminé
36
=> monitorer l'espace libre dans /var/log
37
38
h1. Slapd as root
39
40
Lorsque slapd ne démarre pas, on le lance parfois à la main en mode debug pour voir les messages. Attention: ne pas lancer slapd manuellement en tant que root avec /var/lib/ldap vide. Cela créerait la base HDB avec owner=root, et slapd ne démarrerait plus avec _/etc/init.d/slapd start_.
41
42
Si cela arrive néanmoins, _chown openldap:openldap /var/lib/ldap/*_.
43
44
h1. Réinitialiser un consumer
45
46
Pour réinitialiser les données d'une réplique du ldap en syncronisation avec un provider:
47
48
<pre>
49
/etc/init.d/slapd stop
50
rm /var/lib/ldap/*
51
/etc/init.d/slapd start
52
</pre>
53
54
Openldap va alors créer une nouvelle base HDB vierge, et la réplication va reconstituer tout l'annuaire à partir du provider.
55
56
h1. Défaillance d'un serveur LDAP
57
58
Mesures à prendre en cas de défaillance (prolongée) d'un des serveurs LDAP.
59
60
h2. Défaillance d'un LDAP esclave
61
62
Retirer l'enregistrement A correspondant au serveur défaillant, pour le nom DNS ldap.illyse.org.
63
Le serveur en rade ne sera alors plus exploité par les services s'appuyant sur ldap.illyse.org.
64
65
+Note+: les services essaieront peut-être encore de contacter le serveur défaillant s'ils ont mis en cache DNS le nom ldap.illyse.org. Tout devrait alors rentrer dans l'ordre à l'expiration du TTL de l'enregistrement. Si cela ne suffit pas, purger les caches DNS locaux / redémarrer les services.
66
67
h2. Défaillance du LDAP maître
68
69
Retirer l'enregistrement A correspondant au serveur défaillant, pour le nom DNS ldap.illyse.org.
70
71
Problème: le LDAP maître est le seul qui permet d'opérer des modification sur l'annuaire.
72
73
S'il est vital de faire des modifications sur l'annuaire avant que le LDAP maître n'ait été remis en état, modifier la configuration d'une des répliques pour en faire un nouveau LDAP maître:
74
* faire une sauvegarde de la conf actuelle (dossier /etc/ldap/slapd.d)
75
* retirer la directive olcSyncrepl de olcDatabase={1}hdb,cn=config
76
* configurer le serveur esclave choisi en provider (cf [[ldap-replica]])
77
* faire pointer le nom DNS ldap0.illyse.org vers le nouveau master
78
* déposer le certificat et la clé privée de ldap0.illyse.org dans /etc/ldap
79
* faire pointer les attributs olcTLS* de cn=config vers le certificat et la clé de ldap0.illyse.org
80
81
Dès lors, les autres serveurs esclaves doivent utiliser le nouveau serveur maître pour la réplication.
82
83
Attention: dans ce cas, au rétablissement du LDAP maître, ses données ne seront plus à jour.La procédure sera alors la suivante:
84
* laisser le ldap maître _temporaire_ configuré en tant que provider
85
* relancer le "véritable" ldap maître
86
* transférer les données (modifiées) du maître temporaire vers le "véritable" serveur maître (copier/coller dans ADS, ou export/import ldif)
87
* rétablir la configuration DNS d'origine
88
* reconfigurer le maître temporaire en consumer, rétablir ses certificats
89
90
+Note+: il est également possible de configurer openldap en mode "multi-master", avec plusieurs LDAP maîtres en réplication. Cette gymnastique ne serait alors plus nécessaire, mais d'après la doc, ce mode de fonctionnement garantit moins bien l'intégrité des données que le modèle provider/consumers.