
高可用主备架构方案企业级GitLab高可用部署主要有以下几种主流方案方案一DRBD Pacemaker Corosync主备模式该架构为Active/Passive主/备模式只有主节点运行GitLab服务并挂载存储备节点通过DRBD实时同步数据。当主节点宕机时Pacemaker自动将VIP和存储切换到备节点。此方案适合中小型企业硬件成本低约比单节点增加40%。方案二GitLab Geo地理分布式GitLab企业版EE原生提供的Geo功能可实现完整的实例级复制。主站点可读写辅助站点只读支持自动故障转移。需要GitLab Premium或Ultimate订阅。方案三分层高可用架构官方参考架构将GitLab各组件拆分部署前端负载均衡HAProxy/Nginx 多个GitLab应用节点 PostgreSQL集群Patronietcd Redis Sentinel 共享存储NFS/Ceph。适合大规模企业。本文推荐方案一DRBD Pacemaker 性价比高、部署相对简单适合大多数企业场景。如团队规模超过200人建议升级到方案三。1.2 硬件配置建议团队规模CPU内存存储网络5-20人4核8GB100GB SSD100Mbps20-100人8核16GB500GB NVMe SSD1Gbps100人以上16核32GBRAID10 SSD阵列多网卡绑定⚠️ 生产环境强烈建议使用SSD存储GitLab官方建议禁用swap分区。1.3 服务器规划示例角色主机名IP地址配置主节点gitlab-primary192.168.1.108核16G 500GB SSD备节点gitlab-secondary192.168.1.118核16G 500GB SSD虚拟IPVIPgitlab.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 配置防火墙bashsudo 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 enable2.3 系统优化配置bash# 禁用swapGitLab官方建议 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 -p2.4 配置SSH免密登录主备节点间bash# 在主节点生成SSH密钥 ssh-keygen -t rsa -b 4096 -N -f ~/.ssh/id_rsa # 将公钥复制到备节点 ssh-copy-id root192.168.1.11 # 同样在备节点生成并复制到主节点 ssh-keygen -t rsa -b 4096 -N -f ~/.ssh/id_rsa ssh-copy-id root192.168.1.10三、安装GitLab3.1 添加GitLab官方仓库使用官方源国外服务器较快bashcurl -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 安装GitLabbash# 安装企业版设置外部访问URL sudo EXTERNAL_URLhttps://gitlab.local apt-get install -y gitlab-ee如果尚未配置域名和SSL证书可先使用IP地址EXTERNAL_URLhttp://192.168.1.103.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] gitlabyour-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] gitlabyour-email.com3.4 应用配置并启动bash