gitlab ubuntu集群配置方法
导读:GitLab Ubuntu集群配置指南 GitLab集群配置分为基础集群部署(多节点协同工作)和高可用集群部署(故障自动转移)两类,以下是基于Ubuntu系统的详细步骤: 一、基础集群配置(多节点协同) 1. 准备工作 硬件要求:每节点至...
GitLab Ubuntu集群配置指南
GitLab集群配置分为基础集群部署(多节点协同工作)和高可用集群部署(故障自动转移)两类,以下是基于Ubuntu系统的详细步骤:
一、基础集群配置(多节点协同)
1. 准备工作
- 硬件要求:每节点至少2核CPU、4GB内存、50GB SSD存储(建议8核/8GB以上用于生产);
- 操作系统:Ubuntu 20.04 LTS及以上(确保系统包更新:
sudo apt update & & sudo apt upgrade -y
); - 网络要求:所有节点互通,开放80(HTTP)、443(HTTPS)、22(SSH)端口;
- 依赖安装:在所有节点执行以下命令安装必要组件:
sudo apt install -y curl openssh-server ca-certificates postfix tzdata sudo systemctl enable --now sshd postfix
2. 安装GitLab(Omnibus包方式)
- 添加GitLab软件源:获取最新源并导入GPG密钥:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
- 安装GitLab Community Edition(CE):替换
EXTERNAL_URL
为集群入口IP或域名(如http://gitlab-cluster.example.com
):sudo EXTERNAL_URL="http://gitlab-cluster.example.com" apt install -y gitlab-ce
- 初始化配置:运行以下命令应用配置并启动服务:
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart
3. 配置负载均衡(Nginx示例)
- 安装Nginx:在独立负载均衡节点安装Nginx:
sudo apt install -y nginx
- 配置负载均衡:编辑
/etc/nginx/conf.d/gitlab.conf
,添加以下内容(将gitlab1
、gitlab2
替换为节点域名/IP):upstream gitlab_cluster { server gitlab1.example.com:80; server gitlab2.example.com:80; } server { listen 80; server_name gitlab-cluster.example.com; location / { proxy_pass http://gitlab_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- 重启Nginx:使配置生效:
sudo systemctl restart nginx
4. 验证基础集群
- 访问
http://gitlab-cluster.example.com
,使用初始管理员账号(root
)及/etc/gitlab/initial_root_password
中的密码登录; - 创建项目并测试代码推送(
git clone http://gitlab-cluster.example.com/username/project.git
),确认多节点协同工作。
二、高可用集群配置(故障自动转移)
高可用集群需解决数据库高可用、Redis高可用、GitLab实例高可用、共享存储四大核心问题,推荐使用Kubernetes(K8S)部署。
1. 部署Kubernetes集群
- 初始化Master节点:在Master节点执行以下命令(替换
node1
为节点名称):sudo kubeadm init --pod-network-cidr=10.244.0.0/16 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 部署网络插件:使用Flannel网络插件(支持跨节点Pod通信):
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
- 加入Worker节点:在Master节点获取加入命令(
kubeadm token create --print-join-command
),在Worker节点执行该命令。
2. 部署GitLab Helm Chart
- 添加GitLab Helm仓库:获取最新Chart版本:
helm repo add gitlab https://charts.gitlab.io helm repo update
- 创建命名空间:用于隔离GitLab资源:
kubectl create namespace gitlab
- 安装GitLab:使用Helm部署GitLab(替换
< YOUR-DOMAIN>
为集群域名,< REDIS-PASSWORD>
、< POSTGRES-PASSWORD>
为自定义密码):helm install gitlab gitlab/gitlab \ --namespace gitlab \ --set externalUrl=http://< YOUR-DOMAIN> \ --set gitlabShell.sshPort=2222 \ --set redis.password=< REDIS-PASSWORD> \ --set postgresql.password=< POSTGRES-PASSWORD> \ --set ingress.enabled=true \ --set ingress.hostName=< YOUR-DOMAIN>
3. 配置高可用组件
- 数据库高可用(PostgreSQL主从复制):通过Helm values文件配置PostgreSQL主从,或使用外部数据库服务(如Amazon RDS);
- Redis高可用(哨兵模式):启用Redis哨兵模式,确保Redis服务故障时自动切换;
- 共享存储(NFS/GlusterFS):配置NFS服务器作为Git仓库共享存储,所有GitLab节点挂载同一NFS目录(如
/mnt/gitlab_data
):# NFS服务器(Node1)配置 sudo apt install -y nfs-kernel-server echo "/mnt/gitlab_data *(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports sudo systemctl restart nfs-kernel-server # GitLab节点(所有节点)挂载 sudo apt install -y nfs-common sudo mount -t nfs node1.example.com:/mnt/gitlab_data /var/opt/gitlab/git-data/repositories
- GitLab Runner高可用:部署多个Runner实例,注册到GitLab集群(
gitlab-runner register
)。
4. 验证高可用集群
- 模拟节点故障:删除GitLab Pod(
kubectl delete pod -n gitlab < gitlab-pod-name>
),观察Pod是否自动重启(由ReplicaSet控制); - 测试故障转移:停止Master节点,确认Worker节点接管服务,访问
http://< YOUR-DOMAIN>
仍能正常使用GitLab。
关键注意事项
- 数据一致性:共享存储(如NFS)需配置为只读权限,避免多节点同时写入导致数据损坏;
- 备份策略:定期备份GitLab数据(
gitlab-backup create
),存储到异地或云存储; - 监控告警:使用Prometheus+Granafa监控集群状态,设置CPU、内存、磁盘空间告警;
- 安全配置:启用HTTPS(通过Let’s Encrypt获取免费证书)、配置防火墙(
ufw allow 80,443,22
)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: gitlab ubuntu集群配置方法
本文地址: https://pptw.com/jishu/716597.html