Translate

dimanche 1 mai 2016

Convertir un DAG classique en DAG sans point d'administration (et vice-versa)

Bonjour,


"It's been a while" (encore :)), comme le disent nos amis anglosaxons...
Aujourd'hui je voulais partager une technique permettant de convertir des groupes de disponibilité de base de données (autrement dit des Database Availability Groups, ou DAG) Exchange d'un mode "classique" (avec point d'administration, adresse IP + enregistrement DNS + objet ordinateur dans l'AD) à un mode "sans point d'administration".
Comme vous le savez, ce mode est supporté et recommandé depuis Exchange Server 2013 SP1/CU4 dès lors que le système d'exploitation utilisé est à la version Windows Server 2012 R2 ou ultérieure (rappel: il n'y a pas de version "ultérieure" supportée pour l'instant puisque Windows Server 2016 est toujours en Preview).
Les DAG sans point d'administration sont 200% recommandés pour des raisons très simples:
  1. Ils permettent d'éviter l'utilisation d'une ou plusieurs adresses IP (groupe du Cluster),
  2. Ils permettent d'éviter l'utilisation d'un objet dans l'AD (Cluster Network Object),
  3. Ils permettent d'éviter l'utilisation d'un enregistrement DNS pour le nom du DAG.
Bref, il permettent d'éviter tous les problèmes potentiels liés à un Cluster Windows classique... :)

La problématique de la conversion est qu'il n'est pas possible de changer de mode lorsque le Cluster Windows est déjà créé. Il s'agit d'une limitation des Clusters Windows et non d'Exchange.

Le principe est donc de partir d'un DAG existant (avec X membres et Y copies) et de supprimer le Cluster Windows sous-jacent, de reconfigurer le DAG puis de recréer le Cluster Windows sous-jacent. Afin d'en arriver là il faut passer par une phase où le DAG existe toujours mais où toute la haute disponibilité des bases de données n'existe plus:
  1. Supprimer toutes les copies de bases de données,
  2. Supprimer tous les membres du DAG.
Et, une fois le DAG reconfiguré, de:
  1. Rejoindre les serveurs au DAG,
  2. Recréer les copies.
L'avantage de cette technique est qu'elle peut s'exécuter à chaud, sans démontage des bases de données. Cependant il existe forcément un état à un instant T pendant lequel il n'existe plus qu'une copie de chaque base de données. Même si ce temps est relativement court (quelques minutes, max 5 tout au plus - le temps de rejoindre les membres et de recréer les copies), cela peut ne pas être jugé acceptable. Si tel est le cas, la seule option est de migrer vers un nouveau DAG. Hélas, cette option n'est pas toujours possible car cela demande de réinvestir.

Pour les personnes ayant donc installé un DAG sur Windows Server 2012 R2 avant Exchange 2013 SP1/CU4, et/ou n'ayant pas initialement voulu "tenter" le mode "DAG sans point d'administration", un peu d'automatisation peu permettre de faire la conversion en un minimum de temps et sans erreur.

Voici donc un petit script permettant d'effectuer la conversion d'un DAG classique vers un DAG sans point d'administration - ce script est aussi capable de faire l'inverse (même si je trouve l’intérêt de faire le chemin inverse limité...).

Le script prend soin de récupérer les paramètres existants du DAG et des copies:

  • mode DAC (DatacenterActivation DagOnly)
  • réseaux du DAG (Database Availabiltiy Group Networks)
  • désactivation puis restauration du Circular Logging (ex: pour les DAGs sans sauvegarde)
  • copies décalées (ReplayLagTime et/ou TruncationLagTime)
  • ordre de préférence d'activation (ActivationPreference)
  • et pour les DAGs Exchange 2016 CU1 ou +, le gestion du ReplayLagMaxDelay
Utilisation:

.\Convert-DatabaseAvailabilityGroup.ps1 -Identity -Verbose -- conversion vers un DAG sans point d'administration

ou 

.\Convert-DatabaseAvailabilityGroup.ps1 -Identity -DatabaseAvailabilityGroupIpAddresses 255.255.255.255 -Verbose -- conversion vers un DAG sans point d'administration

A l'inverse:

.\Convert-DatabaseAvailabilityGroup.ps1 -Identity -DatabaseAvailabilityGroupIpAddresses 0.0.0.0 -Verbose -- conversion vers un DAG avec point d'administration mais utilisant DHCP

.\Convert-DatabaseAvailabilityGroup.ps1 -Identity -DatabaseAvailabilityGroupIpAddresses [, IP2, IP3...] -Verbose -- conversion vers un DAG avec point d'administration et une ou plusieurs adresses IP statiques

Le script est disponible ici.