ubuntu

Ubuntu下如何实现GitLab的高可用性

小樊
39
2025-09-09 02:07:43
栏目: 智能运维

在Ubuntu下实现GitLab高可用性,可采用主从复制架构或共享存储架构,以下是具体步骤及关键配置:

一、主从复制架构(推荐)

1. 环境准备

2. 安装GitLab

在所有节点上执行:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash  
sudo apt-get install gitlab-ce  

3. 配置主节点(主库)

编辑/etc/gitlab/gitlab.rb

external_url 'http://gitlab-primary.example.com'  
postgresql['enable'] = true  
redis['enable'] = true  
gitaly['enable'] = true  

运行sudo gitlab-ctl reconfigure重启服务。

4. 配置从节点(副本)

在从节点上执行:

sudo apt-get install gitlab-ce  
# 停止服务并清空数据  
sudo gitlab-ctl stop  
sudo rm -rf /var/opt/gitlab/postgresql/data/*  
# 从主节点复制数据(需通过rsync或pg_basebackup)  
# 示例:rsync -avz /var/opt/gitlab/postgresql/data/ user@主节点IP:/var/opt/gitlab/postgresql/data/  

编辑/etc/gitlab/gitlab.rb,关闭数据库和缓存服务:

postgresql['enable'] = false  
redis['enable'] = false  

添加Gitaly配置(指向主节点):

gitaly['listen_addr'] = '0.0.0.0:8075'  
gitaly['token'] = 'your-secret-token'  # 需与主节点一致  

运行sudo gitlab-ctl reconfigure

5. 配置负载均衡(Nginx)

在负载均衡服务器上编辑/etc/nginx/nginx.conf

upstream gitlab {  
    server 主节点IP:80;  
    server 从节点IP:80 backup;  # 从节点设为backup  
}  
server {  
    listen 80;  
    server_name gitlab.example.com;  
    location / {  
        proxy_pass http://gitlab;  
        proxy_set_header Host $host;  
    }  
}  

重启Nginx:sudo systemctl restart nginx

6. 数据库与缓存同步

二、共享存储架构(可选)

若需多节点同时处理读写,可使用NFS/Ceph共享存储:

  1. 安装NFS服务端,在共享存储服务器上配置共享目录:
    sudo apt-get install nfs-kernel-server  
    sudo nano /etc/exports  
    # 添加:/srv/gitlab *(rw,sync,no_subtree_check)  
    sudo exportfs -a  
    
  2. 在所有GitLab节点上安装NFS客户端并挂载共享目录:
    sudo apt-get install nfs-common  
    sudo mount -t nfs 共享存储IP:/srv/gitlab /var/opt/gitlab/git-data  
    
  3. 确保所有节点的/etc/gitlab/gitlab.rbgit_data_dirs指向共享路径。

三、监控与故障转移

  1. 监控工具:使用Prometheus+Grafana监控节点状态,配置告警规则。
  2. 自动故障转移:通过Nginx健康检查(option httpchk)或第三方工具(如Keepalived)实现主节点故障时自动切换。
  3. 定期备份:在主节点执行sudo gitlab-rake gitlab:backup:create,并存储到异地。

四、验证高可用性

参考来源

0
看了该问题的人还看了