Linux版GitLab集群搭建步骤(以CentOS为例)
sudo yum update -y)。sudo yum install -y curl policycoreutils-python openssh-server postfix wget
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
sudo systemctl enable sshd && sudo systemctl start sshd
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
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'
sudo gitlab-ctl reconfigure # 应用配置
sudo gitlab-ctl start # 启动服务
sudo gitlab-ctl status # 检查服务状态(确保所有服务正常运行)
sudo yum install -y 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;
}
}
sudo systemctl restart nginx
sudo systemctl enable nginx
sudo yum install -y postgresql-server postgresql-contrib
sudo postgresql-setup initdb # 初始化数据库
sudo systemctl start postgresql && sudo systemctl enable postgresql
postgresql.conf(listen_addresses = '*')和pg_hba.conf(允许从库IP访问),创建复制用户并导出数据:CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'your_password';
recovery.conf(指定主库信息),启动从库同步:standby_mode = 'on'
primary_conninfo = 'host=master_ip port=5432 user=replicator password=your_password'
/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'
sudo yum install -y redis
sudo systemctl start redis && sudo systemctl enable redis
/etc/redis/sentinel.conf),指定主库信息和哨兵节点:sentinel monitor mymaster redis-master.example.com 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
/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'
/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
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
gitlab.yourdomain.com)访问GitLab Web界面,使用管理员账号(默认root)登录。sudo gitlab-ctl stop),检查负载均衡器是否将流量分发到其他正常节点;恢复实例后,验证数据同步情况。Admin Area > Monitoring > Background Jobs)查看后台任务是否正常运行,确认数据库、缓存连接无异常。/var/opt/gitlab/git-data目录(修改/etc/gitlab/gitlab.rb中的git_data_dirs配置)。sudo vim /etc/gitlab/gitlab.rb中设置gitlab_rails['backup_keep_time'] = 604800,保留7天备份),定期测试备份恢复流程。