温馨提示×

Linux版GitLab的集群搭建步骤是什么

小樊
39
2025-11-10 23:32:00
栏目: 智能运维

Linux版GitLab集群搭建步骤(以CentOS为例)

1. 基础环境准备

  • 系统要求:选择CentOS 7/8等主流发行版,确保系统已更新至最新版本(sudo yum update -y)。
  • 硬件要求:每台服务器需满足CPU≥4核、内存≥8GB、磁盘≥100GB(生产环境建议更高配置)。
  • 依赖安装:安装必要组件以支持GitLab运行:
    sudo yum install -y curl policycoreutils-python openssh-server postfix wget
    
  • 网络与防火墙:确保服务器之间网络互通,配置防火墙允许HTTP(80)、HTTPS(443)、SSH(22)端口:
    sudo firewall-cmd --permanent --zone=public --add-service=http
    sudo firewall-cmd --permanent --zone=public --add-service=https
    sudo firewall-cmd --permanent --zone=public --add-service=ssh
    sudo firewall-cmd --reload
    
  • SSH服务:启动并设置SSH开机自启,用于远程管理:
    sudo systemctl enable sshd && sudo systemctl start sshd
    

2. 安装GitLab

  • 添加GitLab官方仓库:通过脚本添加GitLab软件源,确保后续能获取最新版本:
    curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
    
  • 安装GitLab社区版(CE):使用YUM安装GitLab(若需企业版,将gitlab-ce替换为gitlab-ee):
    sudo EXTERNAL_URL="http://your-gitlab-domain.com" yum install -y gitlab-ce
    
  • 初始配置:修改/etc/gitlab/gitlab.rb文件,设置GitLab对外访问的域名或IP(替换为实际地址):
    sudo vim /etc/gitlab/gitlab.rb
    # 修改以下行(取消注释并替换域名)
    external_url 'http://your-gitlab-domain.com'
    
  • 应用配置并启动:执行以下命令使配置生效并启动GitLab服务:
    sudo gitlab-ctl reconfigure  # 应用配置
    sudo gitlab-ctl start        # 启动服务
    sudo gitlab-ctl status       # 检查服务状态(确保所有服务正常运行)
    

3. 配置负载均衡器(实现流量分发)

  • 安装Nginx:作为负载均衡器,分发请求到多个GitLab实例:
    sudo yum install -y nginx
    
  • 配置Nginx上游节点:编辑Nginx配置文件(/etc/nginx/conf.d/gitlab.conf),定义GitLab实例集群:
    upstream gitlab {
        server gitlab-node1.example.com;  # GitLab实例1域名/IP
        server gitlab-node2.example.com;  # GitLab实例2域名/IP
        server gitlab-node3.example.com;  # GitLab实例3域名/IP
    }
    
    server {
        listen 80;
        server_name gitlab.yourdomain.com;  # 负载均衡器对外域名
    
        location / {
            proxy_pass http://gitlab;       # 转发到上游集群
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
  • 重启Nginx:使配置生效并设置开机自启:
    sudo systemctl restart nginx
    sudo systemctl enable nginx
    

4. 配置高可用组件

4.1 数据库高可用(PostgreSQL主从复制)

  • 安装PostgreSQL:在每台数据库服务器上安装PostgreSQL:
    sudo yum install -y postgresql-server postgresql-contrib
    sudo postgresql-setup initdb  # 初始化数据库
    sudo systemctl start postgresql && sudo systemctl enable postgresql
    
  • 配置主从复制
    • 主库(Master):修改postgresql.conflisten_addresses = '*')和pg_hba.conf(允许从库IP访问),创建复制用户并导出数据:
      CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'your_password';
      
    • 从库(Slave):修改recovery.conf(指定主库信息),启动从库同步:
      standby_mode = 'on'
      primary_conninfo = 'host=master_ip port=5432 user=replicator password=your_password'
      
  • 配置GitLab使用PostgreSQL集群:修改/etc/gitlab/gitlab.rb,指向主库:
    gitlab_rails['db_adapter'] = 'postgresql'
    gitlab_rails['db_host'] = 'postgres-master.example.com'
    gitlab_rails['db_port'] = 5432
    gitlab_rails['db_user'] = 'gitlab'
    gitlab_rails['db_password'] = 'your_password'
    

4.2 缓存高可用(Redis Sentinel)

  • 安装Redis:在每台Redis服务器上安装Redis:
    sudo yum install -y redis
    sudo systemctl start redis && sudo systemctl enable redis
    
  • 配置Redis Sentinel:创建Sentinel配置文件(/etc/redis/sentinel.conf),指定主库信息和哨兵节点:
    sentinel monitor mymaster redis-master.example.com 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 60000
    
  • 配置GitLab使用Redis Sentinel:修改/etc/gitlab/gitlab.rb
    gitlab_rails['redis_sentinel_host'] = 'redis-sentinel.example.com'
    gitlab_rails['redis_sentinel_port'] = 26379
    gitlab_rails['redis_sentinel_role'] = 'master'
    

5. 配置GitLab实例(多节点同步)

  • 修改实例配置:在每台GitLab服务器上,编辑/etc/gitlab/gitlab.rb,设置唯一实例ID和监听端口(避免冲突):
    external_url 'http://gitlab-node1.example.com'  # 每台节点域名/IP不同
    unicorn['listen_address'] = '0.0.0.0:8080'     # 监听端口依次为8080、8081、8082
    gitlab_rails['gitlab_shell_ssh_port'] = 2222   # SSH端口依次为2222、2223、2224
    
  • 重新配置并重启:使配置生效并重启GitLab服务:
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    

6. 验证集群功能

  • 访问GitLab:通过负载均衡器域名(如gitlab.yourdomain.com)访问GitLab Web界面,使用管理员账号(默认root)登录。
  • 测试高可用:停止某台GitLab实例服务(sudo gitlab-ctl stop),检查负载均衡器是否将流量分发到其他正常节点;恢复实例后,验证数据同步情况。
  • 检查组件状态:通过GitLab控制台(Admin Area > Monitoring > Background Jobs)查看后台任务是否正常运行,确认数据库、缓存连接无异常。

注意事项

  • 共享存储(可选):若需跨节点共享Git仓库数据,可配置NFS或GlusterFS作为共享存储,挂载到/var/opt/gitlab/git-data目录(修改/etc/gitlab/gitlab.rb中的git_data_dirs配置)。
  • 备份策略:配置GitLab自动备份(sudo vim /etc/gitlab/gitlab.rb中设置gitlab_rails['backup_keep_time'] = 604800,保留7天备份),定期测试备份恢复流程。
  • 监控与告警:使用Prometheus+Granafa或Zabbix监控GitLab集群状态(如CPU、内存、磁盘使用率,服务可用性),设置告警规则及时处理故障。

0