Citrix DaaS™

Herramienta de visibilidad de la caché de host local

Este artículo describe la herramienta de visibilidad en tiempo real de la caché de host local (LHC), una solución basada en PowerShell que proporciona visibilidad en entornos de caché de host local de Citrix. Con esta herramienta, puede supervisar el estado de Cloud Connector, identificar el líder elegido durante el modo LHC, controlar el modo de interrupción forzada y consultar los registros de eventos para solucionar problemas de comportamiento de LHC.

Información general

La herramienta de visibilidad en tiempo real de la caché de host local (LHC) es una solución integral basada en PowerShell para proporcionar visibilidad en entornos de caché de host local de Citrix. Ofrece una interfaz de línea de comandos y sencillas GUI accesibles desde el Cloud Connector para que pueda:

  • Detectar Cloud Connectors en una zona o ubicación de recursos.
  • Identificar el líder elegido durante el modo LHC.
  • Habilitar o deshabilitar el modo de interrupción forzada en todos los Cloud Connectors de la zona o ubicación de recursos.
  • Consultar registros de eventos de proveedores específicos e ID de eventos.
  • Ejecutar comandos de PowerShell de Broker en el líder elegido.

Requisitos previos

Antes de implementar y ejecutar la herramienta de visibilidad de la caché de host local, asegúrese de que su entorno cumpla los siguientes requisitos de sistema, permisos y archivos.

Requisitos del sistema

  • Windows Server 2016 o posterior
  • PowerShell 5.1 o superior
  • Debe ejecutarse en un Citrix Cloud Connector™
  • Servicios requeridos:
    • Servicio de alta disponibilidad de Citrix
    • Servicio ConfigSync de Citrix

Permisos

  • Privilegios de administrador en la máquina local
  • Permisos de ejecución remota de PowerShell para todos los Cloud Connectors de la zona
  • Conectividad de red a todos los Cloud Connectors

Archivos requeridos

  • LHCVisibilityTool.ps1 - Módulo principal de PowerShell
  • LHCVisibilityToolGUI.ps1 - Aplicación GUI
  • HighAvailabilityServiceControl.psm1 - Módulo de control del servicio HA de Citrix

El script de PowerShell de la GUI se encuentra en:

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

Primeros pasos

Antes de ejecutar la herramienta, establezca la política de ejecución de PowerShell mediante una de las siguientes opciones:

  • Opción 1: RemoteSigned (más restrictiva):

     Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
     <!--NeedCopy-->
    
  • Opción 2: Solo sesión actual (temporal):

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

Nota:

Es posible que deba ejecutar PowerShell como administrador para cambiar la directiva de ejecución. Si solo tiene permisos de nivel de usuario, use -Scope CurrentUser.

Usar la herramienta a través de la aplicación GUI

La GUI proporciona una interfaz con pestañas para detectar Cloud Connectors, controlar el modo de interrupción, consultar registros de eventos y ejecutar comandos de agente. Después de iniciar la herramienta, seleccione una tarea para ir a sus instrucciones:

Iniciar la GUI

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

Inicio de la GUI de la herramienta de visibilidad de LHC

La herramienta utiliza un diseño de tres pestañas con una barra de estado persistente en la parte inferior.

El diseño de tres pestañas y la barra de estado persistente en la parte inferior de la ventana

La barra de estado se extiende por la parte inferior de la ventana y contiene:

Elemento Descripción
Estado de la operación (izquierda) Operación actual o “Listo”
Estado del modo HA Indicadores de puntos por conector (se muestran un máximo de 5; “+N más” si está truncado); la información sobre herramientas al pasar el ratón muestra la lista completa
Última actualización Marca de tiempo de la última actualización correcta del estado de HA
Ver registro Abre el archivo de registro de la sesión en el Bloc de notas

La barra de estado utiliza los siguientes colores para indicar el estado de HA:

Estado Color
FuncionandoNormalmente Verde
PendingHA Dorado
PendingRecovery Naranja
InitialHA Rojo
ExtendedHA Rojo
Desconocido / Inaccesible Gris

Detectar Cloud Connectors e identificar al líder

En la pestaña System Status & Control, haga clic en Discover and Identify Leader. La herramienta detecta y muestra automáticamente el líder elegido entre todos los Cloud Connectors de la zona mediante:

  • Análisis del registro de eventos (ID de evento 3504)
  • Información de PeerStatus y IsElected del Registro
  • Verificación del servicio local

Pestaña Estado y control del sistema

Controlar el modo de interrupción forzada

En la pestaña Estado y control del sistema, utilice los controles del modo de interrupción para administrar el modo HA en toda la zona:

  • Habilitar el modo de interrupción forzada:
    • Fuerza a todos los Cloud Connectors de la zona a entrar en modo HA
    • Utiliza Local Host Cache para la intermediación
    • Requiere que la base de datos LHC esté sincronizada
  • Deshabilitar el modo de interrupción forzada:
    • Permite que el sistema vuelva a sus operaciones normales
    • Se reconecta al sitio principal cuando está disponible

Advertencia:

Estas acciones afectan a todos los Cloud Connectors de la zona.

Consultar y rastrear registros de eventos

En la pestaña Consulta de registro de eventos, configure los siguientes parámetros de consulta:

  • Destino: Elija entre:
    • Todos los Cloud Connectors
    • Solo el líder elegido
    • Equipo específico (introduzca el FQDN)
  • Nombre del proveedor: Seleccione o introduzca un proveedor personalizado:
    • Servicio de alta disponibilidad de Citrix
    • Servicio ConfigSync de Citrix
    • Servicio Broker de Citrix
  • ID de evento: Lista separada por comas (por ejemplo, 3502,3503,3506)
  • Intervalo de tiempo: Opcionalmente, filtre por hora de inicio y fin
  • Eventos máximos: Número máximo de eventos a recuperar por equipo (predeterminado: 100)

Utilice los siguientes botones para trabajar con eventos:

  • Consultar eventos: Consulta los registros de eventos mediante los parámetros de consulta configurados.
  • Eventos HA anteriores: Busca los límites de inicio y fin de LHC (eventos 3502, 3503, 3508) a partir de los parámetros de consulta configurados y muestra el evento de resumen final para ofrecer una visión general.
  • Borrar eventos: Borra la lista de eventos, el panel de detalles y el estado de seguimiento.
  • Exportar informe: Crea estadísticas a partir de los eventos consultados en la GUI y los guarda como un archivo de texto. (Utiliza la salida del botón Mostrar estadísticas de eventos).

Pestaña Consulta de registro de eventos

El seguimiento en vivo se comporta de la siguiente manera:

  • El seguimiento en vivo supervisa los nuevos eventos de resumen cada 120 segundos mientras LHC está activo.
  • Cuando comienza el seguimiento en vivo, determina la hora de inicio del modo LHC haciendo referencia al evento 3502 y enumera todos los eventos que aparecieron desde el inicio.
  • El seguimiento en vivo se puede detener manualmente o automáticamente cuando concluye el modo LHC.

La sección inferior ofrece dos vistas principales:

  • Panel izquierdo:
    • Los eventos se enumeran cronológicamente con detalles clave (número de evento, hora, ID, tipo).
    • Cada evento se distingue visualmente por color según su tipo, siguiendo la referencia de ID de evento.
    • Al seleccionar un evento, se muestra más información sobre él.
  • Panel derecho: Dos opciones de visualización le permiten alternar entre resúmenes estadísticos e información detallada para el evento seleccionado:
    • Mostrar detalles del evento: Detalles completos del evento elegido.
    • Mostrar estadísticas de eventos: Estadísticas que resumen los eventos del modo HA, incluidas métricas tabulares y gráficos de barras ASCII de los eventos de resumen (3507).

La siguiente imagen muestra la vista de detalles del evento:

Vista de detalles del evento

La siguiente imagen muestra la vista de estadísticas de eventos:

Vista de estadísticas de eventos

Referencia: ID de eventos de HA y ConfigSync

Las siguientes secciones enumeran los ID de eventos comunes por proveedor.

Servicio de alta disponibilidad de Citrix:

ID de evento Descripción
3502 Modo HA activado (agente elegido)
3503 Modo HA desactivado (operaciones normales reanudadas)
3506 Modo HA activado (agente no elegido)
3507 Resumen periódico del modo HA (broker elegido)
3508 Fin del resumen del modo HA (broker elegido)

Servicio Citrix ConfigSync:

ID de evento Descripción
503 Proceso de sincronización iniciado
504 Sincronización completada correctamente
505 Sincronización fallida
507 Sincronización abandonada debido al modo HA
510 No se han recibido datos de configuración
517 Problema de comunicación con el broker principal
518 ConfigSync abortado (el servicio HA no se está ejecutando)

Ejecutar comandos de broker

En la ficha Comandos de broker, los comandos predefinidos son:

  • Get-BrokerMachine: Recuperar información de VDA/máquina
  • Get-BrokerSession: Recuperar sesiones activas
  • Get-BrokerDesktopGroup: Recuperar grupos de entrega
  • Get-BrokerCatalog: Recuperar catálogos de máquinas
  • Get-BrokerApplication: Recuperar aplicaciones publicadas

Ficha Comandos de broker

Sugerencia:

Utilice el cuadro de texto del filtro para buscar simultáneamente en todas las columnas de cadena un elemento específico en los resultados.

Para ejecutar un comando personalizado:

  1. Introduzca un comando, por ejemplo Get-BrokerMachine -MaxRecordCount 2.
  2. Opcionalmente, especifique las propiedades que desea devolver (separadas por comas).
  3. Haga clic en Ejecutar.

Comando personalizado

Nota:

Los comandos del broker proporcionan información reciente de la base de datos de LHC cuando:

  • El sistema está en modo LHC.
  • Se ha identificado un líder elegido.
  • La base de datos de LHC está disponible.

Ver registros de sesión

Para abrir el registro de sesión actual, haga clic en Ver registro en la barra de estado. El registro se abre en el Bloc de notas.

Cada sesión crea un archivo de registro en %TEMP%\LHCVisibilityTool_<yyyyMMdd_HHmmss>.log. Los mensajes también se escriben en la consola del host con codificación de colores.

Usar la herramienta a través de la línea de comandos

Además de la GUI, puede ejecutar la herramienta directamente desde PowerShell. Después de importar el módulo, utilice los siguientes comandos para realizar cada tarea. Seleccione una tarea para ir a su comando:

Iniciar la herramienta de línea de comandos

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

Detectar Cloud Connectors

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

Identificar al líder elegido

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

Obtener el estado de la interrupción

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

Consultar registros de eventos

Consultar todos los Cloud Connectors para eventos de 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-->

Consultar solo al líder elegido:

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

Consultar un equipo específico:

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

Ejecutar comandos de broker

Obtener todas las máquinas:

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

Obtener sesiones activas:

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

Ejecutar un comando personalizado con parámetros:

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

Controlar el modo de interrupción

Habilitar el modo de interrupción forzada en todos los 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-->

Deshabilitar el modo de interrupción forzada:

$results = Set-LHCOutageMode

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

Solución de problemas

Para solucionar problemas con la herramienta, siga este proceso general:

  1. Compruebe el registro de eventos de la aplicación para ver mensajes de error detallados.
  2. verificar que se cumplen todos los requisitos previos.
  3. Revise los problemas comunes en la siguiente tabla y las prácticas recomendadas descritas más adelante en este artículo.
  4. Consulte Local Host Cache y el informe técnico Avoid Common Misconfigurations that Can Negatively Impact DaaS Resiliency.

La siguiente tabla enumera los problemas comunes que puede encontrar al usar la herramienta y sus soluciones recomendadas.

Problema Solución
No se encontraron Cloud Connectors

  1. verificar que se está ejecutando en un Cloud Connector.
  2. Compruebe que los servicios necesarios se están ejecutando mediante Get-Service CitrixHighAvailabilityService, CitrixConfigSyncService.
  3. Compruebe la clave de registro HKLM:\SOFTWARE\Citrix\Broker\Service\State\LHC.
No se puede identificar al líder elegido
  1. Compruebe el ID de evento 3502 en el registro de aplicaciones.
  2. verificar la conectividad a todos los Cloud Connectors.
Error en el comando del Broker


  1. Asegúrese de que el sistema esté en modo HA.
  2. verificar que el líder elegido está identificado.
  3. Compruebe que la base de datos de LHC esté sincronizada.
  4. verificar que HighAvailabilityServiceControl.psm1 esté presente.
Errores de ejecución remota

  1. verificar que WinRM esté habilitado en todos los Cloud Connectors mediante Test-WSMan -ComputerName <CloudConnectorFQDN>.
  2. Compruebe que las reglas del firewall permitan la comunicación remota de PowerShell.
  3. verificar que tiene privilegios de administrador.
La consulta del registro de eventos no devuelve resultados

  1. verificar que los ID de evento sean correctos para el proveedor seleccionado.
  2. Compruebe que el rango de tiempo abarque los eventos esperados.
  3. Asegúrese de que los límites de tamaño del registro de eventos no hayan provocado que se sobrescriban eventos antiguos.

Prácticas recomendadas

Siga estas prácticas recomendadas para sacar el máximo partido a la herramienta y operar su entorno de caché de host local de forma segura.

Supervisión periódica

  • Ejecute Detectar Cloud Connectors e Identificar líder elegido periódicamente.
  • Supervise los eventos ConfigSync (503, 504, 505) para detectar problemas de sincronización.

Análisis del registro de eventos

  • Consulte los eventos de HA de los últimos 7 días para comprender los patrones de interrupción.
  • Busque el ID de evento 3507 durante el modo HA para obtener estadísticas detalladas.

Comandos de Broker

  • Ejecutar solo en el líder elegido.
  • Limite la selección de propiedades para mejorar el rendimiento.
  • Utilice el parámetro MaxRecordCount para entornos grandes.

Modo de interrupción

  • Utilice el modo de interrupción forzada solo para pruebas o mantenimiento planificado.
  • Siempre verificar que la base de datos de LHC esté sincronizada antes de habilitar.
  • Deshabilite el modo de interrupción forzada una vez que se restablezca la conectividad principal.

Seguridad

  • Ejecute con cuentas de privilegios mínimos siempre que sea posible.
  • Utilice canales seguros para la ejecución remota.
  • Audite los cambios en el modo de interrupción.

Ejemplos

Los siguientes ejemplos asumen que ha creado una carpeta en C:\Reports para guardar la salida.

Ejemplo 1: Informe diario del modo 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-->

Ejemplo 2: Comprobar el estado de ConfigSync en todos los conectores

. "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-->

Ejemplo 3: Obtener el recuento de sesiones durante el modo 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-->

Escenarios avanzados

Los siguientes escenarios combinan varias funciones de la herramienta en scripts para operaciones más complejas, como la automatización de pruebas de interrupción y la exportación de datos históricos del modo HA.

Automatizar las pruebas de interrupción

# 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-->

Exportar el historial del modo 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-->
Herramienta de visibilidad de la caché de host local