{{< details >}}

  • Tier: 专业版, 旗舰版
  • Offering: 私有化部署

{{< /details >}}

运行 Geo 的最低要求是什么?

要求列在索引页面上。

Geo 如何知道要同步哪些项目?

在每个 次级 站点上,有一个极狐GitLab 数据库的只读副本。次级 站点还有一个跟踪数据库,用于存储已同步的项目。Geo 比较这两个数据库,以找到尚未跟踪的项目。

一开始,这个跟踪数据库是空的,因此 Geo 尝试从它能在极狐GitLab 数据库中看到的每个项目更新。

对于每个要同步的项目:

  1. Geo 发出 git fetch geo --mirror 来从 站点获取最新信息。如果没有更改,同步很快。否则,它必须拉取最新的提交。
  2. 次级 站点更新跟踪数据库,以存储它已按名称同步项目的事实。
  3. 重复直到所有项目都已同步。

当有人向 站点推送提交时,它在极狐GitLab 数据库中生成一个事件,表明存储库已更改。次级 站点看到此事件,将相关项目标记为脏,并计划重新同步该项目。

为了确保流水线的问题(例如,同步失败次数过多或作业丢失)不会永久停止项目同步,Geo 还会定期检查跟踪数据库中标记为脏的项目。此检查发生在并发同步数量下降到 repos_max_capacity 以下并且没有新项目等待同步时。

Geo 还有一个校验和功能,它在所有 Git 引用上运行 SHA256 和到 SHA 值的校验和。如果 站点和 次级 站点之间的引用不匹配,那么 次级 站点将该项目标记为脏并尝试重新同步。因此,即使我们有一个过时的跟踪数据库,验证也应激活并发现存储库状态中的不一致并重新同步。

可以在灾难恢复情况下使用 Geo 吗?

可以,但我们复制的内容有限制(请参阅什么数据复制到 次级 站点?)。

阅读灾难恢复文档。

什么数据复制到 次级 站点?

我们复制整个 rails 数据库、项目存储库、LFS 对象、生成的附件、头像等。这意味着用户账户、议题、合并请求、群组和项目信息等信息可供查询。

有关 Geo 复制的数据的全面列表,请参阅支持的 Geo 数据类型页面

可以 git push次级 站点吗?

支持直接推送到 次级 站点(包括 HTTP 和 SSH 以及 Git LFS)。

提交复制到 次级 站点需要多长时间?

所有复制操作都是异步的,并排队等待调度。因此,这取决于许多因素,例如流量的数量、提交的大小、站点之间的连接和硬件。

如果 SSH 服务器运行在不同的端口怎么办?

这完全没问题。我们使用 HTTP(s) 从 站点获取存储库更改到所有 次级 站点。

可以为 次级 站点创建容器注册表以镜像 站点吗?

可以,不过我们仅支持灾难恢复场景。请参阅次级 站点的容器注册表

可以登录到 次级 站点吗?

可以,但 次级 站点接收所有身份验证数据(如用户账户和登录)来自 实例。这意味着您会被重定向到 实例进行身份验证,然后返回。

所有 Geo 站点都需要与 站点相同吗?

不,Geo 站点可以基于不同的参考架构。例如,您可以让 站点基于 3K 参考架构,一个 次级 站点基于 3K 参考架构,另一个基于 1K 参考架构。

Geo 是否复制已归档的项目?

是的,前提是它们没有通过选择性同步排除。

Geo 是否复制个人项目?

是的,前提是它们没有通过选择性同步排除。

延迟删除的项目是否复制到 次级 站点?

是的,由延迟删除计划删除但尚未永久删除的项目会复制到 次级 站点。

当我的 站点宕机时,我的 次级 站点会发生什么?

站点宕机时,您的 次级 站点将无法通过 UI 访问,除非您恢复 站点上的服务或在 次级 站点上执行提升。