Geo Frequently Asked Questions
- How does Geo know which projects to sync?
- What data is replicated to a secondary node?
- What if the SSH server runs at a different port?
Geo Frequently Asked Questions
要求上列出
How does Geo know which projects to sync?
在每个辅助节点上,都有一个 GitLab 数据库的只读复制副本. 辅助节点还具有跟踪数据库,其中存储了已同步的项目. Geo 比较这两个数据库以查找尚未跟踪的项目.
首先,此跟踪数据库为空,因此 Geo 将开始尝试从它在 GitLab 数据库中可以看到的每个项目中进行更新.
对于每个要同步的项目:
- Geo 将发出来从主节点获取最新信息. 如果没有更改,则同步将很快并快速结束. 否则,它将提取最新的提交.
- 辅助节点将更新跟踪数据库,以存储它已同步项目 A,B,C 等的事实.
- 重复直到所有项目都同步.
为确保管道问题(例如,同步失败太多或丢失的作业)不会永久停止项目同步,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?
是. 有关辅助节点,请参见 .