502.md 4.9 KB
Newer Older
Lab机器人's avatar
readme  
Lab机器人 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
# Geo Frequently Asked Questions

> 原文:[https://docs.gitlab.com/ee/administration/geo/replication/faq.html](https://docs.gitlab.com/ee/administration/geo/replication/faq.html)

*   [What are the minimum requirements to run Geo?](#what-are-the-minimum-requirements-to-run-geo)
*   [How does Geo know which projects to sync?](#how-does-geo-know-which-projects-to-sync)
*   [Can I use Geo in a disaster recovery situation?](#can-i-use-geo-in-a-disaster-recovery-situation)
*   [What data is replicated to a **secondary** node?](#what-data-is-replicated-to-a-secondary-node)
*   [Can I `git push` to a **secondary** node?](#can-i-git-push-to-a-secondary-node)
*   [How long does it take to have a commit replicated to a **secondary** node?](#how-long-does-it-take-to-have-a-commit-replicated-to-a-secondary-node)
*   [What if the SSH server runs at a different port?](#what-if-the-ssh-server-runs-at-a-different-port)
*   [Is this possible to set up a Docker Registry for a **secondary** node that mirrors the one on the **primary** node?](#is-this-possible-to-set-up-a-docker-registry-for-a-secondary-node-that-mirrors-the-one-on-the-primary-node)

# Geo Frequently Asked Questions[](#geo-frequently-asked-questions-premium-only "Permalink")

## What are the minimum requirements to run Geo?[](#what-are-the-minimum-requirements-to-run-geo "Permalink")

要求[在索引页面](index.html#requirements-for-running-geo)上列出

## How does Geo know which projects to sync?[](#how-does-geo-know-which-projects-to-sync "Permalink")

在每个**辅助**节点上,都有一个 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?[](#can-i-use-geo-in-a-disaster-recovery-situation "Permalink")

是的,但是我们复制的内容有局限性(请参阅将[哪些数据复制到**辅助**节点?](#what-data-is-replicated-to-a-secondary-node) ).

阅读[灾难恢复](../disaster_recovery/index.html)文档.

## What data is replicated to a **secondary** node?[](#what-data-is-replicated-to-a-secondary-node "Permalink")

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

## Can I `git push` to a **secondary** node?[](#can-i-git-push-to-a-secondary-node "Permalink")

是! [GitLab Premium](https://about.gitlab.com/pricing/#self-managed) 11.3 中[引入](https://about.gitlab.com/releases/2018/09/22/gitlab-11-3-released/)了直接推送到**辅助**节点(对于 HTTP 和 SSH,包括 Git LFS).

## How long does it take to have a commit replicated to a **secondary** node?[](#how-long-does-it-take-to-have-a-commit-replicated-to-a-secondary-node "Permalink")

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

## What if the SSH server runs at a different port?[](#what-if-the-ssh-server-runs-at-a-different-port "Permalink")

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

## Is this possible to set up a Docker Registry for a **secondary** node that mirrors the one on the **primary** node?[](#is-this-possible-to-set-up-a-docker-registry-for-a-secondary-node-that-mirrors-the-one-on-the-primary-node "Permalink")

是. 有关[**辅助**节点,](docker_registry.html)请参见[Docker Registry](docker_registry.html) .