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
ocritical
. - La idoneidad hace referencia a la capacidad del nodo para trabajar en el clúster y tiene dos estados posibles:
eligible
oineligible
.
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 eseligible
. - Si no se ha observado que un nodo es correcto durante más tiempo que el TTL,
warn
, el estado de mantenimiento eswarning
y el estado de idoneidad eseligible
. - Si no se ha observado que un nodo es correcto durante más tiempo que el TTL,
fail
, el estado de mantenimiento escritical
y su estado de idoneidad esineligible
.
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
.
-
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
ssh -p 122 admin@HOSTNAME
-
Para comprobar si Node Eligibility Service está habilitado actualmente, ejecuta el siguiente comando.
Shell ghe-config app.nes.enabled
ghe-config app.nes.enabled
-
Para habilitar Node Eligibility Service, ejecuta el siguiente comando.
Shell ghe-config app.nes.enabled true
ghe-config app.nes.enabled true
-
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
ghe-config-apply
-
Espera que se complete la fase de configuración.
-
Para comprobar que Node Eligibility Service se está ejecutando, desde cualquier nodo, ejecuta el siguiente comando.
Shell nomad status nes
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
.
-
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
ssh -p 122 admin@HOSTNAME
-
Para comprobar la configuración actual de TTL, ejecuta el siguiente comando.
Shell nes get-node-ttl all
nes get-node-ttl all
-
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
nes set-node-ttl fail MINUTES
-
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
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.
-
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
ssh -p 122 admin@HOSTNAME
-
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
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
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.
-
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
ssh -p 122 admin@HOSTNAME
-
Para comprobar el estado actual del nod o
adminaction
, ejecuta el siguiente comando. Reemplaza HOSTNAME por el nombre de host del nodo no válido.Shell nes get-node-adminaction HOSTNAME
nes get-node-adminaction HOSTNAME
-
Si el estado
adminaction
está establecido actualmente enapproved
, cambia el estado anone
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
nes set-node-adminaction none HOSTNAME
-
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
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
nomad node eligibility -enable -self
-
-
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
nes set-node-eligibility eligible HOSTNAME
-
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
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».
-
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
ssh -p 122 admin@HOSTNAME
-
Para ver los registros de Node Eligibility Service desde cualquier nodo del clúster, ejecuta el siguiente comando.
Shell nomad alloc logs -job nes
nomad alloc logs -job nes
-
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"
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
journalctl -t nes
-