关于 GitHub Enterprise Server 群集的工作负载平衡
群集配置中的 GitHub Enterprise Server 实例根据节点的角色将每个任务分配给节点。 这样的分配就成为一次分配。
如果群集节点由于硬件或软件故障而无法由其他节点访问,则实例会创建一个新的分配,以将作业从运行不正常的节点分发到另一个可以处理工作负载的节点。 在某些情况下,此分发不会自动发生,且单个节点运行的作业可能超出预期。
可以使用 ghe-cluster-balance
实用工具管理分配,该实用工具可以显示现有分配的状态,或强制实例均衡分配。 例如,你应该在向群集添加新节点后均衡分配。 (可选)可以安排定期执行的均衡操作。
可以使用管理 shell 从群集中的任何节点运行以下命令。 有关详细信息,请参阅访问管理 shell (SSH)。
检查群集作业的分布情况
在某些情况下(例如硬件失败),管理分配的基础软件会将任务从运行不正常的节点迁移到正常节点。 如果运行不正常的节点恢复正常,则任务可能仍分配给恢复后的节点,这可能会导致负载不均衡。 如果分配不均衡且其他节点出现故障,作业失败的风险可能会增加。 可以使用 ghe-cluster-balance status
实用工具检查作业分配的分部情况。
-
若要列出作业分配情况,请运行以下命令。 实用工具以绿色显示正常的分配。 如果存在未能适当分配的作业,该实用工具会以红色显示分配的计数。
Shell ghe-cluster-balance status
ghe-cluster-balance status
-
如果作业未适当分配,请运行以下命令来检查分配。 将 JOB 替换为单个作业或逗号分隔的作业列表。
Shell ghe-cluster-balance status -j JOB
ghe-cluster-balance status -j JOB
例如,若要查看实例的 HTTP 服务器和授权服务的分配状态,可以运行
ghe-cluster-balance status -j github-unicorn,authzd
。
重新均衡分配
确定群集节点间不均衡的作业分配后,可以使用 ghe-cluster-balance rebalance
实用工具重新均衡分配。 实用工具会检查现有作业的分布情况。 如果存在不均衡的作业分配,该实用工具会显示作业并提示你继续操作。 如果继续操作,实用工具会创建新的分配来重新分发作业。
-
若要执行试运行并在不进行更改的情况下查看重新均衡的结果,请运行以下命令。 将 JOB 替换为单个作业或逗号分隔的作业列表。
Shell ghe-cluster-balance rebalance --dry-run -j JOB
ghe-cluster-balance rebalance --dry-run -j JOB
例如,若要为实例的 HTTP 服务器和授权服务执行重新均衡作业的试运行操作,可以运行
ghe-cluster-balance rebalance --dry-run -j github-unicorn,authzd
。 -
若要重新均衡分配,请运行以下命令。 将 JOB 替换为单个作业或逗号分隔的作业列表。
Shell ghe-cluster-balance rebalance -j JOB
ghe-cluster-balance rebalance -j JOB
安排重新均衡分配的操作
可以通过设置和应用 你的 GitHub Enterprise Server 实例 的配置值来为群集上的作业计划重新均衡操作。
Note
目前,只能为 HTTP 服务器 github-unicorn
计划作业的重新分配。
-
若要为作业配置每小时自动执行的均衡操作,请允许以下命令。
Shell ghe-config app.cluster-rebalance.enabled true
ghe-config app.cluster-rebalance.enabled true
-
(可选)可以通过定义 cron 表达式来替代默认计划。 例如,运行以下命令以每天执行一次作业均衡操作。
Shell ghe-config app.cluster-rebalance.schedule '0 0 * * *'
ghe-config app.cluster-rebalance.schedule '0 0 * * *'
-
若要应用配置,请运行以下命令。
Note
在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply
-
等待配置运行完毕。