极狐GitLab GEO 功能介绍
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有:
- 极狐GitLab 中文文档
- 极狐GitLab 中文论坛
- 极狐GitLab 官网
Geo (PREMIUM SELF)
Geo 是广泛分布的开发团队的解决方案,可作为灾难恢复策略的一部分提供热备份。Geo 不是 开箱即用的 HA 解决方案。
WARNING:Geo 在不同版本之间经历了重大变化。支持升级并会记录升级,但您应该确保使用正确版本的安装文档。
Geo 提供极狐GitLab 实例的本地只读站点。这可以减少克隆和获取大型仓库所需的时间,从而加快开发速度。
为了确保您使用正确版本的文档,请访问 JihuLab.com 上的 Geo 页面,并从 切换分支/标签 下拉列表中选择适当的版本。例如,v13.7.6-ee。
Geo 使用 Geo 术语文档中描述的一组已定义的术语。
请务必熟悉这些术语。
用例
实施 Geo 有以下优势:
- 将分布式开发人员克隆和获取大型仓库和项目的时间从几分钟缩短到几秒钟。
- 让您的所有开发人员都能贡献想法,并且并行工作,无论他们身在何处。
- 平衡您的主要和次要站点之间的只读负载。
此外:
- 除了读取极狐GitLab Web 界面中可用的任何数据外,还可用于克隆和获取项目(请参阅限制)。
- 克服远程办公室之间的缓慢连接,通过提高分布式团队的速度来节省时间。
- 有助于减少自动化任务、自定义集成和内部工作流程的加载时间。
- 可以在灾难恢复场景中快速故障转移到次要站点。
- 允许到次要站点的计划故障转移。
Geo 提供:
- 次要 站点上的完整极狐GitLab 体验:维护一个主极狐GitLab 站点,同时为每个分布式团队启用具有完全读写和用户界面体验的次要站点。
- 认证系统勾子:次要 站点接收从 主要 站点的所有认证数据(注入用户账号和登录)。
Gitaly 集群
Geo 不应与 Gitaly 集群混淆。有关 Geo 和 Gitaly 集群之间差异的更多信息,请参阅与 Geo 对比。
工作原理
这部分是关于极狐GitLab 环境中 Geo 工作原理的简单总结。更多详情,可以查看 Geo 开发页面。
您可以使用 Geo 实例来克隆和拉取项目,此外还能够读取任何数据。这使得远距离操作大型存储库的速度快得多。

启用 Geo 后:
- 原始实例称为主要站点。
- 复制的站点称为次要站点。
请记住:
-
次要站点与主要站点对话:
- 获取登录用户数据 (API)。
- 复制仓库、LFS 对象和附件 (HTTPS + JWT)。
-
主要 站点会和 次要 站点进行通信,以查看数据复制详情。主要 站点针对 次要 站点执行 GraphQL 查询以获取同步和验证数据(通过 API)。
-
您可以直接推送到 次要 站点(用 HTTP 和 SSH,包括 Git LFS),并且将这些操作请求代理到 主要站点。
-
当使用 Geo 时,有一些限制。
架构
下图说明了 Geo 的底层架构。

在此图中:
-
有主要站点和一个次要站点的详细信息。
-
只能在主要站点上执行对数据库的写入。 次要站点通过 PostgreSQL * 流复制接收数据库更新。
-
如果存在,LDAP 服务器 应配置为针对 灾难恢复 方案进行复制。
-
次要站点使用受 JWT 保护的特殊授权对主要站点执行不同类型的同步:
- 通过 HTTPS 通过 Git 克隆/更新仓库。
- 附件、LFS 对象和其他文件使用私有 API 端点通过 HTTPS 下载。
从执行 Git 操作的用户的角度来看:
-
主要站点表现为一个完整的读写极狐GitLab 实例。
-
次要站点是只读的,但代理 Git 推送操作到主要站点。这使得次要站点本身似乎支持推送操作。
为了简化图表,省略了一些必要的组件。
- Git over SSH 需要 gitlab-shell 和 OpenSSH。
- 需要通过 HTTPS 的 Git gitlab-workhorse。
次要站点需要两个不同的 PostgreSQL 数据库:
-
从极狐GitLab 主数据库流式传输数据的只读数据库实例。
-
另一个数据库实例由次要站点内部用于记录已复制的数据。
在次要站点中,有一个额外的守护进程:Geo Log Cursor。
运行 Geo 的要求
运行 Geo 需要以下条件:
-
支持 OpenSSH 6.9 或更高版本的操作系统(需要快速查找数据库中授权的 SSH 密钥)。已知以下操作系统附带当前版本的 OpenSSH:
-
CentOS 7.4 或更高版本
-
Ubuntu 16.04 或更高版本
-
-
可能的话,您应该在所有 Geo 站点上使用相同的操作系统版本。如果在 Geo 站点间使用不同的操作系统版本,您 必需 跨站点检查 OS 区域数据的兼容性以避免数据库索引的静默损坏。
-
极狐GitLab 发行版中支持流复制的 PostgreSQL 版本。
- PostgreSQL 逻辑复制 并不支持。
-
所有站点必需运行相同的 PostgreSQL 版本。
-
Git 2.9 或更高版本
-
使用 LFS 时用户端的 Git-lfs 2.4.2 或更高版本
-
所有站点都必须运行相同的极狐GitLab 版本。主、次和补丁版本都必须相匹配。
-
所有站点必须定义相同的仓库存储。
此外,请查看极狐GitLab 最低要求,我们建议您使用最新版本的极狐GitLab 以获得更好的体验。
防火墙规则
下表列出了必须在主要和次要站点之间为 Geo 开放的基本端口。为了简化故障转移,我们建议在两个方向上打开端口。
| 源站点 | 源端口 | 目的地站点 | 目的地端口 | 协议 |
|---|---|---|---|---|
| 主要 | Any | 次要 | 80 | TCP (HTTP) |
| 主要 | Any | 次要 | 443 | TCP (HTTPS) |
| 次要 | Any | 主要 | 80 | TCP (HTTP) |
| 次要 | Any | 主要 | 443 | TCP (HTTPS) |
| 次要 | Any | 主要 | 5432 | TCP |
在软件包默认值文档中查看极狐GitLab 使用的端口的完整列表。
NOTE:Web 终端支持要求您的负载均衡器正确处理 WebSocket 连接。
使用 HTTP 或 HTTPS 代理时,您的负载均衡器必须配置为通过
Connection 和 Upgrade hop-by-hop headers。有关更多详细信息,请参阅 web 终端集成指南。
NOTE:对端口 443 使用 HTTPS 协议时,您必须向负载均衡器添加 SSL 证书。如果您希望在极狐GitLab 应用程序服务器上终止 SSL,请使用 TCP 协议。
NOTE:如果您想为外部/内部 URL 仅使用 HTTPS,就没必要在防火墙中打开 80 端口了。
内部 URL
从任何 Geo 次要站点到主 Geo 站点的 HTTP 请求使用主 Geo 站点的内部 URL。如果在管理中心的主 Geo 站点设置中未明确定义,则使用主要站点公开 URL。
要更新主 Geo 站点的内部 URL:
1.在左侧导航栏,底部,选择 管理员。
2.选择 Geo > 站点。
3.在主要站点上选择 编辑。
4.更改 内部 URL,然后选择 保存更改。
Geo 跟踪数据库
跟踪数据库实例用作元数据来控制本地实例磁盘上需要更新的内容。例如:
- 下载新 assets。
- 获取新的 LFS 对象。
- 从最近更新的仓库中获取更改。
因为复制的数据库实例是只读的,所以我们需要为每个次要站点添加这个额外的数据库实例。
Geo Log Cursor
这个守护进程:
- 读取由主要站点复制到次要数据库实例的事件日志。
- 使用必须执行的更改更新地理跟踪数据库实例。
当跟踪数据库实例中的某些内容被标记为要更新时,次要站点上运行的异步作业会执行所需的操作并更新状态。
这种新架构使极狐GitLab 能够灵活应对站点之间的连接问题。次要站点与主要站点断开连接的时间无关紧要,因为它能够以正确的顺序重播所有事件并再次与主要站点同步。
限制
WARNING:此限制列表仅反映最新版本的极狐GitLab。如果您使用的是旧版本,则可能会有额外的限制。
-
直接推送到次要站点会将请求重定向(对于 HTTP)或代理(对于 SSH)到主要站点的请求,而不是直接处理它,除非在 URI 中使用嵌入了凭据的 HTTP 上的 Git。例如,https://user:password@secondary.tld。
-
主要站点必须在线才能进行 OAuth 登录。现有会话和 Git 不受影响。
安装需要多个手动步骤,视情况而定,总共可能需要大约一个小时。
议题/合并请求的实时更新(例如,通过长轮询)在次要站点上不起作用。 -
极狐GitLab Runners 无法在次要站点注册。
-
选择性同步仅限制复制哪些仓库和文件。整个 PostgreSQL 数据仍然被复制。选择性同步不是为了适应合规性/出口控制用例而构建的。
-
Pages 访问控制在次要节点上无效。
-
极狐GitLab chart 的 Geo 不支持统一 URL。
-
由于所有未升级的次要站点的完全重新同步和重新配置,多次要站点的灾难恢复会导致停机。
-
对于 Git over SSH,为了使项目克隆 URL 正确显示,无论您正在浏览哪个站点,次要站点都必须使用与主站点相同的端口。
对于通过 SSH 对次要站点进行 Git 的推送,不适用于超过 1.86 GB 的推送。 -
备份无法在次要站点上运行。
复制的数据类型
关于极狐GitLab 数据类型和已复制的数据类型的完整列表。
安装后文档
在 次要 站点上安装极狐GitLab 并执行初始化配置后,查看如下内容以获得安装后的相关信息。
设置 Geo
关于配置 Geo 的更多信息,可以查看设置 Geo。
配置 Geo 的对象存储
关于 Geo 对象存储配置的更多详情,可以查看Geo 对象存储。
容器镜像仓库的复制
关于如何复制容器镜像仓库的更多详情,可以查看次要 站点的容器镜像仓库。
为 Geo 站点设置统一 URL
关于使用 AWS Route53 或 Google Cloud DNS 设置统一 URL 的示例,请参阅为 Geo 站点设置统一的 URL。
单点登录(SSO)
关于 SSO 配置的更多详情,可以查看 Geo SSO。
LDAP
关于 LDAP 配置的更多详情,可以查看 Geo SSO > LDAP。
调试 Geo
有关调整 Geo 的更多信息,请参阅调试 Geo。
暂停和恢复复制
更多详情,可以查看暂停和恢复复制。
回填
设置次要站点后,它会开始在称为回填的过程中从主要站点复制丢失的数据。您可以从浏览器中的主要站点的 Geo 节点仪表盘监控每个 Geo 站点上的同步过程。
回填期间发生的失败计划在回填结束时重试。
Runners
- 除了我们部署一组 runner 的标准最佳实践之外,还可以将 runner 配置为连接到 Geo 次要站点以分散作业负载。可查看如何在次要站点上注册 runner。
- 另外可以查看如何处理 Runner 灾难恢复。
升级 Geo
关于如何将您的 Geo 站点升级到最新极狐GitLab 版本的更多详情,可以查看升级 Geo 站点。
安全审核
关于 Geo 安全的更多详情,可以查看 Geo 安全审核。
删除 Geo 站点
有关删除 Geo 站点的详细信息,请参阅删除次要 Geo 站点。
禁用 Geo
要了解如何禁用 Geo,请参阅禁用 Geo。
日志文件
Geo 将结构化的日志信息存储在 geo.log 文件中。
关于如何访问和消耗 Geo 日志的更多详情,可以查看日志系统文档中关于 Geo 的部分。
灾难恢复
关于在灾难恢复解决方案中使用 Geo 来减少数据丢失风险的更多信息,可以查看灾难恢复。
经常被问的问题
关于常见问题的答案,可以查看Geo FAQ。
故障排除
- 关于 Geo 的故障排查步骤,查看 Geo 故障排查指南。
- 关于灾备的故障排查步骤,查看Geo 故障转移故障排查指南。
技术支持
如果您在配置 Geo 的过程中遇到任何问题,您可以在极狐GitLab 官方论坛上发帖求助,您也可以直接扫描下方二维码咨询专业人员:

相关文章:
极狐GitLab GEO 功能介绍
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 Geo (PREMIUM SELF) Geo 是广泛分布的开发团队的解决方案,可作为灾难恢复策略的一部分提供热备份。Geo 不是 开箱…...
Nginx-前言
nginx是什么? 轻量级,开源免费的web服务器软件,服务器安装nginx,服务器则成为web服务器 nginx的稳定版版本号: 偶数版本 nginx的相关目录: /etc/nginx/nginx.conf nginx的主配置文件 /etc/nginx/ngi…...
LFI to RCE
LFI不止可以来读取文件,还能用来RCE 在多道CTF题目中都有LFItoRCE的非预期解,下面总结一下LFI的利用姿势 1. /proc/self/environ 利用 条件:目标能读取 /proc/self/environ,并且网页中存在LFI点 利用方式: 修改请…...
云原生(Cloud Native)的详解、开发流程及同类软件对比
以下是云原生(Cloud Native)的详解、开发流程及同类软件对比: 一、云原生核心概念 定义: 云原生(Cloud Native)是基于云环境设计和运行应用程序的方法论,强调利用云平台的弹性、分布式和自动化…...
全局唯一标识符(UID)生成策略
目录 一、UUID 二、雪花算法 三、时间戳 随机数 四、利用数据库的自增字段 五、 基于 Redis 的原子操作 总结 在信息系统中,生成唯一ID是非常常见的需求,尤其是在分布式系统或高并发场景下。以下是几种常见的生成唯一ID的算法或方式: …...
学习笔记:减速机工作原理
学习笔记:减速机工作原理 一、减速机图片二、减速比概念三、减速机的速比与扭矩之间的关系四、题外内容--电机扭矩 一、减速机图片 二、减速比概念 即减速装置的传动比,是传动比的一种,是指减速机构中,驱动轴与被驱动轴瞬时输入速…...
《UE5_C++多人TPS完整教程》学习笔记36 ——《P37 拾取组件(Pickup Widget)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P37 拾取组件(Pickup Widget)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author) Steph…...
《空间复杂度(C语言)》
文章目录 前言一、什么是空间复杂度?通俗理解: 二、空间复杂度的数学定义三、常见空间复杂度举例(含C语言代码)🔹 O(1):常数空间🔹 O(n):线性空间🔹 O(n^2):平…...
Kaggle-Store Sales-(回归+多表合并+xgboost模型)
Store Sales 题意: 给出很多商店,给出商店的类型,某时某刻卖了多少销售额。 给出了油价表,假期表,进货表。 让你求出测试集合中每个商店的销售额是多少。 数据处理: 1.由于是多表,所以要先把其他表与tr…...
在 Tailwind CSS 中优雅地隐藏滚动条
在开发中,我们经常需要隐藏滚动条但保持滚动功能,这在构建现代化的用户界面时很常见。 本文将介绍两种在 Tailwind CSS 项目中实现这一目标的方法,方便同学们记录和查阅。 方法一:使用 tailwind-scrollbar-hide 插件 这是一种更…...
智能合约安全审计平台——以太坊虚拟机安全沙箱
目录 以太坊虚拟机安全沙箱 —— 理论、设计与实战1. 引言2. 理论背景与安全原理2.1 以太坊虚拟机(EVM)概述2.2 安全沙箱的基本概念2.3 安全证明与形式化验证3. 系统架构与模块设计3.1 模块功能说明3.2 模块之间的数据流与安全性4. 安全性与密码学考量4.1 密码学保障在沙箱中…...
std::unordered_map(C++)
std::unordered_map 1. 概述2. 内部实现3. 性能特征4. 常用 API5. 使用示例6. 自定义哈希与相等比较7. 注意事项与优化8. 使用建议9. emplace和insert异同相同点不同点例子对比何时优先使用哪种? 1. 概述 定义:std::unordered_map<Key, T, Hash, KeyE…...
【MCP教程】Claude Desktop 如何连接部署在远程的remote mcp server服务器(remote host)
前言 最近MCP特别火热,笔者自己也根据官方文档尝试了下。 官方文档给的Demo是在本地部署一个weather.py,然后用本地的Claude Desktop去访问该mcp服务器,从而完成工具的调用: 但是,问题来了,Claude Deskto…...
Android Input——输入事件回调完成(十四)
前面几篇文章介绍了事件回调的相关流程,以及回调事件处理函数的相关内容,最后我们再来看一下事件处理完后,如何通知 InputDispatcher 去回调 Callback。 一、客户端回调 在 Android 的事件分发机制中,当客户端(即应用层)完成事件处理后,最终会调用 ViewRootImpl 的 fin…...
数据通信学习笔记之OSPF配置命令
华为 [huawei]ospf 10 router-id 1.1.1.1 //创建ospf进程,本地有效area 1 // 进入区域1network 192.168.1.0 0.0.0.255 // 宣告网段,使用反掩码stub // 配置为stub区域stub no-summary // 配置为Totally Stub 完全末节区域。在ABR上配置࿰…...
Python -yield 在python 中什么意思
在 Python 中,yield 是一个关键字,用于定义生成器函数(generator function)。它的作用是将一个普通函数转变为可迭代的生成器,具有惰性计算的特性。以下是关键要点: 核心概念 生成器函数: 当函数…...
多个路由器互通(静态路由)无单臂路由(简单版)
多个路由器互通(静态路由)无单臂路由(简单版) 开启端口并配ip地址 维护1 Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shutdown Router(config-if)#ip address 192.168.10.254 255.255.255.0 Ro…...
OpenCV 图形API(38)图像滤波-----Sobel 算子操作函数Sobel()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::gapi::Sobel 函数是 OpenCV 的 G-API 模块中用于执行 Sobel 算子操作的一个函数,主要用于图像的边缘检测。Sobel 算子通过计算图…...
3DS 转 STL 全攻略:传统工具与迪威模型网在线转换深度解析
在 3D 建模与 3D 打印的技术领域中,常常会遇到需要将不同格式的文件进行转换的情况。其中,把 3DS 文件转换为 STL 格式是较为常见的操作。3DS 文件作为一种旧版 Autodesk 3D Studio 使用的 3D 图像格式,存储着丰富的信息,包括网格…...
windows系统安装驱动、cuda和cudnn
一、首先在自己的电脑里安装了nvidia的独立显卡 显卡的查找方式: CtrlShiftEsc打开任务管理器,点击性能,点击GPU 0查看显卡型号,如下图所示: 只要电脑中有nvidia的独立显卡,就可以暗转显卡驱动、cuda和cu…...
嵌入式开发--STM32软件和硬件CRC的使用--续篇
本文是《嵌入式开发–STM32软件和硬件CRC的使用》的续篇,又踩到一个坑,发出来让大家避一下坑。 按照G0系列的设置,得出错误的结果 前文对应的是STM32G0系列,今天在用STM32G4系列时,按照前文的设置,用硬件…...
2.深入剖析 Rust+Axum 类型安全路由系统
摘要 详细解读 RustAxum 路由系统的关键设计原理,涵盖基于 Rust 类型系统的路由匹配机制、动态路径参数与正则表达式验证以及嵌套路由与模块化组织等多种特性。 一、引言 在现代 Web 开发中,路由系统是构建 Web 应用的核心组件之一,它负责…...
c# 委托和事件的区别及联系,Action<T1,T2>与Func<T1,T2>的区别
定义与本质 委托: 委托是一种类型,用于存储对方法的引用。它允许将方法作为参数传递、存储和调用。委托可以绑定一个或多个方法,并通过和-操作符动态添加或移除方法。 事件: 事件是基于委托的封装,提供了一种发布/订阅机制。事件…...
【Python入门】文件读取全攻略:5种常用格式(csv/excel/word/ppt/pdf)一键搞定 | 附完整代码示例
大家好,我是唐叔!今天给大家带来一篇Python文件读取的终极指南。无论是数据分析、办公自动化还是爬虫开发,文件读取都是Python程序员必须掌握的核心技能。本文将详细介绍Python处理5大常用文件格式的方法,包含完整可运行的代码示例…...
【Git】git的简单使用
文章目录 1. 基础概念2. 简单使用2.1 git配置2.1.1 git的配置文件2.1.2 .gitignore文件 2.2 创建仓库2.2.1 创建本地仓库2.2.2 github创建远程仓库step1:github新建一个代码仓step2:创建密钥远程仓库相关指令2.2.3 本地仓库 关联 远程仓库 2.3 分支2.3.1…...
WebSocket 实现数据实时推送原理
WebSocket 实现数据实时推送的核心机制在于其全双工通信能力和持久的连接特性。以下是其工作原理的详细步骤: 1. 握手阶段(HTTP 升级协议) 客户端发起请求:通过发送一个带有特殊头部的 HTTP 请求,请求协议升级。 GET …...
LeetCode 2919 使数组变美的最小增量运算数
动态规划解题:最小操作次数使数组变为美丽数组 问题描述 给定一个下标从0开始、长度为n的整数数组nums和一个整数k。你可以对数组中的任意一个元素进行加1操作,操作次数不限。如果数组中任意长度大于或等于3的子数组的最大值都大于或等于k,…...
[Web 安全] Web 信息收集 —— 信息收集流程
🌟 想系统化学习 Web 渗透?看看这个:[Web 安全] Web 安全攻防 学习手册 提示:本章不涉及任何具体信息收集技术,仅仅是讲解收集这些信息我能干啥,以及如何才能比较全面的收集信息。 0x01:信息收…...
内部聊天软件,BeeWorks-安全的企业内部通讯软件
企业在享受数据便利的同时,如何保障企业数据安全已经成为无法回避的重要课题。BeeWorks作为一款专为企业设计的内部通讯软件,通过全链路的安全能力升维,为企业提供了一个安全、高效、便捷的沟通协作平台,全面保障企业数据安全。 …...
线程安全学习
1 什么是线程 线程是cpu调度的最小单位,在Linux 下 实现线程的方式为轻量级进程,复用进程的结构体,使用clone函数创建 2 线程安全 所谓线程安全,更确切的应该描述为内存安全 #include <stdio.h> #include <pthread.h…...
