Skip to main content

此版本的 GitHub Enterprise Server 将于以下日期停止服务 2026-08-25. 已停止发布的版本不受支持。 即使针对重大安全问题,也不会发布补丁。 若要获得更好的性能、改进的安全性和 GitHub Enterprise Server 中的新功能,请参阅升级过程的 Overview。 如需升级帮助,请联系 GitHub Enterprise 支持。

使用节点资格服务监视群集节点的运行状况

可以监视群集中的GitHub Enterprise Server节点在脱机时间足够长的时间,以导致问题。Node Eligibility Service

谁可以使用此功能?

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

GitHub 决定是否具备进行集群的资格,并且必须为您的实例许可证启用该配置。 集群需要经过周密规划,并会增加额外的管理开销。 有关详细信息,请参阅“关于集群”。

关于 Node Eligibility Service

GitHub Enterprise Server在群集中,由于硬件或软件故障,其他节点可能无法访问单个节点。 即使后来还原了节点的运行状况,后续数据同步也会对实例的性能产生负面影响。

可以通过使用 Node Eligibility Service来主动缓解节点可用性降低的影响。 此服务监视群集节点的状态,如果有节点脱机时间过长,则发出警告。 还可以阻止脱机节点重新加入群集。 (可选)可以允许 Node Eligibility Service 使不符合资格的节点脱机。

默认情况下, Node Eligibility Service 处于禁用状态。 如果启用Node Eligibility Service,实例将通过在管理 Web UI GitHub Enterprise Server中显示横幅以及某些群集相关实用工具的 CLI 输出(例如和ghe-cluster-diagnosticsghe-config-apply来提醒不正常的节点。

Node Eligibility Service 允许监视单个节点的运行状况。 也可监视群集的整体运行状况。 有关详细信息,请参阅“监视群集的健康状况”。

关于群集节点的运行状况和可用性

若要确定是发出警告还是自动调整群集的配置, Node Eligibility Service 请持续监视每个节点的运行状况。 每个节点定期报告时间戳运行状况状态,与 Node Eligibility Service 生存时间(TTL)持续时间进行比较。

每个节点都有一个健康状态和一个资格状态。

  • 健康状态是指群集中节点的可访问性,并具有三种可能的状态:healthywarningcritical
  • 资格是指节点在群集中工作的能力,并且有两种可能的状态:eligibleineligible

Node Eligibility Service为两种状态提供可配置的 TTL 设置, warn``fail

  • warn:节点已脱机一小段时间。 这可能表示节点出现问题,管理员应进行调查。 默认设置为 15 分钟。
  • fail:节点已脱机很长时间,重新引入群集可能会引起重新同步导致的性能问题。 默认设置为 60 分钟。

对于每个节点, Node Eligibility Service 可通过以下方式确定参与群集的运行状况和资格。

  • 如果观察到节点是正常运行的,则运行状况状态为 healthy,资格状态为 eligible
  • 如果某节点在超过 warn TTL 的时间内没有被观察到是健康的,则健康状态为 warning 且资格状态为 eligible
  • 如果观察到节点没有正常运行且时间超过 fail TTL,则运行状况状态为 critical 且资格状态为 ineligible

Node Eligibility Service为群集启用

默认情况下, Node Eligibility Service 处于禁用状态。 可以通过设置使用ghe-config的值来app.nes.enabled启用 Node Eligibility Service 。

  1. 若要连接到 你的 GitHub Enterprise Server 实例,请通过 SSH 连接到群集的任何节点。 在工作站中运行以下命令。 将 HOSTNAME 替换为节点的主机名。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 若要验证当前是否 Node Eligibility Service 已启用,请运行以下命令。

    Shell
    ghe-config app.nes.enabled
    
  3. 若要启用 Node Eligibility Service,请运行以下命令。

    Shell
    ghe-config app.nes.enabled true
    
  4. 若要应用配置,请运行以下命令。

    注意

    在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。

    Shell
    ghe-config-apply
    
  5. 等待配置运行完毕。

  6. 若要验证是否 Node Eligibility Service 正在运行,请从任何节点运行以下命令。

    Shell
    nomad status nes
    

为 配置 TTL 设置 Node Eligibility Service

若要确定如何 Node Eligibility Service 通知你,可以配置 fail TTL 设置和 warn 状态。 fail 状态的 TTL 必须大于 warn 状态的 TTL。

  1. 若要连接到 你的 GitHub Enterprise Server 实例,请通过 SSH 连接到群集的任何节点。 在工作站中运行以下命令。 将 HOSTNAME 替换为节点的主机名。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 若要验证当前的 TTL 设置,请运行以下命令。

    Shell
    nes get-node-ttl all
    
  3. 若要设置 fail 状态的 TTL,请运行以下命令。 将 MINUTES 替换为用于失败状态的分钟数。

    Shell
    nes set-node-ttl fail MINUTES
    
  4. 若要设置 warn 状态的 TTL,请运行以下命令。 将 MINUTES 替换为用于警告状态的分钟数。

    Shell
    nes set-node-ttl warn MINUTES
    

管理是否可以 Node Eligibility Service 使节点脱机

默认情况下, Node Eligibility Service 提供警报,通知你对群集节点运行状况的更改。 (可选)如果服务确定不正常的节点没有资格重新加入群集,则可以允许该服务使节点脱机。

当节点脱机时,实例会从节点中删除作业分配。 如果节点运行数据存储服务, Node Eligibility Service 请更新配置以反映节点无法重新加入群集的资格。

若要管理是否可以 Node Eligibility Service 使节点及其服务脱机,可以配置 adminaction 节点的状态。 如果某个节点处于 approved 状态, Node Eligibility Service 则可以使节点脱机。 如果节点处于 none 状态, Node Eligibility Service 则无法使节点脱机。

  1. 若要连接到 你的 GitHub Enterprise Server 实例,请通过 SSH 连接到群集的任何节点。 在工作站中运行以下命令。 将 HOSTNAME 替换为节点的主机名。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 若要配置是否可以 Node Eligibility Service 使节点脱机,请运行以下命令之一。

    • 若要允许服务在节点脱机时自动执行管理操作,请运行以下命令。 将 HOSTNAME 替换为节点的主机名。

      Shell
      nes set-node-adminaction approved HOSTNAME
      
    • 若要撤销 Node Eligibility Service使节点脱机的能力,请运行以下命令。 将 HOSTNAME 替换为节点的主机名。

      Shell
      nes set-node-adminaction none HOSTNAME
      

查看节点运行状况概述

若要查看节点运行状况 Node Eligibility Service的概述,请使用以下方法之一。

  • 通过 SSH 连接到群集中的任一节点,然后运行 nes get-cluster-health
  • 导航到 管理控制台“状态”页。 有关详细信息,请参阅“访问管理控制台”。

重新启用不合格的节点以加入群集

检测到某个节点已超出状态的 TTL,服务将节点ineligible标记为“TTLfail”后Node Eligibility Service,服务将不再更新节点的运行状况。 若要重新启用节点以加入群集,可以删除节点中的 ineligible 状态。

  1. 若要连接到 你的 GitHub Enterprise Server 实例,请通过 SSH 连接到群集的任何节点。 在工作站中运行以下命令。 将 HOSTNAME 替换为节点的主机名。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 若要检查节点的当前 adminaction 状态,请运行以下命令。 将 HOSTNAME 替换为不合格节点的主机名。

    Shell
    nes get-node-adminaction HOSTNAME
    
  3. 如果 adminaction 状态当前设置为 approved,请运行以下命令,将该状态更改为 none。 将 HOSTNAME 替换为不合格节点的主机名。

    Shell
    nes set-node-adminaction none HOSTNAME
    
  4. 若要确保节点处于正常运行状态,请运行以下命令并确认节点的状态为 ready

    Shell
    nomad node status
    
    • 如果节点的状态为 ineligible,则通过 SSH 连接到节点并运行以下命令可以使节点符合条件。

      Shell
      nomad node eligibility -enable -self
      
  5. 若要更新节点的资格 Node Eligibility Service,请运行以下命令。 将 HOSTNAME 替换为节点的主机名。

    Shell
    nes set-node-eligibility eligible HOSTNAME
    
  6. 等待 30 秒,然后运行以下命令来检查群集的运行状况以确认目标节点是合格的。

    Shell
    nes get-cluster-health
    

查看 <a0/&a0> 的日志

可以从群集中的任何节点或运行服务的节点查看日志 Node Eligibility Service 。 如果生成支持包,则会包含这些日志。 有关详细信息,请参阅“向GitHub支持提供数据”。

  1. 若要连接到 你的 GitHub Enterprise Server 实例,请通过 SSH 连接到群集的任何节点。 在工作站中运行以下命令。 将 HOSTNAME 替换为节点的主机名。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 若要查看群集中任何节点的日志 Node Eligibility Service ,请运行以下命令。

    Shell
    nomad alloc logs -job nes
    
  3. 或者,可以查看运行服务的节点上的日志 Node Eligibility Service 。 服务会将日志写入 systemd 日志。

    • 若要确定哪个节点运行 Node Eligibility Service,请运行以下命令。

      Shell
      nomad job status "nes" | grep running | grep "${nomad_node_id}" | awk 'NR==2{ print $1 }' | xargs nomad alloc status | grep "Node Name"
      
    • 若要查看节点上的日志,请通过 SSH 连接到节点,然后运行以下命令。

      Shell
      journalctl -t nes
      

其他阅读材料