- 运行 Geo 的最低要求是什么?
- Geo 如何知道要同步哪些项目?
- 可以在灾难恢复情况下使用 Geo 吗?
- 什么数据复制到 次级 站点?
- 可以
git push
到 次级 站点吗? - 提交复制到 次级 站点需要多长时间?
- 如果 SSH 服务器运行在不同的端口怎么办?
- 可以为 次级 站点创建容器注册表以镜像 主 站点吗?
- 可以登录到 次级 站点吗?
- 所有 Geo 站点都需要与 主 站点相同吗?
- Geo 是否复制已归档的项目?
- Geo 是否复制个人项目?
- 延迟删除的项目是否复制到 次级 站点?
- 当我的 主 站点宕机时,我的 次级 站点会发生什么?
{{< details >}}
- Tier: 专业版, 旗舰版
- Offering: 私有化部署
{{< /details >}}
运行 Geo 的最低要求是什么?
要求列在索引页面上。
Geo 如何知道要同步哪些项目?
在每个 次级 站点上,有一个极狐GitLab 数据库的只读副本。次级 站点还有一个跟踪数据库,用于存储已同步的项目。Geo 比较这两个数据库,以找到尚未跟踪的项目。
一开始,这个跟踪数据库是空的,因此 Geo 尝试从它能在极狐GitLab 数据库中看到的每个项目更新。
对于每个要同步的项目:
- Geo 发出
git fetch geo --mirror
来从 主 站点获取最新信息。如果没有更改,同步很快。否则,它必须拉取最新的提交。 - 次级 站点更新跟踪数据库,以存储它已按名称同步项目的事实。
- 重复直到所有项目都已同步。
当有人向 主 站点推送提交时,它在极狐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 访问,除非您恢复 主 站点上的服务或在 次级 站点上执行提升。