Skip to main content

Supervisión del estado de los nodos del clúster con el servicio de ideoneidad de nodos

Puedes supervisar cuándo los nodos de un clúster de GitHub Enterprise Server han estado sin conexión durante mucho tiempo para causar problemas mediante el uso de Node Eligibility Service.

¿Quién puede utilizar esta característica?

People with administrative SSH access to a GitHub Enterprise Server instance can monitor cluster nodes.

GitHub determina la idoneidad para la agrupación en clústeres y debe habilitar la configuración de la licencia de la instancia. La agrupación en clústeres conlleva una planeación cuidadosa y una sobrecarga administrativa adicional. Para obtener más información, vea «Acerca de las agrupaciones».

Acerca de Node Eligibility Service

En un clúster de GitHub Enterprise Server, es posible que otros nodos no puedan acceder a un nodo individual debido a un error de hardware o software. Después del tiempo, incluso si restauras el estado del nodo, la sincronización posterior de los datos puede afectar negativamente al rendimiento de la instancia.

Puedes mitigar proactivamente el impacto de la disponibilidad reducida de los nodos mediante Node Eligibility Service. Este servicio supervisa el estado de los nodos del clúster y emite una advertencia si un nodo ha estado sin conexión durante demasiado tiempo. También puedes impedir que un nodo sin conexión vuelva a unir el clúster. Opcionalmente, puedes permitir que Node Eligibility Service desconecte los nodos no válidos.

De manera predeterminada, Node Eligibility Service está deshabilitado. Si habilita Node Eligibility Service, la instancia le avisará de nodos incorrectos mostrando un banner en la interfaz de usuario web administrativa para GitHub Enterprise Server y en la salida de la CLI para algunas utilidades relacionadas con el clúster, como ghe-config-apply y ghe-cluster-diagnostics.

Node Eligibility Service permite supervisar el estado de los nodos individuales. También puedes supervisar el mantenimiento del clúster y recursos. Para obtener más información, vea «Supervisión del estado del clúster».

Acerca del estado y la idoneidad de los nodos de clúster

Para determinar si se debe emitir una advertencia o ajustar automáticamente la configuración del clúster, Node Eligibility Service supervisa continuamente el estado de cada nodo. Cada nodo informa regularmente de un estado de mantenimiento con marca de tiempo, que Node Eligibility Service se compara con una duración de período de vida (TTL).

Cada nodo tiene un estado de mantenimiento y un estado de idoneidad.

  • El estado hace referencia a la accesibilidad del nodo dentro del clúster y tiene tres estados posibles: healthy, warning o critical.
  • La idoneidad hace referencia a la capacidad del nodo para trabajar en el clúster y tiene dos estados posibles: eligible o ineligible.

Node Eligibility Service proporciona una configuración de TTL configurable para dos estados, warn y fail.

  • warn: el nodo ha estado sin conexión durante un breve período de tiempo. Esto puede indicar que hay algún problema con el nodo y que los administradores deben investigar. La configuración predeterminada es de 15 minutos.
  • fail: el nodo se ha desconectado durante un largo período de tiempo y la reintroducción en el clúster podría provocar problemas de rendimiento debido a la resincronización. La configuración predeterminada es de 60 minutos.

Para cada nodo, Node Eligibility Service determina el estado y la idoneidad de la participación en el clúster de las siguientes maneras.

  • Si se ha observado que un nodo es correcto, el estado de mantenimiento es healthy y el estado de idoneidad es eligible.
  • Si no se ha observado que un nodo es correcto durante más tiempo que el TTL, warn, el estado de mantenimiento es warning y el estado de idoneidad es eligible.
  • Si no se ha observado que un nodo es correcto durante más tiempo que el TTL, fail, el estado de mantenimiento es critical y su estado de idoneidad es ineligible.

Habilitación de Node Eligibility Service para el clúster

De manera predeterminada, Node Eligibility Service está deshabilitado. Puede habilitar Node Eligibility Service estableciendo el valor para app.nes.enabled mediante ghe-config.

  1. Para conectarte a tu instancia de GitHub Enterprise Server, accede mediante SSH a cualquiera de los nodos del clúster. En la estación de trabajo, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo. Para obtener más información, vea «Acceder al shell administrativo (SSH)».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Para comprobar si Node Eligibility Service está habilitado actualmente, ejecuta el siguiente comando.

    Shell
    ghe-config app.nes.enabled
    
  3. Para habilitar Node Eligibility Service, ejecuta el siguiente comando.

    Shell
    ghe-config app.nes.enabled true
    
  4. Para aplicar la configuración, ejecuta el siguiente comando.

    Nota: Durante la ejecución de una configuración, los servicios de tu instancia de GitHub Enterprise Server pueden reiniciarse, y esto puede provocar un breve tiempo de inactividad para los usuarios.

    Shell
    ghe-config-apply
    
  5. Espera que se complete la fase de configuración.

  6. Para comprobar que Node Eligibility Service se está ejecutando, desde cualquier nodo, ejecuta el siguiente comando.

    Shell
    nomad status nes
    

Configuración de opciones de TTL para Node Eligibility Service

Para determinar cómo Node Eligibility Service le notifica, puedes configurar las opciones de TTL para los estados fail y warn. El TTL para el estado fail debe ser mayor que el TTL para el estado warn.

  1. Para conectarte a tu instancia de GitHub Enterprise Server, accede mediante SSH a cualquiera de los nodos del clúster. En la estación de trabajo, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo. Para obtener más información, vea «Acceder al shell administrativo (SSH)».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Para comprobar la configuración actual de TTL, ejecuta el siguiente comando.

    Shell
    nes get-node-ttl all
    
  3. Para establecer el TTL para el estado fail, ejecuta el siguiente comando. Reemplaza MINUTES por el número de minutos que se van a usar para los errores.

    Shell
    nes set-node-ttl fail MINUTES
    
  4. Para establecer el TTL para el estado warn, ejecuta el siguiente comando. Reemplaza MINUTES por el número de minutos que se van a usar para las advertencias.

    Shell
    nes set-node-ttl warn MINUTES
    

Administrar si Node Eligibility Service puede desconectar un nodo

De forma predeterminada, Node Eligibility Service proporciona alertas para notificarte los cambios en el estado de los nodos del clúster. Opcionalmente, si el servicio determina que un nodo incorrecto no es apto para volver a unir el clúster, puedes permitir que el servicio deje el nodo sin conexión.

Cuando un nodo se desconecta, la instancia quita las asignaciones de trabajo del nodo. Si el nodo ejecuta servicios de almacenamiento de datos, Node Eligibility Service actualiza la configuración para reflejar la idoneidad del nodo para volver a unir el clúster.

Para administrar si Node Eligibility Service puede desconectar un nodo y sus servicios, puedes configurar los estados adminaction para el nodo. Si un nodo está en estado approved, Node Eligibility Service puede desconectar el nodo. Si un nodo está en estado none, Node Eligibility Service no puede desconectar el nodo.

  1. Para conectarte a tu instancia de GitHub Enterprise Server, accede mediante SSH a cualquiera de los nodos del clúster. En la estación de trabajo, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo. Para obtener más información, vea «Acceder al shell administrativo (SSH)».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Para configurar si Node Eligibility Service pueden desconectar un nodo, ejecuta uno de los siguientes comandos.

    • Para permitir que el servicio realice automáticamente una acción administrativa cuando un nodo se queda sin conexión, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo.

      Shell
      nes set-node-adminaction approved HOSTNAME
      
    • Para revocar la capacidad de Node Eligibility Service de desconectar un nodo, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo.

      Shell
      nes set-node-adminaction none HOSTNAME
      

Visualización de información general sobre el estado del nodo

Para ver información general sobre el estado de los nodos con Node Eligibility Service, usa uno de los métodos siguientes.

  • Conéctate mediante SSH a cualquier nodo del clúster y, a continuación, ejecuta nes get-cluster-health.
  • Ve a la página "Estado" de Consola de administración. Para obtener más información, vea «Acceso a la Consola de administración».

Volver a habilitar un nodo no válido para unirse al clúster

Después de que Node Eligibility Service detecte que un nodo ha superado el TTL para el estado fail y, después de que el servicio marque el nodo como ineligible, el servicio ya no actualizará el estado de mantenimiento del nodo. Para volver a habilitar un nodo para unir el clúster, puedes quitar el estado ineligible del nodo.

  1. Para conectarte a tu instancia de GitHub Enterprise Server, accede mediante SSH a cualquiera de los nodos del clúster. En la estación de trabajo, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo. Para obtener más información, vea «Acceder al shell administrativo (SSH)».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Para comprobar el estado actual del nod oadminaction, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo no válido.

    Shell
    nes get-node-adminaction HOSTNAME
    
  3. Si el estado adminaction está establecido actualmente en approved, cambia el estado a none mediante la ejecución del comando siguiente. Reemplaza HOSTNAME por el nombre de host del nodo no válido.

    Shell
    nes set-node-adminaction none HOSTNAME
    
  4. Para asegurarte de que el nodo está en buen estado, ejecuta el siguiente comando y confirma que el estado del nodo es ready.

    Shell
    nomad node status
    
    • Si el estado del nodo es ineligible, haz que el nodo sea apto mediante la conexión al nodo a través de SSH y ejecuta el siguiente comando.

      Shell
      nomad node eligibility -enable -self
      
  5. Para actualizar la idoneidad del nodo en Node Eligibility Service, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo.

    Shell
    nes set-node-eligibility eligible HOSTNAME
    
  6. Espera 30 segundos y comprueba el estado del clúster para confirmar que el nodo de destino es apto mediante la ejecución del comando siguiente.

    Shell
    nes get-cluster-health
    

Visualización de registros de datos Node Eligibility Service

Puedes ver los registros de Node Eligibility Service desde cualquier nodo del clúster o desde el nodo que ejecuta el servicio. Si generas una agrupación de soporte técnico, se incluyen los registros. Para obtener más información, vea «Cómo proporcionar datos al servicio de soporte técnico de GitHub».

  1. Para conectarte a tu instancia de GitHub Enterprise Server, accede mediante SSH a cualquiera de los nodos del clúster. En la estación de trabajo, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo. Para obtener más información, vea «Acceder al shell administrativo (SSH)».

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. Para ver los registros de Node Eligibility Service desde cualquier nodo del clúster, ejecuta el siguiente comando.

    Shell
    nomad alloc logs -job nes
    
  3. Como alternativa, puedes ver los registros de Node Eligibility Service en el nodo que ejecuta el servicio. El servicio escribe registros en el diario systemd.

    • Para determinar qué nodo ejecuta Node Eligibility Service, ejecuta el siguiente comando.

      Shell
      nomad job status "nes" | grep running | grep "${nomad_node_id}" | awk 'NR==2{ print $1 }' | xargs nomad alloc status | grep "Node Name"
      
    • Para ver los registros en el nodo, conéctate al nodo a través de SSH y ejecuta el siguiente comando.

      Shell
      journalctl -t nes
      

Lecturas adicionales