{{< 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 应该:

  1. 使用次要外部 URL 注册。
  2. 使用 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

您必须具有管理员访问权限才能使用以下方法之一:

  • 通过 管理员 区域:
    1. 在左侧边栏底部,选择 管理员
    2. 选择 设置 > Runner
    3. 确定您要暂停的 runner。
    4. 选择您要暂停的每个 runner 旁边的 pause 按钮。
    5. 故障转移完成后,取消暂停您在前一步中暂停的 runner。
  • 使用 Runner API
    1. 获取或创建具有管理员访问权限的个人访问令牌
    2. 获取 runner 列表。您可以使用 API过滤列表。
    3. 确定您要暂停的 runner,并记录其 id
    4. 按照 API 文档暂停每个 runner。
    5. 故障转移完成后,通过将 paused=false 设置为 API 来取消暂停 runner 列表。