导读:本期聚焦于小伙伴创作的《如何在Linux上配置高可用的本地代码仓库(如GitLab)》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置高可用的本地代码仓库(如GitLab)》有用,将其分享出去将是对创作者最好的鼓励。

前置环境准备

在开始配置高可用GitLab之前,需要准备至少两台运行Linux系统的服务器,推荐选择CentOS 7及以上版本或者Ubuntu 18.04及以上版本,两台服务器需要处于同一内网环境,且网络互通。同时需要准备一个虚拟IP地址,用于高可用服务的统一访问入口,还需要确保服务器有足够的磁盘空间用于存储代码数据,建议单台服务器磁盘空间不低于100G。

如何在Linux上配置高可用的本地代码仓库(如GitLab)

依赖软件安装

首先在两台服务器上都需要安装基础依赖软件,以CentOS系统为例,执行以下命令安装所需依赖:

# 安装基础依赖
yum install -y curl policycoreutils openssh-server openssh-clients postfix
# 启动ssh服务并设置开机自启
systemctl enable sshd
systemctl start sshd
# 启动postfix邮件服务并设置开机自启,GitLab需要邮件服务发送通知
systemctl enable postfix
systemctl start postfix

GitLab基础服务部署

接下来在两台服务器上分别部署GitLab服务,首先添加GitLab的官方仓库,然后安装GitLab社区版。安装过程中需要指定服务器的域名或者IP地址,这里先暂时填写各自服务器的实际IP,后续高可用配置会统一修改为虚拟IP。

安装GitLab

执行以下命令添加仓库并安装GitLab:

# 添加GitLab仓库
curl -fsSL https://packages.gitlab.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/gitlab-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/gitlab-archive-keyring.gpg] https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gitlab_gitlab-ce.list
# 更新软件源并安装GitLab
apt-get update
apt-get install -y gitlab-ce
# 初始化GitLab配置,此处先填写当前服务器IP
gitlab-ctl reconfigure

验证基础服务

安装完成后,通过浏览器访问服务器的IP地址,能正常打开GitLab的登录页面则说明基础服务部署成功。默认的管理员账号是root,初始密码存储在/etc/gitlab/initial_root_password文件中,登录后可以先修改管理员密码,创建测试项目验证代码推送、拉取功能是否正常。

高可用组件配置

GitLab的高可用配置核心是通过Keepalived实现虚拟IP的漂移,同时结合DRBD或者共享存储实现数据同步,这里以Keepalived+DRBD的方案为例进行配置,确保两台服务器的GitLab数据保持一致,当主节点故障时虚拟IP自动漂移到备节点,服务自动恢复。

DRBD数据同步配置

首先在两台服务器上安装DRBD软件,然后配置DRBD资源,将两台服务器的指定磁盘分区作为DRBD的存储设备,实现数据实时同步。以下是DRBD的配置示例:

# 安装DRBD
yum install -y drbd84-utils kmod-drbd84
# 加载DRBD内核模块
modprobe drbd
# 编辑DRBD配置文件,路径为/etc/drbd.d/gitlab.res
resource gitlab {
    protocol C;
    on server1 {
        device /dev/drbd0;
        disk /dev/sdb1; # 替换为实际的数据磁盘分区
        address 192.168.0.101:7788; # 主节点IP和端口
        meta-disk internal;
    }
    on server2 {
        device /dev/drbd0;
        disk /dev/sdb1; # 替换为实际的数据磁盘分区
        address 192.168.0.102:7788; # 备节点IP和端口
        meta-disk internal;
    }
}
# 初始化DRBD资源
drbdadm create-md gitlab
# 启动DRBD服务
systemctl start drbd
# 在主节点上设置为主设备
drbdadm primary --force gitlab
# 格式化DRBD设备
mkfs.ext4 /dev/drbd0
# 挂载DRBD设备到GitLab的数据目录
mount /dev/drbd0 /var/opt/gitlab

Keepalived虚拟IP配置

安装Keepalived服务,配置虚拟IP的漂移规则,主节点优先级高于备节点,当主节点故障时自动切换到备节点。以下是Keepalived的配置示例:

# 安装Keepalived
yum install -y keepalived
# 编辑主节点配置文件,路径为/etc/keepalived/keepalived.conf
global_defs {
    router_id gitlab_ha_1
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0 # 替换为实际网卡名称
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.100 # 虚拟IP地址
    }
}
# 编辑备节点配置文件,priority设置为90,state设置为BACKUP
global_defs {
    router_id gitlab_ha_2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0 # 替换为实际网卡名称
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.100 # 虚拟IP地址
    }
}
# 启动Keepalived服务并设置开机自启
systemctl enable keepalived
systemctl start keepalived

GitLab配置调整

修改GitLab的配置文件/etc/gitlab/gitlab.rb,将external_url修改为虚拟IP地址,同时配置GitLab的数据目录为DRBD挂载的目录,然后重新加载配置:

# 编辑gitlab.rb配置文件
external_url 'http://192.168.0.100' # 虚拟IP地址
gitlab_rails['gitlab_data_dir'] = "/var/opt/gitlab"
# 重新加载配置
gitlab-ctl reconfigure
# 重启GitLab服务
gitlab-ctl restart

故障切换验证

配置完成后,通过虚拟IP访问GitLab服务,能正常打开页面则说明配置生效。接下来可以模拟主节点故障,关闭主节点的GitLab服务或者关机,观察虚拟IP是否自动漂移到备节点,通过虚拟IP访问服务是否正常,验证高可用切换功能是否生效。

验证步骤

  • 在主节点执行gitlab-ctl stop命令停止GitLab服务
  • 在备节点执行ip addr命令查看虚拟IP是否已经漂移到备节点
  • 通过浏览器访问虚拟IP,确认GitLab服务可以正常访问,之前创建的项目和数据都存在
  • 恢复主节点服务后,虚拟IP会自动回到主节点,服务恢复正常

常见问题与优化

在配置过程中可能会遇到DRBD数据同步延迟、Keepalived切换不生效等问题,可以通过查看/var/log/messages日志排查问题。为了提升服务稳定性,可以定期备份GitLab数据,同时可以配置GitLab的监控告警,及时发现服务异常。如果团队规模较大,还可以考虑增加GitLab的Sidekiq队列服务和PostgreSQL数据库的冗余配置,进一步提升整体服务的可用性。

GitLab高可用Linux本地代码仓库修改时间:2026-07-13 02:15:17

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。