当前位置: 首页 > 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.jsqmd.com/news/1091849/

相关文章:

  • JMeter WebSocket插件实战:从功能到性能的完整测试方案
  • Win11Debloat:3分钟完成Windows系统优化,彻底清理臃肿应用
  • 如何进入状态
  • 3分钟上手FunClip:如何用AI智能剪辑让视频处理效率提升10倍?
  • 五脏养生别瞎补!老中医总结的先后顺序,照着养少走弯路
  • 【goal命令技术解析】Claude Code与Codex目标驱动自主执行机制全景解析
  • 如何永久激活IDM?开源脚本的终极解决方案
  • Electron 如何调用 Windows 原生 API
  • Go 高性能网络服务:从 TCP 参数调优到连接池工程实践
  • 深入解析TSB41BA3D PHY-LLC状态传输机制:实时事件通知与串行总线协同设计
  • QEMU安全配置:虚拟机隔离、权限控制与安全最佳实践
  • 豆包LaTeX公式转Word全攻略:AI导出鸭助你一键搞定
  • 从IO 500双登顶出发,中国存储领跑AI新周期
  • 【共创季稿事节】鸿蒙 ArkTS 安全区布局完全指南:SafeArea、expandSafeArea 与 Web 适配实战
  • 02 如何解决粘包问题
  • Metasploit实战入门:从Auxiliary侦察到Meterpreter后渗透完整指南
  • 【机器学习300问】早停法(Early Stopping):从损失曲线到实战调参的防过拟合指南
  • 联想小新休眠黑屏无法唤醒?聊聊低温锡 CPU 虚焊故障现象
  • 2026年银行全员营销新变局:当任务完成率统计成为“硬指标”,哪套系统真正能落地?
  • TI TPIC7710评估板实战指南:从硬件解析到软件调试的汽车电机控制验证
  • 2026年排盘精准度与底层逻辑:哪家八字排盘app排盘最标准、操作简单、功能齐全且能保存命盘
  • AI视频生成神器Pixelle-Video:3分钟让普通人变身视频创作高手
  • 地产三维动画制作公司怎么选:从技术路线到交付保障的完整决策框架
  • 3步掌握CDS API:解锁全球气象数据的Python神器
  • Windows本地训练LoRA模型完全指南:从环境配置到效果调优
  • Pytest测试用例精准执行:从命令行筛选到CI/CD集成的完整指南
  • NoFences:终极Windows桌面分区工具,3分钟打造整洁高效工作空间
  • 如何在Windows、macOS和Linux上免费畅玩Switch游戏:Ryujinx模拟器完全指南
  • Cloud Agent 开发笔记(2):Agent 引擎与 Tool 体系
  • 从“想做一个 Craft”到 ArkBlocks:一次 AI 协作开发原生 Block Editor 的心路历程