简易gitlab高可用

该方案旨在在不增加过多复杂度和硬件成本的前提下,保证GitLab的高可用性及数据一致性。通过nginx+KeepAlived实现Web层高可用,利用rsync进行热备,结合gitlab-backup进行定期冷备。redis采用哨兵模式,postgresql使用Pgo实现数据库高可用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本方案主要满足以下业务场景

    git 本是个分布式源码管理 。所以本方案期望不增加过高复杂度和硬件成本的前提,保证gitlab主体具备高可用,同时由于源码重要性和实时性需要具备数据一致性,而且为避免硬件问题导致数据丢失,采用rsync+定时冷备的方案。

GITLAB服务组成

nginx:静态web服务器。

gitlab-shell:用于处理Git命令和修改authorized keys列表。

gitlab-workhorse: 轻量级的反向代理服务器。

logrotate:日志文件管理工具。

postgresql:数据库。

redis:缓存数据库。

sidekiq:用于在后台执行队列任务(异步执行)。

方案概述

关注点偏移后的简单架构。

 

1. Web层高可用:在不考虑新增硬件(F5)增加复杂度的情况下。采用主备模式,前置nginx+KeepAlived用于单点异常漂移,确保至少一个gitlab节点可用。

2. 存储高可用:暂不采用nfs及其他分布式方案,gitlab小文件居多,可能存在小文件传输慢的问题。

现状

现有开发人数不多,直接双机主从硬盘挂载,应用和数据分离,。

热备:主节点直接使用rsync同步增量到从节点。出现问题或有其他需要时切换即可。中间如果有丢失部分项目git commit树,本地push 即可。考虑到故障切换后数据流到disk1,所以rsync需要双向同步,disk1->disk0,保证主服务恢复后切回,不会出现数据丢失、覆盖等问题

冷备:使用gitlab-backup 在disk0定时执行,每天4点执行一次。备份最多保留14天。

中间件高可用:

1)redis直接使用哨兵模式实现高可用(1master+2slave +3 sentinel)。

2)Pgsql使用Pgo(Postgres-Operator方式安装启动)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值