{{< details >}}
- Tier: 专业版,旗舰版
- Offering: 私有化部署
{{< /details >}}
{{< history >}}
- 引入于极狐GitLab 16.8,使用名为
geo_proxy_check_pipeline_refs
的功能标志。默认禁用。 - 极狐GitLab 16.9 中默认启用。
{{< /history >}}
通过次要站点的 Geo 代理,可以在次要站点注册一个 gitlab-runner
。这样可以减轻主实例的负载。
{{< alert type=”note” >}}
流水线第一阶段启动的作业几乎总是将其 Git 克隆请求转发到主站点。这是因为这些克隆通常发生在次要站点复制和验证 Git 数据之前。后续阶段也不保证由次要站点提供服务,例如如果 Git 更改较大,带宽较小或流水线阶段较短。在大多数情况下,流水线的后续阶段从次要站点提供 Git 数据。Issue 446176 提出了一个增强提议,以增加第一阶段克隆请求由次要站点提供服务的机会。
{{< /alert >}}
使用带有位置感知公共 URL 的次要 runner(统一 URL)
使用位置感知 DNS,启用功能标志后无需额外配置。当您在与次要站点相同的位置安装并注册一个 runner 后,它会自动与最近的站点进行通信,只有在次要站点过时时才代理到主站点。
使用独立 URL 的次要 runner
使用独立的次要 URL,runner 应该:
- 使用次要外部 URL 注册。
- 使用
clone_url
配置为次要实例的external_url
。
使用次要 runner 处理计划故障转移
执行计划故障转移时,次要 runner 尝试继续与其本地实例通信。这导致 runner 容量减少,并可能需要考虑。
使用位置感知公共 URL
使用位置感知 DNS时,所有 runner 自动连接到最近的 Geo 站点。
故障转移到新的主站点时:
- 当旧主站点仍在 DNS 记录中时,任何以前连接到旧主站点的 runner 仍尝试从旧主站点接收作业。如果无法访问,runner 会检测到这一点,并在实例返回后停止请求一段时间。
- 如果您有多个次要节点,在初始故障转移后,剩余的次要节点处于不健康状态,直到它们与新的主站点复制。连接到它们的 runner 无法签到,其健康检查也会启动。
- 如果您从 Geo DNS 条目中移除任何不健康的节点,runner 会选择下一个最近的实例。根据您的架构,这可能不是您想要的,因为您可能会在站点处于减少状态时压垮它。
为缓解这些问题,您可以暂停或关闭一些 runner,直到站点恢复到 100%。
如果您不关心这些问题,这里无需操作。
使用独立 URL
- 如果您要恢复旧主站点服务,可以暂停旧主站点 runner,直到它恢复上线。这可以防止健康检查启动。
- 如果旧主站点不返回,或者您希望避免暂时减少 runner 容量,主 runner 应重新配置以连接到新的主站点。
- 如果使用多个次要节点,runner 应暂停、关闭或重新配置以连接到新的主站点,同时它们正在复制到新的主站点。
暂停 runner
您必须具有管理员访问权限才能使用以下方法之一:
- 通过 管理员 区域:
- 在左侧边栏底部,选择 管理员。
- 选择 设置 > Runner。
- 确定您要暂停的 runner。
- 选择您要暂停的每个 runner 旁边的
pause
按钮。 - 故障转移完成后,取消暂停您在前一步中暂停的 runner。
- 使用 Runner API: