Geo Frequently Asked Questions

原文:https://docs.gitlab.com/ee/administration/geo/replication/faq.html

Geo Frequently Asked Questions

What are the minimum requirements to run Geo?

要求在索引页面上列出

How does Geo know which projects to sync?

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

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

对于每个要同步的项目:

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

当有人将提交推送到节点时,它将在 GitLab 数据库中生成一个事件,说明存储库已更改. 辅助节点看到此事件,将有问题的项目标记为脏,并计划重新同步该项目.

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

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

Can I use Geo in a disaster recovery situation?

是的,但是我们复制的内容有局限性(请参阅将哪些数据复制到辅助节点? ).

阅读灾难恢复文档.

What data is replicated to a secondary node?

当前,我们复制项目存储库,LFS 对象,生成的附件/化身以及整个数据库. 这意味着用户帐户,问题,合并请求,组,项目数据等将可用于查询.

Can I git push 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?

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

What if the SSH server runs at a different port?

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

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

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