Geo 常见问题

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

运行 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 访问,除非您恢复 站点上的服务或在 次级 站点上执行提升。