在CentOS上搭建GitLab集群是一个复杂的过程,涉及到多个步骤和组件的配置。以下是一个基本的指南,帮助你开始搭建GitLab集群。
首先,确保你的系统是最新的,并安装必要的依赖包:
sudo yum update -y
sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix wget
确保你的服务器可以通过网络访问,并且防火墙允许HTTP/HTTPS流量。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
你可以使用GitLab官方提供的安装脚本或直接下载RPM包进行安装。以下是使用RPM包的示例:
# 创建存放gitlab安装包的目录
mkdir /home/soft/gitlab_soft
cd /home/soft/gitlab_soft
# 下载gitlab安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.11.0-ce.0.el7.x86_64.rpm
# 安装gitlab
sudo rpm -ivh gitlab-ce-16.11.0-ce.0.el7.x86_64.rpm
安装完成后,你需要配置GitLab的基本设置,如外部URL和默认域名。
# 编辑gitlab配置文件
sudo vim /etc/gitlab/gitlab.rb
# 修改外部URL
external_url 'http://your_gitlab_server_ip:8080'
# 保存并退出
:wq
# 重新配置并启动GitLab
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
为了实现高可用性,你需要配置负载均衡器和多个GitLab实例。
# 安装Nginx
sudo yum install -y nginx
# 编辑Nginx配置文件
sudo vim /etc/nginx/conf.d/gitlab.conf
# 添加以下内容
upstream gitlab {
server gitlab1.example.com;
server gitlab2.example.com;
server gitlab3.example.com;
}
server {
listen 80;
server_name your_gitlab_domain.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;
}
}
# 保存并退出
:wq
# 重新启动Nginx
sudo systemctl restart nginx
在每台服务器上重复上述步骤,配置不同的外部URL和端口。
GitLab使用PostgreSQL作为数据库,Redis作为缓存。你需要在每台服务器上安装并配置这些组件。
# 安装PostgreSQL
sudo yum install -y postgresql-server postgresql-contrib
# 初始化PostgreSQL
sudo postgresql-setup initdb
# 启动并启用PostgreSQL服务
sudo systemctl start postgresql
sudo systemctl enable postgresql
# 创建数据库和用户
sudo -u postgres psql
CREATE DATABASE gitlabhq_production;
CREATE USER gitlab WITH ENCRYPTED PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production TO gitlab;
\q
# 安装Redis
sudo yum install -y redis
# 启动并启用Redis服务
sudo systemctl start redis
sudo systemctl enable redis
通过访问负载均衡器的IP地址或域名,测试GitLab的高可用性。确保所有实例都能正常响应请求。