Citrix DaaS™

Outil de visibilité du cache d’hôte local

Cet article décrit l’outil de visibilité en temps réel du cache d’hôte local (LHC), une solution basée sur PowerShell qui offre une visibilité sur les environnements de cache d’hôte local Citrix. À l’aide de cet outil, vous pouvez surveiller l’état des Cloud Connector, identifier le leader élu en mode LHC, contrôler le mode de panne forcée et interroger les journaux d’événements pour dépanner le comportement du LHC.

Vue d’ensemble

L’outil de visibilité en temps réel du cache d’hôte local (LHC) est une solution complète basée sur PowerShell pour assurer la visibilité dans les environnements de cache d’hôte local Citrix. Il fournit à la fois une interface de ligne de commande et des interfaces utilisateur graphiques simples accessibles depuis le Cloud Connector pour vous permettre de :

  • Découvrir les Cloud Connector dans une zone ou un emplacement de ressources.
  • Identifier le leader élu en mode LHC.
  • Activer ou désactiver le mode de panne forcée sur tous les Cloud Connector de la zone ou de l’emplacement de ressources.
  • Interroger les journaux d’événements de fournisseurs spécifiques et d’ID d’événements.
  • Exécuter des commandes Broker PowerShell sur le leader élu.

Prérequis

Avant de déployer et d’exécuter l’outil de visibilité du cache d’hôte local, assurez-vous que votre environnement répond aux exigences système, aux autorisations et aux exigences de fichiers suivantes.

Configuration système requise

  • Windows Server 2016 ou version ultérieure
  • PowerShell 5.1 ou version supérieure
  • Doit être exécuté sur un Citrix Cloud Connector™
  • Services requis :
    • Service de haute disponibilité Citrix
    • Service Citrix ConfigSync

Autorisations

  • Privilèges d’administrateur sur la machine locale
  • Autorisations d’exécution PowerShell à distance pour tous les Cloud Connectors de la zone
  • Connectivité réseau à tous les Cloud Connectors

Fichiers requis

  • LHCVisibilityTool.ps1 - Module PowerShell principal
  • LHCVisibilityToolGUI.ps1 - Application GUI
  • HighAvailabilityServiceControl.psm1 - Module de contrôle du service HA Citrix

Le script PowerShell de l’interface graphique se trouve à l’emplacement suivant :

C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts
<!--NeedCopy-->

Démarrer

Avant d’exécuter l’outil, définissez la stratégie d’exécution PowerShell à l’aide de l’une des options suivantes :

  • Option 1 : RemoteSigned (plus restrictive) :

     Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
     <!--NeedCopy-->
    
  • Option 2 : Session actuelle uniquement (temporaire) :

     Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
     <!--NeedCopy-->
    

Remarque :

Vous devrez peut-être exécuter PowerShell en tant qu’administrateur pour modifier la stratégie d’exécution. Si vous ne disposez que d’autorisations de niveau utilisateur, utilisez -Scope CurrentUser.

Utiliser l’outil via l’application GUI

L’interface graphique fournit une interface à onglets pour découvrir les Cloud Connectors, contrôler le mode de panne, interroger les journaux d’événements et exécuter des commandes de broker. Après avoir lancé l’outil, sélectionnez une tâche pour accéder à ses instructions :

Lancer l’interface graphique

cd "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts"
.\LHCVisibilityToolGUI.ps1
<!--NeedCopy-->

Lancement de l'interface graphique de l'outil de visibilité LHC

L’outil utilise une disposition à trois onglets avec une barre d’état persistante en bas.

La disposition à trois onglets et la barre d'état persistante en bas de la fenêtre

La barre d’état s’étend sur le bas de la fenêtre et contient :

Élément Description
État de l’opération (gauche) Opération actuelle, ou « Prêt »
État du mode HA Indicateurs de points par connecteur (5 maximum affichés ; « +N autres » si tronqué) ; l’info-bulle au survol affiche la liste complète
Dernière mise à jour Horodatage de la dernière actualisation réussie de l’état HA
Afficher le journal Ouvre le fichier journal de session dans le Bloc-notes

La barre d’état utilise les couleurs suivantes pour indiquer l’état HA :

État Couleur
WorkingNormally Vert
PendingHA Jaune doré
PendingRecovery Orange
InitialHA Rouge
ExtendedHA Rouge
Inconnu / Inaccessible Gris

Découvrir les Cloud Connectors et identifier le leader

Dans l’onglet System Status & Control, cliquez sur Discover and Identify Leader. L’outil détecte et affiche automatiquement le leader élu parmi tous les Cloud Connectors de la zone en utilisant :

  • Analyse du journal d’événements (ID d’événement 3504)
  • Informations PeerStatus et IsElected du Registre
  • Vérification du service local

Onglet État et contrôle du système

Contrôler le mode de panne forcée

Dans l’onglet État et contrôle du système, utilisez les contrôles du mode de panne pour gérer le mode HA dans la zone :

  • Activer le mode de panne forcée :
    • Force tous les Cloud Connectors de la zone à passer en mode HA
    • Utilise le cache d’hôte local pour le courtage
    • Nécessite la synchronisation de la base de données LHC
  • Désactiver le mode de panne forcée :
    • Permet au système de revenir à un fonctionnement normal
    • Se reconnecte au site principal lorsqu’il est disponible

Avertissement :

Ces actions affectent tous les Cloud Connectors de la zone.

Interroger et suivre les journaux d’événements

Dans l’onglet Requête du journal d’événements, configurez les paramètres de requête suivants :

  • Cible : Choisissez parmi :
    • Tous les Cloud Connectors
    • Leader élu uniquement
    • Ordinateur spécifique (entrez le FQDN)
  • Nom du fournisseur : Sélectionnez ou entrez un fournisseur personnalisé :
    • Service de haute disponibilité Citrix
    • Service ConfigSync Citrix
    • Service Broker Citrix
  • ID d’événement : Liste séparée par des virgules (par exemple, 3502,3503,3506)
  • Plage horaire : Filtrez éventuellement par heure de début et de fin
  • Nombre maximal d’événements : Nombre maximal d’événements à récupérer par ordinateur (par défaut : 100)

Utilisez les boutons suivants pour travailler avec les événements :

  • Interroger les événements : Interroge les journaux d’événements à l’aide des paramètres de requête configurés.
  • Événements HA passés : Recherche les limites de début et de fin du LHC (événements 3502, 3503, 3508) à partir des paramètres de requête configurés et affiche l’événement de résumé final pour donner un aperçu.
  • Effacer les événements : Efface la liste des événements, le panneau de détails et l’état de suivi.
  • Exporter le rapport : Crée des statistiques à partir des événements interrogés dans l’interface graphique et les enregistre sous forme de fichier texte. (Utilise la sortie du bouton Afficher les statistiques d’événements.)

Onglet Requête du journal des événements

Le suivi en direct se comporte comme suit :

  • Le suivi en direct surveille les nouveaux événements récapitulatifs toutes les 120 secondes tant que le LHC est actif.
  • Lorsque le suivi en direct commence, il détermine l’heure de début du mode LHC en se référant à l’événement 3502 et répertorie tous les événements apparus depuis le début.
  • Le suivi en direct peut être arrêté manuellement ou automatiquement lorsque le mode LHC se termine.

La section inférieure propose deux vues principales :

  • Volet gauche :
    • Les événements sont répertoriés chronologiquement avec les détails clés (numéro d’événement, heure, ID, type).
    • Chaque événement est visuellement distingué par une couleur basée sur son type, en suivant la référence de l’ID d’événement.
    • La sélection d’un événement affiche des informations supplémentaires à son sujet.
  • Volet droit : Deux options d’affichage vous permettent de basculer entre les résumés statistiques et les informations détaillées de l’événement sélectionné :
    • Afficher les détails de l’événement : Détails complets de l’événement choisi.
    • Afficher les statistiques d’événements : Statistiques récapitulant les événements en mode HA, y compris les métriques tabulaires et les graphiques à barres ASCII des événements récapitulatifs (3507).

L’image suivante montre la vue des détails de l’événement :

Vue des détails de l'événement

L’image suivante montre la vue des statistiques d’événements :

Vue des statistiques d'événements

Référence : ID d’événements HA et ConfigSync

Les sections suivantes répertorient les ID d’événements courants par fournisseur.

Service de haute disponibilité Citrix :

ID d’événement Description
3502 Mode HA activé (broker élu)
3503 Hors mode HA (opérations normales reprises)
3506 Mode HA activé (broker non élu)
3507 Résumé périodique du mode HA (broker élu)
3508 Fin du résumé du mode HA (broker élu)

Service Citrix ConfigSync :

ID d’événement Description
503 Processus de synchronisation démarré
504 Synchronisation terminée avec succès
505 Échec de la synchronisation
507 Synchronisation abandonnée en raison du mode HA
510 Aucune donnée de configuration reçue
517 Problème de communication avec le broker principal
518 ConfigSync annulée (service HA non exécuté)

Exécuter les commandes du broker

Dans l’onglet Commandes du broker, les commandes prédéfinies sont :

  • Get-BrokerMachine : Récupérer les informations VDA/machine
  • Get-BrokerSession : Récupérer les sessions actives
  • Get-BrokerDesktopGroup : Récupérer les groupes de mise à disposition
  • Get-BrokerCatalog : Récupérer les catalogues de machines
  • Get-BrokerApplication : Récupérer les applications publiées

Onglet Commandes du broker

Conseil :

Utilisez la zone de texte du filtre pour rechercher simultanément dans toutes les colonnes de chaîne un élément spécifique dans les résultats.

Pour exécuter une commande personnalisée :

  1. Saisissez une commande, par exemple Get-BrokerMachine -MaxRecordCount 2.
  2. Spécifiez éventuellement les propriétés à renvoyer (séparées par des virgules).
  3. Cliquez sur Exécuter.

Commande personnalisée

Remarque :

Les commandes du broker fournissent des informations récentes de la base de données LHC lorsque :

  • Le système est en mode LHC.
  • Un leader élu a été identifié.
  • La base de données LHC est disponible.

Afficher les journaux de session

Pour ouvrir le journal de session actuel, cliquez sur Afficher le journal dans la barre d’état. Le journal s’ouvre dans le Bloc-notes.

Chaque session crée un fichier journal à l’emplacement %TEMP%\LHCVisibilityTool_<yyyyMMdd_HHmmss>.log. Les messages sont également écrits dans la console hôte avec un code couleur.

Utiliser l’outil via la ligne de commande

En plus de l’interface graphique, vous pouvez exécuter l’outil directement depuis PowerShell. Après avoir importé le module, utilisez les commandes suivantes pour effectuer chaque tâche. Sélectionnez une tâche pour accéder à sa commande :

Lancer l’outil en ligne de commande

cd "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts"
. .\LHCVisibilityTool.ps1
<!--NeedCopy-->

Découvrir les Cloud Connectors

$connectors = Get-CloudConnectorsInZone
$connectors | ForEach-Object { Write-Host $_ }
<!--NeedCopy-->

Identifier le leader élu

$leader = Get-ElectedLeader
Write-Host "Elected Leader: $leader"
<!--NeedCopy-->

Obtenir l’état de la panne

$states = Get-OutageState
foreach ($connector in $states.Keys) {
    Write-Host "$connector : $($states[$connector].State)"
}
<!--NeedCopy-->

Interroger les journaux d’événements

Interroger tous les Cloud Connectors pour les événements HA :

$results = Get-LHCEventLogs -EventID @(3502, 3503, 3506) `
    -ProviderName "Citrix High Availability Service" `
    -StartTime (Get-Date).AddDays(-7) `
    -EndTime (Get-Date) `
    -MaxEvents 100

# Display results
foreach ($computer in $results.Keys) {
    Write-Host "`n=== $computer ==="
    if ($results[$computer].Success) {
        $results[$computer].Events | Format-Table TimeCreated, Id, Message -AutoSize
    } else {
        Write-Host "ERROR: $($results[$computer].Error)" -ForegroundColor Red
    }
}
<!--NeedCopy-->

Interroger uniquement le leader élu :

$results = Get-LHCEventLogs -ComputerName "ElectedLeader" `
    -EventID @(3507) `
    -ProviderName "Citrix High Availability Service" `
    -MaxEvents 50
<!--NeedCopy-->

Interroger un ordinateur spécifique :

$results = Get-LHCEventLogs -ComputerName "CC-01.domain.com" `
    -EventID @(503, 504, 505) `
    -ProviderName "Citrix ConfigSync Service"
<!--NeedCopy-->

Exécuter des commandes de broker

Obtenir toutes les machines :

$machines = Invoke-BrokerCommand -Command "Get-BrokerMachine" `
    -Properties @("MachineName", "RegistrationState", "SessionCount")
$machines | Format-Table -AutoSize
<!--NeedCopy-->

Obtenir les sessions actives :

$sessions = Invoke-BrokerCommand -Command "Get-BrokerSession" `
    -Properties @("UserName", "MachineName", "SessionState")
$sessions | Format-Table -AutoSize
<!--NeedCopy-->

Exécuter une commande personnalisée avec des paramètres :

$params = @{
    MaxRecordCount = 10
}
$results = Invoke-BrokerCommand -Command "Get-BrokerMachine" `
    -Parameters $params `
    -Properties @("MachineName", "DesktopGroupName")
<!--NeedCopy-->

Contrôler le mode de panne

Activer le mode de panne forcée sur tous les Cloud Connectors :

$results = Set-LHCOutageMode -Enable

# Check results
foreach ($connector in $results.Keys) {
    $status = if ($results[$connector].Success) { "SUCCESS" } else { "FAILED" }
    Write-Host "$connector : $status"
    if (-not $results[$connector].Success) {
        Write-Host "  Error: $($results[$connector].Error)" -ForegroundColor Red
    }
}
<!--NeedCopy-->

Désactiver le mode de panne forcée :

$results = Set-LHCOutageMode

# Check results
foreach ($connector in $results.Keys) {
    $status = if ($results[$connector].Success) { "SUCCESS" } else { "FAILED" }
    Write-Host "$connector : $status"
}
<!--NeedCopy-->

Dépannage

Pour résoudre les problèmes liés à l’outil, suivez ce processus général :

  1. Vérifiez le journal des événements de l’application pour les messages d’erreur détaillés.
  2. Vérifiez que toutes les conditions préalables sont remplies.
  3. Passez en revue les problèmes courants dans le tableau suivant et les meilleures pratiques décrites plus loin dans cet article.
  4. Reportez-vous à Local Host Cache et à la note technique Avoid Common Misconfigurations that Can Negatively Impact DaaS Resiliency.

Le tableau suivant répertorie les problèmes courants que vous pourriez rencontrer lors de l’utilisation de l’outil et leurs solutions recommandées.

Problème Solution
Aucun Cloud Connector trouvé

  1. Vérifiez que vous exécutez sur un Cloud Connector.
  2. Vérifiez que les services requis sont en cours d’exécution à l’aide de Get-Service CitrixHighAvailabilityService, CitrixConfigSyncService.
  3. Vérifiez la clé de registre HKLM:\SOFTWARE\Citrix\Broker\Service\State\LHC.
Impossible d’identifier le leader élu
  1. Recherchez l’ID d’événement 3502 dans le journal des applications.
  2. Vérifiez la connectivité à tous les Cloud Connectors.
La commande du Broker a échoué


  1. Assurez-vous que le système est en mode HA.
  2. Vérifiez que le leader élu est identifié.
  3. Vérifiez que la base de données LHC est synchronisée.
  4. Vérifiez que HighAvailabilityServiceControl.psm1 est présent.
Erreurs d’exécution à distance

  1. Vérifiez que WinRM est activé sur tous les Cloud Connectors à l’aide de Test-WSMan -ComputerName <CloudConnectorFQDN>.
  2. Vérifiez que les règles de pare-feu autorisent la communication à distance PowerShell.
  3. Vérifiez que vous disposez des privilèges d’administrateur.
La requête du journal des événements ne renvoie aucun résultat

  1. Vérifiez que les ID d’événement sont corrects pour le fournisseur sélectionné.
  2. Vérifiez que la plage horaire englobe les événements attendus.
Assurez-vous que les limites de taille du journal des événements n’ont pas entraîné l’écrasement d’anciens événements.

Bonnes pratiques

Suivez ces bonnes pratiques pour tirer le meilleur parti de l’outil et pour exploiter votre environnement de cache d’hôte local en toute sécurité.

Surveillance régulière

  • Exécutez Découvrir les Cloud Connectors et Identifier le leader élu périodiquement.
  • Surveillez les événements ConfigSync (503, 504, 505) pour les problèmes de synchronisation.

Analyse du journal des événements

  • Interrogez les événements HA des 7 derniers jours pour comprendre les modèles de panne.
  • Recherchez l’ID d’événement 3507 en mode HA pour des statistiques détaillées.

Commandes du Broker

  • Exécuter uniquement sur le leader élu.
  • Limitez la sélection de propriétés pour améliorer les performances.
  • Utilisez le paramètre MaxRecordCount pour les grands environnements.

Mode de panne

  • Utilisez le mode de panne forcée uniquement pour les tests ou la maintenance planifiée.
  • Toujours vérifier que la base de données LHC est synchronisée avant l’activation.
  • Désactiver le mode de panne forcée une fois que la connectivité principale est rétablie.

Sécurité

  • Exécuter avec des comptes à privilèges minimaux lorsque cela est possible.
  • Utiliser des canaux sécurisés pour l’exécution à distance.
  • Auditer les modifications du mode de panne.

Exemples

Les exemples suivants supposent que vous avez créé un dossier à l’emplacement C:\Reports pour contenir la sortie.

Exemple 1 : Rapport quotidien du mode HA

# Import module
. "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts\LHCVisibilityTool.ps1"

# Discover environment
$connectors = Get-CloudConnectorsInZone
Write-Host "Found $($connectors.Count) Cloud Connectors"

# Check HA status
$leader = Get-ElectedLeader
if ($leader) {
    Write-Host "System is in HA mode. Elected leader: $leader"

    # Get HA summary events from elected leader
    $events = Get-LHCEventLogs -ComputerName "ElectedLeader" `
        -EventID @(3507, 3508) `
        -ProviderName "Citrix High Availability Service" `
        -StartTime (Get-Date).AddHours(-24) `
        -MaxEvents 100

    # Export to file
    $events[$leader].Events | Select-Object TimeCreated, Id, LevelDisplayName, Message | Export-Csv -Path "C:\Reports\HA-Status-$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
} else {
    Write-Host "System is in normal operations mode"
}
<!--NeedCopy-->

Exemple 2 : Vérifier l’état de ConfigSync sur tous les connecteurs

. "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts\LHCVisibilityTool.ps1"

$results = Get-LHCEventLogs -ComputerName "All" `
    -EventID @(503, 504, 505) `
    -ProviderName "Citrix ConfigSync Service" `
    -StartTime (Get-Date).AddHours(-6) `
    -MaxEvents 10

foreach ($computer in $results.Keys) {
    $lastEvent = $results[$computer].Events | Sort-Object TimeCreated -Descending | Select-Object -First 1
    $status = switch ($lastEvent.Id) {
        503 { "In Progress" }
        504 { "Success" }
        505 { "Failed" }
    }
    Write-Host "$computer - Last Sync: $($lastEvent.TimeCreated) - Status: $status"
}
<!--NeedCopy-->

Exemple 3 : Obtenir le nombre de sessions en mode HA

. "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts\LHCVisibilityTool.ps1"

# Ensure we have an elected leader
$leader = Get-ElectedLeader
if ($leader) {
    # Get all sessions
    $sessions = Invoke-BrokerCommand -Command "Get-BrokerSession"
    Write-Host "Total Sessions: $($sessions.Count)"

    # Group by state
    $sessionsByState = $sessions | Group-Object SessionState
    foreach ($group in $sessionsByState) {
        Write-Host "  $($group.Name): $($group.Count)"
    }
} else {
    Write-Host "Not in HA mode - cannot query sessions from LHC"
}
<!--NeedCopy-->

Scénarios avancés

Les scénarios suivants combinent plusieurs fonctions de l’outil dans des scripts pour des opérations plus complexes, telles que l’automatisation des tests de panne et l’exportation des données historiques du mode HA.

Automatiser les tests de panne

# Enable outage mode
Write-Host "Enabling forced outage mode..."
$enableResults = Set-LHCOutageMode -Enable
$allEnabled = $enableResults.Values | Where-Object { -not $_.Success }
if ($allEnabled) {
    Write-Host "WARNING: Some connectors failed to enable outage mode - aborting test" -ForegroundColor Yellow
    return
}
Start-Sleep -Seconds 30

# Verify elected leader
$leader = Get-ElectedLeader
Write-Host "Elected leader: $leader"

# Test brokering
$machines = Invoke-BrokerCommand -Command "Get-BrokerMachine" -Properties @("MachineName", "RegistrationState")
Write-Host "Retrieved $($machines.Count) machines"

# Disable outage mode
Write-Host "Disabling forced outage mode..."
$disableResults = Set-LHCOutageMode
<!--NeedCopy-->

Exporter l’historique du mode HA

$haEvents = Get-LHCEventLogs -ComputerName "All" `
    -EventID @(3502, 3503) `
    -ProviderName "Citrix High Availability Service" `
    -StartTime (Get-Date).AddDays(-30) `
    -MaxEvents 1000

$report = foreach ($computer in $haEvents.Keys) {
    if (-not $haEvents[$computer].Success) { continue }
    foreach ($event in $haEvents[$computer].Events) {
        [PSCustomObject]@{
            Computer  = $computer
            EventID   = $event.Id
            EventType = if ($event.Id -eq 3502) { "Entered HA Mode" } else { "Exited HA Mode" }
            Time      = $event.TimeCreated
        }
    }
}
$report | Sort-Object Time | Export-Csv -Path "C:\Reports\HA-History.csv" -NoTypeInformation
<!--NeedCopy-->
Outil de visibilité du cache d’hôte local