Geo Frequently Asked Questions

Geo Frequently Asked Questions

要求上列出

How does Geo know which projects to sync?

在每个辅助节点上,都有一个 GitLab 数据库的只读复制副本. 辅助节点还具有跟踪数据库,其中存储了已同步的项目. Geo 比较这两个数据库以查找尚未跟踪的项目.

首先,此跟踪数据库为空,因此 Geo 将开始尝试从它在 GitLab 数据库中可以看到的每个项目中进行更新.

对于每个要同步的项目:

  1. Geo 将发出来从节点获取最新信息. 如果没有更改,则同步将很快并快速结束. 否则,它将提取最新的提交.
  2. 辅助节点将更新跟踪数据库,以存储它已同步项目 A,B,C 等的事实.
  3. 重复直到所有项目都同步.

为确保管道问题(例如,同步失败太多或丢失的作业)不会永久停止项目同步,Geo 还会定期检查跟踪数据库中是否有标记为脏的项目. 当并发同步数降到以下并且没有新的项目等待同步时,将进行此检查.

Geo 还具有校验和功能,可在所有对 SHA 值的 Git 引用中运行 SHA256 和. 如果节点和辅助节点之间的引用不匹配,则辅助节点会将项目标记为脏项目,然后尝试重新同步. 因此,即使我们拥有一个过时的跟踪数据库,验证也应激活并找到存储库状态中的差异并重新同步.

是的,但是我们复制的内容有局限性(请参阅将 ).

阅读灾难恢复文档.

What data is replicated to a secondary node?

是! GitLab Premium 11.3 中了直接推送到辅助节点(对于 HTTP 和 SSH,包括 Git LFS).

How long does it take to have a commit replicated to a secondary node?

所有复制操作都是异步的,并排队等待分派. 因此,这取决于很多因素,包括流量,提交的大小,节点之间的连接,硬件等.

很好 我们使用 HTTP 来获取从节点到所有辅助节点的存储库更改.

Is this possible to set up a Docker Registry for a secondary node that mirrors the one on the primary node?

是. 有关辅助节点,请参见 .