当前位置: 首页 > news >正文

架构选型与规划

高可用主备架构方案

企业级GitLab高可用部署主要有以下几种主流方案:

方案一:DRBD + Pacemaker + Corosync(主备模式)

该架构为Active/Passive(主/备)模式,只有主节点运行GitLab服务并挂载存储,备节点通过DRBD实时同步数据。当主节点宕机时,Pacemaker自动将VIP和存储切换到备节点。此方案适合中小型企业,硬件成本低,约比单节点增加40%。

方案二:GitLab Geo(地理分布式)

GitLab企业版(EE)原生提供的Geo功能,可实现完整的实例级复制。主站点可读写,辅助站点只读,支持自动故障转移。需要GitLab Premium或Ultimate订阅。

方案三:分层高可用架构(官方参考架构)

将GitLab各组件拆分部署:前端负载均衡(HAProxy/Nginx)+ 多个GitLab应用节点 + PostgreSQL集群(Patroni+etcd)+ Redis Sentinel + 共享存储(NFS/Ceph)。适合大规模企业。

本文推荐方案一(DRBD + Pacemaker) ,性价比高、部署相对简单,适合大多数企业场景。如团队规模超过200人,建议升级到方案三。

1.2 硬件配置建议

团队规模CPU内存存储网络
5-20人4核8GB100GB SSD100Mbps
20-100人8核16GB500GB NVMe SSD1Gbps
100人以上16核+32GB+RAID10 SSD阵列多网卡绑定

⚠️ 生产环境强烈建议使用SSD存储,GitLab官方建议禁用swap分区。

1.3 服务器规划示例

角色主机名IP地址配置
主节点gitlab-primary192.168.1.108核16G + 500GB SSD
备节点gitlab-secondary192.168.1.118核16G + 500GB SSD
虚拟IP(VIP)gitlab.local192.168.1.100浮动IP

二、基础环境准备(两台节点均需执行)

2.1 系统更新与依赖安装

bash

# 更新系统 sudo apt update && sudo apt upgrade -y # 安装必要依赖 sudo apt install -y \ curl \ openssh-server \ ca-certificates \ tzdata \ perl \ postfix \ wget \ gnupg \ lsb-release \ software-properties-common

安装postfix时,如选择“Internet Site”,输入你的邮件域名;如暂不需要邮件功能可跳过。

2.2 配置防火墙

bash

sudo ufw allow 22/tcp # SSH访问 sudo ufw allow 80/tcp # HTTP服务 sudo ufw allow 443/tcp # HTTPS服务 sudo ufw allow 9090/tcp # Prometheus监控(可选) sudo ufw enable

2.3 系统优化配置

bash

# 禁用swap(GitLab官方建议) sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 配置时区 sudo timedatectl set-timezone Asia/Shanghai # 优化系统文件句柄限制 echo "fs.file-max = 65536" | sudo tee -a /etc/sysctl.conf sudo sysctl -p

2.4 配置SSH免密登录(主备节点间)

bash

# 在主节点生成SSH密钥 ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa # 将公钥复制到备节点 ssh-copy-id root@192.168.1.11 # 同样在备节点生成并复制到主节点 ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/id_rsa ssh-copy-id root@192.168.1.10

三、安装GitLab

3.1 添加GitLab官方仓库

使用官方源(国外服务器较快):

bash

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

使用国内清华镜像源(推荐国内用户):

bash

# 信任GitLab GPG公钥 curl -fsSL https://packages.gitlab.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg # 添加源 echo "deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab-ee.list sudo apt update

💡 如使用社区版(CE),将上述命令中的gitlab-ee替换为gitlab-ce。企业版(EE)提供更多高可用特性,生产环境建议使用企业版。

3.2 安装GitLab

bash

# 安装企业版(设置外部访问URL) sudo EXTERNAL_URL="https://gitlab.local" apt-get install -y gitlab-ee

如果尚未配置域名和SSL证书,可先使用IP地址:EXTERNAL_URL="http://192.168.1.10"

3.3 初始配置

bash

# 编辑主配置文件 sudo vim /etc/gitlab/gitlab.rb

基础配置项:

ruby

# 外部访问地址 external_url 'https://gitlab.local' # 时区 gitlab_rails['time_zone'] = 'Asia/Shanghai' # 数据存储目录(后续将迁移到共享存储) git_data_dirs({ "default" => { "path" => "/var/opt/gitlab/git-data" } }) # 邮件配置(可选) gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.your-email.com" gitlab_rails['smtp_port'] = 587 gitlab_rails['smtp_user_name'] = "gitlab@your-email.com" gitlab_rails['smtp_password'] = "your-password" gitlab_rails['smtp_domain'] = "your-email.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['gitlab_email_from'] = 'gitlab@your-email.com'

3.4 应用配置并启动

bash

http://www.gsyq.cn/news/1603807.html

相关文章:

  • JMeter WebSocket插件实战:从功能到性能的完整测试方案
  • 如何进入状态
  • 五脏养生别瞎补!老中医总结的先后顺序,照着养少走弯路
  • 3分钟上手FunClip:如何用AI智能剪辑让视频处理效率提升10倍?
  • QEMU安全配置:虚拟机隔离、权限控制与安全最佳实践
  • 【共创季稿事节】鸿蒙 ArkTS 安全区布局完全指南:SafeArea、expandSafeArea 与 Web 适配实战
  • 从IO 500双登顶出发,中国存储领跑AI新周期
  • 02 如何解决粘包问题
  • 2026年银行全员营销新变局:当任务完成率统计成为“硬指标”,哪套系统真正能落地?
  • AI视频生成神器Pixelle-Video:3分钟让普通人变身视频创作高手
  • 地产三维动画制作公司怎么选:从技术路线到交付保障的完整决策框架
  • 3步掌握CDS API:解锁全球气象数据的Python神器
  • Pytest测试用例精准执行:从命令行筛选到CI/CD集成的完整指南
  • 第5章-与HTTP协作的Web服务器
  • 2026滨州黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • 产品无人问津?五大采用障碍及Baklib AI知识库破局之道
  • 【学术导航】从SCI分区到IEEE Fellow:解码科研评价体系的核心指标与进阶路径
  • 【限时决策框架】:用3分钟完成你的ChatGPT付费评估——含自测清单+成本分摊计算器(仅开放72小时)
  • 全新强化学习框架 BeautyGRPO:重塑真实人像
  • 这个项目是做什么的
  • [MAF预定义ChatClient中间件-01]LoggingChatClient——在调用LLM前后输出日志
  • 通用PLM根本撑不住!汽车/芯片/新能源研发的痛,它懂[特殊字符]全星研发项目管理APQP软件系统来救场
  • 评估模块(EVM)使用指南:规避法律风险与安全合规要点
  • FDE课程: Codex+AI 编程+ SeedanceAI 视频+ AgentAI 智能体
  • 汉明码编码译码推演与验证(P124302158李晨雨)
  • C#摸鱼实录——IoC与DI案例详解
  • FanControl终极指南:三步搞定Windows风扇智能控制
  • DLSS Swapper:终极游戏性能优化指南,告别卡顿从版本管理开始
  • python爬虫实战项目|第100篇:爬虫技术全景回顾与未来展望
  • 强制访问控制的数学基石:深度拆解BLP机密性模型的设计哲学与工程遗产