Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-07-09. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

重新均衡群集工作负荷

可以强制 GitHub Enterprise Server 群集均匀分配群集节点上工作负载的作业负荷。

谁可以使用此功能?

People with administrative SSH access to a GitHub Enterprise Server instance can rebalance cluster workloads on the instance.

GitHub 确定聚类分析的资格,并且必须为实例的许可证启用配置。 聚类分析需要仔细规划和额外的管理开销。 有关详细信息,请参阅“关于集群”。

关于 GitHub Enterprise Server 群集的工作负载平衡

群集配置中的 GitHub Enterprise Server 实例根据节点的角色将每个任务分配给节点。 这样的分配就成为一次分配。

如果群集节点由于硬件或软件故障而无法由其他节点访问,则实例会创建一个新的分配,以将作业从运行不正常的节点分发到另一个可以处理工作负载的节点。 在某些情况下,此分发不会自动发生,且单个节点运行的作业可能超出预期。

可以使用 ghe-cluster-balance 实用工具管理分配,该实用工具可以显示现有分配的状态,或强制实例均衡分配。 例如,你应该在向群集添加新节点后均衡分配。 (可选)可以安排定期执行的均衡操作。

可以使用管理 shell 从群集中的任何节点运行以下命令。 有关详细信息,请参阅“访问管理 shell (SSH)”。

检查群集作业的分布情况

在某些情况下(例如硬件失败),管理分配的基础软件会将任务从运行不正常的节点迁移到正常节点。 如果运行不正常的节点恢复正常,则任务可能仍分配给恢复后的节点,这可能会导致负载不均衡。 如果分配不均衡且其他节点出现故障,作业失败的风险可能会增加。 可以使用 ghe-cluster-balance status 实用工具检查作业分配的分部情况。

  1. 若要列出作业分配情况,请运行以下命令。 实用工具以绿色显示正常的分配。 如果存在未能适当分配的作业,该实用工具会以红色显示分配的计数。

    Shell
    ghe-cluster-balance status
    
  2. 如果作业未适当分配,请运行以下命令来检查分配。 将 JOB 替换为单个作业或逗号分隔的作业列表。

    Shell
     ghe-cluster-balance status -j JOB
    

    例如,若要查看实例的 HTTP 服务器和授权服务的分配状态,可以运行 ghe-cluster-balance status -j github-unicorn,authzd

重新均衡分配

确定群集节点间不均衡的作业分配后,可以使用 ghe-cluster-balance rebalance 实用工具重新均衡分配。 实用工具会检查现有作业的分布情况。 如果存在不均衡的作业分配,该实用工具会显示作业并提示你继续操作。 如果继续操作,实用工具会创建新的分配来重新分发作业。

  1. 若要执行试运行并在不进行更改的情况下查看重新均衡的结果,请运行以下命令。 将 JOB 替换为单个作业或逗号分隔的作业列表。

    Shell
    ghe-cluster-balance rebalance --dry-run -j JOB
    

    例如,若要为实例的 HTTP 服务器和授权服务执行重新均衡作业的试运行操作,可以运行 ghe-cluster-balance rebalance --dry-run -j github-unicorn,authzd

  2. 若要重新均衡分配,请运行以下命令。 将 JOB 替换为单个作业或逗号分隔的作业列表。

    Shell
    ghe-cluster-balance rebalance -j JOB
    

安排重新均衡分配的操作

可以通过设置和应用 你的 GitHub Enterprise Server 实例 的配置值来为群集上的作业计划重新均衡操作。

注意: 目前,只能为 HTTP 服务器 github-unicorn 计划作业的重新分配。

  1. 若要为作业配置每小时自动执行的均衡操作,请允许以下命令。

    Shell
    ghe-config app.cluster-rebalance.enabled true
    
  2. (可选)可以通过定义 cron 表达式来覆盖默认计划。 例如,运行以下命令,可每隔三小时执行一次作业均衡操作。

    Shell
    ghe-config app.cluster-rebalance.schedule '0 */3 * * *'
    
  3. 若要应用配置,请运行以下命令。

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

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

延伸阅读