La majeure partie du temps, le service cluster subit les défaillances qui interviennent et réagit dans la mesure des moyens qui lui sont donnés. L’objectif de cette session est de comprendre comment utiliser les traces et outils de Windows pour identifier quel composant ou quel facteur a causé un dysfonctionnement au sein d’un cluster et comment mettre en place un plan d’action visant à anticiper d’éventuels futurs problèmes.
2. Comment identifier la cause
réelle des problèmes
impactant un cluster de
basculement Windows
9 Février 2012
Guillaume Ducroix
Sr Support Escalation Engineer
Microsoft
3. Agenda
Composants et fonctionnement
du cluster Logging
Outils
Quelques exemples… Méthodologie
6. Composants du cluster
Clussvc.exe
Host Quorum Messaging Database
manager Manager Manager
Membershi Topology
p Manager Manager
Security Core Object
Manager Manager
Network Fault Tolerant Driver
7. Composants du cluster
Messaging
Communication entre les nœuds
Good Enough Multicast [GEM]
Causal Multicast [CM]
Multicast-Request-Reply [MRR]
Assuré par le Global Update Host manager Quorum Messaging Database
Manager [GUM] Manager Manager
Canal de
communication
principal utilisé pour
mettre à jour les états Membership Topology
des composants du Manager Manager
cluster sur tous
les nœuds :
TM, MM, DM et Security Core Object
Resource Control Manager Manager
Manager
Les mises à jours
sont sérialisées
et atomiques Network Fault Tolerant Driver
8. Composants du cluster
Object Manager [OM]
Maintien la relation entre les objets du cluster
dans une base de données stockée en
mémoire
Host manager Quorum Messaging Database
Permet de router les Manager Manager
messages
correctement Membership
Manager
Topology
Manager
entre les nœuds
Objets : ressources, Security
Manager
Core Object
Manager
groupes de
ressources, Network Fault Tolerant Driver
nœuds, etc…
9. Composants du cluster
Host manager [HM]
Etabli les connexions réseaux entre les
nœuds, contrôle les processus de Form et de
Join et génère les
Host manager Quorum Messaging Database
notifications Manager Manager
d’échec de nœuds
C’est lui qui gère Membership
Manager
Topology
Manager
l’endpoint
permettant de Security Core Object
Manager Manager
contacter le service
cluster (TCP 3343)
Network Fault Tolerant Driver
10. Composants du cluster
Membership Manager [MM]
Prend en charge les changements
dynamiques d’appartenance au cluster
(notamment les REGROUP)
Host manager Quorum Messaging Database
Provisionne les Manager Manager
objets maintenus
par Membership
Manager
Topology
Manager
l’Object Manager
Security Core Object
Manager Manager
Join Policy Manager
[JPM] Network Fault Tolerant Driver
11. Composants du cluster
Topology Manager [TM]
Gère tous les composants réseau :
Network Manager [NM] : les réseaux du
cluster Host manager Quorum Messaging Database
Manager Manager
Interface
Manager [IM] :
Membership Topology
les interfaces Manager Manager
réseau
Il fait des appels Security
Manager
Core Object
Manager
au processus de
configuration Network Fault Tolerant Driver
réseau [ClNet]
12. Composants et fonctionnement
du cluster
Database Manager [DM]
Contrôle la base de données contenant la
configuration du cluster (registre)
Gère les mises à jour
de la configuration Host manager Quorum Messaging Database
Manager Manager
du cluster
Utilisation de
Common Log Membership
Manager
Topology
Manager
File System
(CLFS)
S’assure de mettre
Security Core Object
Manager Manager
à jour le réplica
local et/ou le réplica Network Fault Tolerant Driver
du disque quorum
13. Composants du cluster
Quorum Manager [QM]
Détermine si le quorum est “atteint”
Gère les activités liées au quorum
Host manager Quorum Messaging Database
Manager Manager
Membership Topology
Manager Manager
Security Core Object
Manager Manager
Network Fault Tolerant Driver
14. Composants du cluster
Security Manager [SM]
Prend en charge la signature et l’encryption de
toutes les communications au sein du cluster
Gère les contextes
de sécurité pour Host manager Quorum Messaging Database
Manager Manager
NETFT et les niveaux
de communications
user-mode Membership Topology
Manager Manager
Security Validator [SV]
Security Core Object
Valide le Manager Manager
SecurityLevel de la
connectivité Network Fault Tolerant Driver
15. Composants du cluster
Network Fault Tolerant Driver [NETFT]
Fournit une communication avec tolérance de
panne entre les nœuds du cluster
Host manager Quorum Messaging Database
Manager Manager
Membership Topology
Manager Manager
Security Core Object
Manager Manager
Network Fault Tolerant Driver
16. Composants du cluster
Resource Control Manager [RCM]
Le RCM est externe au cluster
Canal de communication principal utilisé pour
mettre à jour les états des composants du
cluster sur tous les nœuds
Implémente les mécanismes de bascule et les
stratégies du service cluster
Maintien la consistance des dépendances
entre les ressources
Gère l’isolation des ressources par la création
de RHS
17. Composants du cluster
Application 1 Application 2
Resource Monitor (RHS)
Cluster Service Resource DLL Resource DLL
1 2
Groupe
Ressource 1
Resource Control Manager
Ressource 2
Ressource 3 Resource Monitor (RHS)
Resource DLL
3
Application 3
18. Fonctionnement du cluster
Cluster Windows
Le principe est de rendre hautement disponible une
application ou un service en permettant leur "bascule"
d'un serveur à un autre en cas de défaillance d'un
composant
Ce n'est pas Windows que l'on rend hautement
disponible
Le quorum évite le partitionnement et la corruption
Il est déterminé par des votes
Un votant peut être un nœud ou un témoin
(uniquement dans le mode Node and Disk Majority)
Chaque votant représente 1 voix
20. Logging – Journaux
d’évènements
Evènements cluster
Niveau System Channel Operational Channel
Critical
Error
Warning
Information
System channel Operational channel
21. Logging – Journaux
d’évènements
Debugging channels
Désactivés par défaut
Peuvent être activés pendant l’analyse d’un
dysfonctionnement
Visibles lorsque Show Analytic and Debug Logs est
coché dans le menu View
22. Logging – Journaux
d’évènements
Il n’y a plus de fichier « cluster.log » au format texte
C’est, depuis Windows Server 2008, une trace ETW (Event Tracing for
Windows) qui enregistre les évènements dans un format structuré
Le logging du cluster est assuré par une Event Trace Session
Microsoft-Windows-FailoverClustering
Les fichiers .ETL sont stockés ici :
%WinDir%System32winevtlogs
Pour obtenir ce tracing au format texte, équivalent au cluster.log, il faut
exécuter la commande CLUSTER.EXE ou une commande Powershell :
CLUSTER.EXE LOG /G /COPY:"C:Temp"
Powershell : Get-ClusterLog -Destination "C:Temp"
23. Logging – Journaux
d’évènements
Paramétrage :
La taille maximale par défaut d’une trace est
de 100MB
Le niveau de détail par défaut est de 3
Niveaux de détail
Level Error Warning Info Verbose Debug
0
(désactivé)
1
2
3
4
5
24. Logging – Journaux
d’évènements
Le tracing ETW utilise 3 fichiers ETL
Un fichier ETL est utilisé pour la durée d’uptime d’un nœud
Un nouveau fichier ETL est utilisé à chaque démarrage d’un nœud
ETW utilise le prochain fichier ETL parmi les 3
Chaque fichier ETL a une taille maximum (cluster log size) et est circulaire
S’assurer que les traces puissent capturer 72 heures d’évènements
Dépend de la volubilité de l’application en cluster
Demande donc une supervision du cluster log à la mise en place du
cluster pour affiner sa taille maximum
La génération du cluster.log au format texte concatène le contenu des 3
fichiers ETL
Le résultat peut prêter à confusion
25. Logging – Cluster log
01/01 07/01 09/01 13/01 19/01 25/01
Redémarrag
e
Max size Redémarrag
e
Génération
Max size
A la génération du cluster.log, les périodes suivantes seront couvertes :
Du 03/01 au 09/01 (trace #1)
Du 09/01 au 13/01 (trace #2)
Du 18/01 au 25/01 (trace #3)
http://blogs.technet.com/b/windowsinternals/archive/2009/06/10/le-cluster-logging-
sous-windows-server-2008.aspx
26. Logging – Cluster log
Anatomie du cluster log
Process ID / Thread ID Date / Heure (GMT) Niveau Composant cluster
00001520.00001d18::2012/01/22-09:40:08.871 ERR [RES] Volume Shadow Copy Service Task
<ShadowCopyVolume{9FCC985C-326F-11DF-AF1F-0026554A802A}>: Failed to make the new
task persistent. status 0x80090016.
Return/Status code de la
commande
Codes de statut des objets du cluster
http://support.microsoft.com/kb/286052/en-us
29. Outils
Pour collecter les informations nécessaires à l’analyse
MSDT (Microsoft Support Diagnostic Tool)
MPS Reports PFE
http://www.microsoft.com/downloads/en/details.aspx?familyid=00AD0E
AC-720F-4441-9EF6-EA9F657B5C2F&displaylang=en
Pour l’analyse des logs
Observateur d’évènements
FINDSTR
Notepad
Cluster Diagnostics and Verification Tool (ClusDiag)
http://www.microsoft.com/download/en/details.aspx?displaylang=en&i
d=18479
TextAnalysisTool.NET
http://cesso.org/Samples/TextAnalysisTool.NET/TextAnalysisTool.NET.z
ip
30. Outils
Validate
Disponible depuis la console Failover Cluster
Peut être utilisé comme outil de diagnostic
32. Méthodologie – Collecte
d’information
Toujours collecter les informations sur tous les
nœuds du cluster (MPS Reports, …)
Au minimum, générer les cluster logs le plus
tôt possible
Noter l’heure approximative du
dysfonctionnement (ou du début du
dysfonctionnement)
Noter les nœuds et ressources impliqués
Noter les actions manuelles réalisées pour
rétablir la situation (et l’heure approximative
33. Méthodologie - Analyse
Le cluster.log est verbeux et complexe, ne pas
commencer par ce log
A l’aide des journaux d’évènements système
1. Etablir la chronologie des évènements cluster de
tous les nœuds dans la période de temps où le
dysfonctionnement est apparu
Cela permet de savoir où le problème est apparu
en premier et d’identifier les évènements satellites
2. Identifier les évènements d’autres sources dans la
même fenêtre de temps et ceux qui sont antérieurs
Ces premières données permettent de savoir quel est
le type de problème (réseau, stockage, ressource,
performance, …) et sur quel nœud commencer à
chercher
34. Méthodologie - Analyse
Rester objectif et lucide : ne pas s’attarder sur les
symptômes et se focaliser sur la recherche de la
cause
Si les mêmes évènements reviennent,
s’intéresser à la première occurrence
Les évènements de niveau Information (offline,
online, move, …) sont inscrits dans le channel
opérationnel
Event Viewer/Application and Services
Logs/Microsoft/Windows/FailoverClustering
35. Méthodologie - Analyse
Si les évènements cluster n’ont pas permis
d’identifier le problème
Dans un premier temps, s’intéresser aux
évènements d’autres sources :
Réseau : redirecteurs, service serveur,
drivers cartes, …
Stockage : disque, drivers HBA, MPIO,
DSM, …
36. Méthodologie - Analyse
Si le journal d’évènement n’a toujours pas permis
d’identifier la cause du dysfonctionnement, alors il est
temps de recourir au cluster log
Utiliser la chronologie établie précédemment
Commencer par le cluster log du nœud où le
problème est apparu en premier
Se positionner dans la période de temps où le
problème est apparu
Remonter le temps en cherchant les mots clés
ERR et failed
Remonter ligne par ligne pour être sûr de
comprendre l’opération en cours et identifier où
le dysfonctionnement commence
37. Méthodologie - Analyse
00001520.00001d18::2012/01/22-09:40:08.871 ERR [RES] Volume Shadow Copy Service Task <ShadowCopyVolume{9FCC985C-
326F-11DF-AF1F-0026554A802A}>: Failed to make the new task persistent. status 0x80090016.
00001520.00001d18::2012/01/22-09:40:08.871 ERR [RES] Volume Shadow Copy Service Task <ShadowCopyVolume{9FCC985C-
326F-11DF-AF1F-0026554A802A}>: OnlineThread: Error 2148073494 bringing resource online.
00001520.00001d18::2012/01/22-09:40:08.871 ERR [RHS] Online for resource ShadowCopyVolume{9FCC985C-326F-11DF-
AF1F-0026554A802A} failed.
Utiliser NET HELPMSG ou ERR.EXE pour traduire
les codes de
retour :
ERR.EXE
http://www.microsoft.com/download/en/details.aspx
?displaylang=en&id=985
38. Méthodologie
1f4:e70.10/19[07:01:39.482](000000) ERR [QUORUM] Node 1: Fail to form/join a cluster in
6:15.000
1f4:e70.10/19[07:01:39.482](000000) INFO [CORE] Node quorum state is 'Not yet formed or joined a
cluster'. Form/join status with other nodes is as follows:
1f4:e70.10/19[07:01:39.482](000000) INFO [NODE] Node 1: Farthest reported progress joining with
node Noeud2 (id 2) is: Attempt Initial Connection at time 2011/10/19-07:00:52.526: status 10060
Failed to connect to remote endpoint 197.1.1.2:~3343~
1f4:e70.10/19[07:01:39.482](000000) ERR join/form timeout (status = 258)
1f4:e70.10/19[07:01:39.482](000000) DBG join/form timeout: set netft heartbeat interval to 900
seconds
1f4:e70.10/19[07:01:39.482](000000) ERR join/form timeout (status = 258), executing OnStop
1f4:e70.10/19[07:01:39.482](000000) INFO [DM]: Shutting down, so unloading the cluster database.
1f4:e70.10/19[07:01:39.482](000000) INFO [DM] Shutting down, so unloading the cluster database
(waitForLock: false).
1f4:e70.10/19[07:01:39.482](000000) DBG [DM] Unloading Hive, Key RegistryMachineCluster,
discardCurrentChanges true
1f4:e70.10/19[07:01:39.607](000000) ERR FatalError is Calling Exit Process.
ERR 258 = WAIT_TIMEOUT (The wait operation timed out.)
-> Le nœud n’a pas joint le cluster dans le délai maximum imparti : problème de connectivité
réseau ou de disponibilité RPC
39. Méthodologie
778:844.08/22[11:27:20.257](000000) WARN [RCM]
ResourceControl(STORAGE_GET_SHARED_VOLUME_INFO) to Disque du cluster 2
returned 5004.
a50:ba4.08/22[11:28:38.010](000000) WARN [RES] Physical Disk <Disque du cluster
2>: PR reserve failed, status 170
a50:ba4.08/22[11:28:44.016](000000) ERR [RES] Physical Disk <Disque du cluster
2>: Failed to preempt reservation, status 170
a50:ba4.08/22[11:28:44.031](000000) ERR [RES] Physical Disk <Disque du cluster
2>: OnlineThread: Unable to arbitrate for the disk. Error: 170.
a50:ba4.08/22[11:28:44.031](000000) ERR [RES] Physical Disk <Disque du cluster
2>: OnlineThread: Error 170 bringing resource online.
a50:ba4.08/22[11:28:44.031](000000) ERR [RHS] Online for resource Disque du
cluster 2 failed.
ERR 5004 = ERROR_RESOURCE_NOT_ONLINE (The cluster resource is not online.)
ERR 170 = ERROR_BUSY (The requested resource is in use.)
-> Erreur de Persistent Reservation (vérification à faire du côté matériel)
41. Exemples
Dépannage CSV (Cluster Shared Volumes)
Passage en Redirected I/O d’un volume CSV
Un ou plusieurs nœuds ont perdu l’accès au
SAN/LUN
Une sauvegarde compatible CSV est en
cours
Passé manuellement en Redirected I/O
43. Exemples
Dépannage CSV (Cluster Shared Volumes)
Vérifier dans le journal d’évènements Système des problèmes de
connectivité réseau ou d’accès à Active Directory
Vérifier que les services Server et Workstation sont démarrés
Vérifier que tous les réseaux du cluster sont configurés pour
supporter SMB (KB258750 n’est pas adapté au fonctionnement
CSV)
Tester la copie de fichiers depuis le nœud coordinateur et les
autres nœuds vers C:ClusterStorageVolumeX
Lorsque que l’on dépanne un problème de stockage CSV, cela
peut vraiment être un problème réseau
Vérifier la connectivité entre les nœuds (NET USE avec
adresse IP) depuis les nœuds non coordinateurs vers le
nœud coordinateur
Vérifier que NTLM n’est pas désactivé
Vérifier la capacité de s’authentifier auprès d’un contrôleur de
domaine
44. Exemples
Perte de connectivité entre les nœuds (heartbeat)
La communication intra-nœuds est assurée à
travers le port 3343. Chaque nœud échange
périodiquement des datagrammes UDP
séquencés avec chacun des autres nœuds.
Le but est de déterminer si tous les nœuds
fonctionnent correctement et si les liens réseau
sont viables
Ping, Netstat -ano, …
45. Exemples
Perte de connectivité entre les nœuds (heartbeat)
Si une latence réseau est identifiée, on peut jouer
avec les paramétrages suivants:
Paramètre Défaut Plage
SameSubnetDelay 1000 ms 250 – 2000 ms
CrossSubnetDelay 1000 ms 250 – 4000 ms
SameSubnetThreshold 5 3 – 10
CrossSubnetThreshold 5 3 – 10
Attention : modifier ces paramètres ne corrigera
pas un problème réseau existant
46. Exemples
Terminaison de RHS
Comment le cluster gère les ressources qui ne
répondent pas :
1. Le RHS émet un appel vers les ressources
(IsAlive, LooksAlive, Online, Offline,
Terminate, etc…)
2. Si cette ressource ne répond pas (délai de
3mn par défaut), le système de détection
du cluster tente de récupérer la ressource
3. Le processus RHS est redémarré pour
permettre à la ressource d’être elle aussi
redémarrée
47. Exemples
Terminaison de RHS, évènements associés
Event 1230
Cluster resource 'Resource Name' (resource
type '', DLL ‘xxx.dll') either crashed or
deadlocked. The Resource Hosting Subsystem
(RHS) process will now attempt to terminate, and
the resource will be marked to run in a separate
monitor.
Event 1146
The cluster resource host subsystem (RHS)
stopped unexpectedly. An attempt will be made to
restart it. This is usually due to a problem in a
resource DLL. Please determine which resource
48. Exemples
Terminaison de RHS
Le problème est que la ressource n’a pas répondu au cluster
dans le temps imparti (timeout period)
Qu’est-ce qu’essayait de faire la ressource ?
http://support.microsoft.com/kb/914458
Chercher des problèmes ou évènements sous-jacents liés
aux composants gérés par les ressources impliquées :
Physical Disk… éventuel problème avec le stockage
Network Name… éventuel problème avec le réseau,
DNS, authentification
Plus de détails:
http://blogs.technet.com/askcore/archive/2009/11/23/resourc
e-hosting-subsystem-rhs-in-windows-server-2008-failover-
clusters.aspx
http://blogs.msdn.com/clustering/archive/2009/06/27/980616
0.aspx
49. Exemples
Problèmes en mode user : Bug check 0x9E
USER_MODE_HEALTH_MONITOR
Le cluster surveille l’état des composants en mode user
depuis le kernel afin d’identifier d’éventuels hangs
pouvant impacter le fonctionnement du cluster
Afin de récupérer cette situation, le cluster, via NetFT,
force un crash du serveur (bug check 0x9E)
Ce n’est pas un problème cluster, le cluster rapporte un
problème
Analyser le dump généré pour identifier d’éventuelles
occurrences de hang (locks, handles, consommation
mémoire, …)
http://blogs.technet.com/b/askcore/archive/2009/06/12/wh
y-is-my-2008-failover-clustering-node-blue-screening-
with-a-stop-0x0000009e.aspx
51. Ressources
Blog de l’équipe de support Windows
http://blogs.technet.com/windowsinternals
Blog personnel
http://blogs.technet.com/guillaumed
Blog équipe support Windows US
http://blogs.technet.com/askcore
Blog équipe produit clustering
http://blogs.msdn.com/clustering