Wednesday, November 11, 2015

FR (French) - REPADMIN - Active Directory replication commands - Part 1

English abstract: I present some basic aspects of Active Directory replication as well as REPADMIN commands to view replication status or force manual replication between domain controllers.

Active Directory stocke les objets du domaine (utilisateurs, groupes, ordinateurs, et autres éléments) dans une base de données dont une copie se trouve à chaque contrôleur de domaine (désormais abrégé en "DC"). Chaque fois qu'on ajoute un nouveau DC au domaine, le contenu de cette base de données doit être copié vers la base de données du nouveau DC. En outre, chaque fois qu'on change un objet (création, modification des propriétés, suppression) à un DC particulier, le changement en question doit se reproduire dans la copie de la base de données qui se trouve aux autres DCs.


***


Précisons le vocabulaire de ce processus...

La copie de la base de donnée s'appelle "replica". On pourrait traduire ce mot par "copie exacte". Dans le lexique technique, on écrit simplement "réplique".

Le verbe  "replicate" désigne l'action de "reproduire" les changements effectués dans une copie de la base de données dans les autres copies de la base de données.

Le nom "replication" se traduit en général par "reproduction" mais encore une fois, nous verrons simplement "réplication" dans la documentation technique française.


***


L'outil REPADMIN (ou repadmin) permet de voir l'état de la réplication et aussi de déclencher le processus de façon manuelle au besoin. C'est le sujet de cet article.

Avant de présenter les commandes "repadmin" elles-mêmes (il s'agit d'un outil de ligne de commande), je crois utile d'expliquer comment la base de données Active Directory se ségmente en parties distinctes, et propres à faire l'objet d'une réplication indépendante des autres.

La base de donnée Active Directory existe sous la forme d'un fichier nommé NTDS.DIT, associé, en fait, à d'autres fichiers que je ne présenterai pas ici. En effet, je veux me concentrer sur l'outil "repadmin" et ne pas faire une présentation globale d'Active Directory. En outre, je vais supposer, chez le lecteur, une assez bonne connaissance d'Active Directory. Dans le cas contraire, je l'inviterais à consulter d'autres sources pour se mettre à jour.

Je voulais donc préciser que la base de données se divise en partitions qu'on appelle aussi des contextes de nommage (naming contexts - NC):

1 - Domain NC : DC=machlinkit,DC=biz
2 - Configuration NC : CN=Configuration,DC=machlinkit,DC=biz
3 - Schema NC : CN=Schema,CN=Configuration,DC=machlinkit,DC=biz
4 - DNS Application partition (domain) : DC=DomainDnsZones,DC=machlinkit,DC=biz
5 - DNS Application partition (forest) : DC=ForestDnsZones,DC=machlinkit,DC=biz


Voici une description sommaire de chacune de ces partitions:
  1. La partition de domaine contient tous les objets comme les utilisateurs, groupes, ordinateurs.
  2. La partition d'entreprise contient des données sur les sites et les services, notamment sur le système de messagerie Exchange (s'il est présent).
  3. La partition de schéma contient des modèles pour les objets, définissant les types d'objets qui peuvent exister dans le domaine ainsi que les propriétés de ces objets.
  4. Cette parition existe si DNS est intégré à Active Directory et les enregistrements DNS qu'elle contient sont répliqués à l'étendue du domaine.
  5. Cette parition existe si DNS est intégré à Active Directory et les enregistrements DNS qu'elle contient sont répliqués à l'étendue de la forêt.


Ces précisions faites, je vais passer à la présentation des commandes "repadmin" que je trouve les plus utiles. Pour des renseignements encore plus complets, je renvoie le lecteur à la documentation Microsoft à ce sujet, soit en anglais, soit en français. Une simple recherche pour "repadmin" devrait donner des liens aux articles Microsoft officiels.

Note: mon réseau d'essai ne compte que 2 DC ("DC3" et "DC4") de sorte que l'affichage est assez simple. L'affichage des résultats dans un domaine avec d'autres DCs serait plus complexe.



repadmin /replsum

Cette commande affiche, le cas échéant, le nombre d'échecs de réplication. Dans l'exemple ci-dessous, aucun échec n'a été enregistré. Les colonnes ne s'alignent pas tout à fait dans l'interface française. Si on s'en rapporte à l'interface anglaise d'origine, nous devrions lire "nombre d'échecs" (0), "nombre total de partitions répliquées" (5) et "pourcentage d'erreur" (0). Obtenir de tels résultats est bon signe.


C:\>repadmin /replsum
Heure de début du résumé de la réplication : 2015-11-07 19:57:36

Début de la collecte des données pour le résumé de la réplication ;
cette opération peut prendre un certain temps :
  .....
DSA source             différence max    nb échecs %%   erreur
 DC3                       06m:42s    0 /   5    0
 DC4                       06m:45s    0 /   5    0

DSA de destination     différence max    nb échecs %%   erreur
 DC3                       06m:45s    0 /   5    0
 DC4                       06m:42s    0 /   5    0





repamin /showrepl

Cette commande fournit des détails plus spécifiques sur le DC et ses partitions:


C:\>repadmin /showrepl

Repadmin : exécution de la commande /showrepl sur le contrôleur de domaine complet localhost
Default-First-Site-Name\DC4
Options DSA : IS_GC
Options de site : (none)
GUID de l'objet DSA : 58d00eef-a083-47a5-9cf7-d854ac13bf79
ID de l'invocation DSA : d6e3c414-ab12-4d71-a3bc-135aba5ac84c

=== INSTANCES VOISINES ENTRANTES ==================================

DC=machlinkit,DC=biz
    Default-First-Site-Name\DC3 via RPC
        GUID de l'objet DSA : 75a4a675-5ee2-40c6-b693-718d57461eeb
        La dernière tentative, le 2015-11-07 19:58:23, a réussi.

DC=machlinkit,DC=biz
    Default-First-Site-Name\DC3 via RPC
        GUID de l'objet DSA : 75a4a675-5ee2-40c6-b693-718d57461eeb
        La dernière tentative, le 2015-11-07 19:50:54, a réussi.

CN=Schema,CN=Configuration,DC=machlinkit,DC=biz
    Default-First-Site-Name\DC3 via RPC
        GUID de l'objet DSA : 75a4a675-5ee2-40c6-b693-718d57461eeb
        La dernière tentative, le 2015-11-07 19:50:54, a réussi.

DC=DomainDnsZones,DC=machlinkit,DC=biz
    Default-First-Site-Name\DC3 via RPC
        GUID de l'objet DSA : 75a4a675-5ee2-40c6-b693-718d57461eeb
        La dernière tentative, le 2015-11-07 19:50:54, a réussi.

DC=ForestDnsZones,DC=machlinkit,DC=biz
    Default-First-Site-Name\DC3 via RPC
        GUID de l'objet DSA : 75a4a675-5ee2-40c6-b693-718d57461eeb
        La dernière tentative, le 2015-11-07 19:50:54, a réussi.



Que veut dire tout cela ?

Nous apprenons que le DC est aussi un catalogue global (Options DSA : IS_GC).

Le "GUID de l'objet DSA" est celui du contrôleur de domaine lui-même et permet son identification parmi les autres DCs, et cela même si le DC est renommé. Rien ne changera ce GUID, même pas une restauration de la base de données Active Directory au DC en question.

"ID de l'invocation DSA" identifie la copie de la base de données Active Directory de ce DC. Chaque copie de la base de données a le sien propre. A la différence du GUID de l'objet DSA (pour le DC), l'ID de la base de données change en cas de restauration de la base de données.


Pour résumer (avec les termes anglais originaux):

- DSA object GUID -> le contrôleur de domaine (DC)
- DSA invocationID -> la base de données


Note : pour être tout à fait précis, le GUID de l'objet DSA identifie l'objet "NTDS Settings" du contrôleur de domaine :

CN=NTDS Settings,CN=DC3,CN=Servers,CN=Site-1,CN=Sites,CN=Configuration, DC=machlinkit,DC=biz


Ensuite, nous voyons affiché l'état de la réplication de chacune des cinq partitions (ou contextes de nommage) présentées plus haut.

Pour chaque partition, nous voyons le site du contrôleur de domaine partenaire (un seul dans mon réseau d'essai), le GUID de ce DC et finalement l'heure et le résultat de la dernière réplication.

Note : il convient de garder ces faits à l'esprit :
  1. Seuls les changements réalisés depuis la dernière réplication font l'objet de la réplication en cours. Les données déjà reproduites dans les autres bases de données ne font pas l'objet d'une nouvelle réplication - ou d'une réplication continuelle.
  2. Seuls les attributs (ou propriétés) des objets modifiés font l'objet d'une réplication et non pas tout l'objet (sauf au moment de sa création). Cela évite de recopier tout l'objet vers les autres DC quand seulement un simple détail vient de changer (un chiffre du numéro de téléphone par exemple).
  3. Par défaut, chaque DC tire vers lui les changements à reproduire dans sa copie de la base de données, depuis les autres DCs, au lieu de pousser les changements effectués localement vers ces DCs. En anglais, c'est l'opposition entre PULL et PUSH (tirer vers soi au lieu de pousser vers les autres). Il pourrait être utile de garder cette distinction à l'esprit quand nous verrons les commandes pour forcer une réplication manuelle entre DCs. 



repadmin /replicate

Cette commande force la réplication entre la source (DC4 dans mon exemple) et la destination (DC3).

Tenez bien compte de la syntaxe :

repadmin /replicate DestDC SrcDC NC

Ou bien...

repadmin /replicate DC_Destination DC_Source Naming_Context

Et Tenez bien compte du sens de la réplication :

DC3 <- DC4


Cela donne ce qui suit pour les cinq partitions que nous avons présentées plus haut :

C:\>repadmin /replicate DC3 DC4 dc=machlinkit,dc=biz
La synchronisation entre DC4 et DC3 a réussi.

C:\>repadmin /replicate DC3 DC4 cn=configuration,dc=machlinkit,dc=biz
La synchronisation entre DC4 et DC3 a réussi.

C:\>repadmin /replicate DC3 DC4 cn=schema,cn=configuration,dc=machlinkit,dc=biz
La synchronisation entre DC4 et DC3 a réussi.

C:\>repadmin /replicate DC3 DC4 dc=DomainDNSZones,dc=machlinkit,dc=biz
La synchronisation entre DC4 et DC3 a réussi.

C:\>repadmin /replicate DC3 DC4 dc=ForestDNSZones,dc=machlinkit,dc=biz
La synchronisation entre DC4 et DC3 a réussi.


Quelques remarques...

  • Nous pouvons mettre le FQDN du DC, DC3.machlinkit.biz, ou simplement DC3.
  • Nous pouvons mettre "dc" ou "DC" ainsi que "cn" ou "CN".


Pour forcer la réplication dans l'autre sens, nous inversons simplement la position des DCs dans la commande, par exemple :

C:\>repadmin /replicate DC4 DC3 dc=machlinkit,dc=biz




repamin /syncall

Cette commande déclenche la réplication entre le DC spécifié et tous les partenaires de ce DC. Encore une fois, le DC "tire" les données à répliquer vers lui-même à partir de ses partenaires.

Il faut préciser aussi la partition (ou contexte de nommage - naming context).

Dans mon réseau, nous n'avons que 2 contrôleurs de domaine, ce qui fait que le résultat obtenu est le même qu'en utilisant le paramètre /replicate.


Voici quelques exemples :

C:\>repadmin /syncall DC4 dc=machlinkit,dc=biz
Synchronisation de la partition : dc=machlinkit,dc=biz
MESSAGE DE RAPPEL : La réplication suivante est en cours :
    À partir de : 75a4a675-5ee2-40c6-b693-718d57461eeb._msdcs.machlinkit.biz
    Vers....... : 58d00eef-a083-47a5-9cf7-d854ac13bf79._msdcs.machlinkit.biz
MESSAGE DE RAPPEL : La réplication suivante s'est terminée correctement :
    À partir de : 75a4a675-5ee2-40c6-b693-718d57461eeb._msdcs.machlinkit.biz
    Vers....... : 58d00eef-a083-47a5-9cf7-d854ac13bf79._msdcs.machlinkit.biz
MESSAGE DE RAPPEL : Synchronisation totale terminée.
Synchronisation totale effectuée sans erreur.


C:\>repadmin /syncall DC4 cn=configuration,dc=machlinkit,dc=biz
Synchronisation de la partition : cn=configuration,dc=machlinkit,dc=biz
MESSAGE DE RAPPEL : La réplication suivante est en cours :
    À partir de : 75a4a675-5ee2-40c6-b693-718d57461eeb._msdcs.machlinkit.biz
    Vers....... : 58d00eef-a083-47a5-9cf7-d854ac13bf79._msdcs.machlinkit.biz
MESSAGE DE RAPPEL : La réplication suivante s'est terminée correctement :
    À partir de : 75a4a675-5ee2-40c6-b693-718d57461eeb._msdcs.machlinkit.biz
    Vers....... : 58d00eef-a083-47a5-9cf7-d854ac13bf79._msdcs.machlinkit.biz
MESSAGE DE RAPPEL : Synchronisation totale terminée.
Synchronisation totale effectuée sans erreur.



  • "75a4a675-5ee2-40c6-b693-718d57461eeb" est le "DSA Object GUID" de DC3, le partenaire de réplication de DC4.
  • "58d00eef-a083-47a5-9cf7-d854ac13bf79" est le "DSA Object GUID" de DC4 lui-même (le DC auquel nous nous trouvons).



Ces GUIDs de l'objet DSA existent aussi sous la forme d'un enregistrement CNAME dans la zone msdcs.machlinkit.biz :




***

Et voici quelques astuces....

Si nous voulons faire répliquer toutes les partitions (tous les contextes de nommage), sans devoir spécifier chacune, nous pouvons utiliser le paramètre "A". Je ne reproduis pas ici le rendu, assez prolifique.


Si nous voulons voir le "nom distingué" (Distinguished Name - DN) des partenaires de réplication, nous utilisons le paramètre "d" :

C:\>repadmin /syncall /d DC4 dc=machlinkit,dc=biz
Synchronisation de la partition : dc=machlinkit,dc=biz
MESSAGE DE RAPPEL : La réplication suivante est en cours :
    À partir de : CN=NTDS Settings,CN=DC3,CN=Servers,CN=Site-1,CN=Sites,CN=Configuration,DC=machlinkit,DC=biz
    Vers....... : CN=NTDS Settings,CN=DC4,CN=Servers,CN=Site-1,CN=Sites,CN=Configuration,DC=machlinkit,DC=biz
MESSAGE DE RAPPEL : La réplication suivante s'est terminée correctement :
    À partir de : CN=NTDS Settings,CN=DC3,CN=Servers,CN=Site-1,CN=Sites,CN=Configuration,DC=machlinkit,DC=biz
    Vers....... : CN=NTDS Settings,CN=DC4,CN=Servers,CN=Site-1,CN=Sites,CN=Configuration,DC=machlinkit,DC=biz
MESSAGE DE RAPPEL : Synchronisation totale terminée.
Synchronisation totale effectuée sans erreur.


Enfin, si je veux pousser un changement à Active Directory vers les autres partenaires du DC local, je peux recourir au paramètre "P" :

C:\>repadmin /syncall /P DC4 dc=machlinkit,dc=biz
Synchronisation de la partition : dc=machlinkit,dc=biz
MESSAGE DE RAPPEL : La réplication suivante est en cours :
    À partir de : 58d00eef-a083-47a5-9cf7-d854ac13bf79._msdcs.machlinkit.biz
    Vers....... : 75a4a675-5ee2-40c6-b693-718d57461eeb._msdcs.machlinkit.biz
MESSAGE DE RAPPEL : La réplication suivante s'est terminée correctement :
    À partir de : 58d00eef-a083-47a5-9cf7-d854ac13bf79._msdcs.machlinkit.biz
    Vers....... : 75a4a675-5ee2-40c6-b693-718d57461eeb._msdcs.machlinkit.biz
MESSAGE DE RAPPEL : Synchronisation totale terminée.
Synchronisation totale effectuée sans erreur.

Remarquez bien le changement de sens de la réplication en observant avec soin les GUIDs respectifs.

***

Pour une liste exhaustive de tous les paramètres pour REPADMIN, consulter cette page (qui semble n'exister qu'en version originale anglaise) :

Syntaxe REPADMIN


***


C'est la fin de la première partie de cette série d'articles au sujet de REPADMIN. Dans la seconde partie, je présenterai encore quelques commandes et ferai encore quelques remarques sur la réplication Active Directory.





No comments:

Post a Comment