Suite à la lecture du blogue sur la haute disponibilité dans SQL Server pour AX, je voulais expérimenter la solution Database Mirroring dans un environnement Dynamics AX 2012. En fait, je voulais savoir comment un AOS réagit lorsque la base de données principale d’un miroir tombe en panne. Est-ce que l’AOS s'éteint, est-ce que les utilisateurs sont déconnectés?
Configuration SQL
J'ai configuré un environnement SQL avec trois serveurs pour obtenir un miroir de type High-Safety Mode with Automatic Failover (Lien MSDN). Mis à part le serveur principal et secondaire, il y a aussi un serveur Witness dans l'architecture. Son rôle est de détecter une panne au sein du miroir et d'effectuer automatiquement le basculement de la responsabilité des bases de données vers mon serveur miroir en cas de défaillance du serveur principal.
Avec Dynamics Ax 2012, il est important de noter que j'ai configuré les deux bases de données AX en mode miroir : MicrosoftDynamicsAX et MicrosoftDynamicsAXBaseline.
Configuration AOS
J’ai configuré le service d’AOS afin qu’il se connecte sur mes bases de données situées sur le serveur principal. Il est impossible de configurer l’AOS pour spécifier le serveur miroir.
Test
Le démarrage de l’AOS fonctionne très bien, ensuite j’ouvre un client AX et j’effectue quelques opérations de routine. Je veux maintenant créer une panne sur mon serveur principal. Il existe plusieurs détections de défaillances dans une configuration miroir (Lien MSDN). Afin de simuler une défaillance, j’ai désactivé la carte réseau du serveur principal. Immédiatement, le serveur Witness a détecté le problème et a assigné la responsabilité de mes bases de données au serveur secondaire. Pendant le transfert, je suis incapable de naviguer à l'intérieur de mon client AX, mais après quelques secondes mon client AX fonctionne de nouveau et je peux effectuer des transactions, comment est-ce possible ?
Transparent Client Redirect
L’AOS utilise SQL Native Client 10.0 pour se connecter sur les bases de données. SNAC profite de la fonctionnalité Transparent Client Redirect qui consiste à mettre en cache les informations de connexion du serveur principal, mais aussi du serveur miroir ! Lorsque la connexion entre l’AOS et le serveur principal est brisée, SNAC redirige automatiquement la connexion vers le serveur de miroir sans aucune manipulation.
Finalement, l'AOS garde sa connexion avec la base de données puisque SNAC s'occupe de la redirection vers le miroir. Donc, le service AOS ne s'éteint pas et les clients AX restent connectés avec l'AOS ! Toutefois, entre la période de temps où la défaillance survient et le transfert de la responsabilité des bases de données vers le serveur secondaire soit terminé, mon client AX est non fonctionnel et peut émettre une erreur de connexion à la BD SQL, mais sachant que SNAC utilise A.C.I.D comme mode de fonctionnement, les transactions en cours lors de la panne sont renversées.