GitLab Geo双节点单机部署指南

GitLab Geo双节点单机部署指南

gitlabhq GitLab CE Mirror | Please open new issues in our issue tracker on GitLab.com gitlabhq 项目地址: https://gitcode.com/gh_mirrors/gi/gitlabhq

概述

本文详细介绍了如何在两个独立的单节点环境中部署GitLab Geo高可用方案。GitLab Geo是GitLab提供的分布式版本控制系统解决方案,可以实现跨地域的代码仓库镜像和灾难恢复。

前置条件

在开始部署前,请确保满足以下要求:

  1. 两个独立的GitLab站点

    • 一个作为主站点(primary site)
    • 另一个作为从站点(secondary site)
    • 两个站点可以采用不同规模的参考架构
  2. 许可证要求

    • 主站点必须拥有GitLab Premium或Ultimate许可证
    • 一个许可证可覆盖所有从站点
  3. 系统要求

    • PostgreSQL 12或更高版本
    • 确保所有站点满足Geo运行的基本要求

主站点配置

1. 基础配置

首先在主节点上进行以下配置:

sudo -i

编辑/etc/gitlab/gitlab.rb文件,添加唯一站点标识:

gitlab_rails['geo_node_name'] = 'primary_site'

应用配置变更:

gitlab-ctl reconfigure

2. 设置主节点

执行以下命令将当前节点设为主节点:

gitlab-ctl set-geo-primary-node

3. 数据库密码配置

为数据库用户设置密码并生成MD5哈希:

gitlab-ctl pg-password-md5 gitlab

在配置文件中添加密码设置:

postgresql['sql_user_password'] = '<md5_hash>'
gitlab_rails['db_password'] = '<明文密码>'

4. 复制用户配置

为数据库复制用户设置密码:

gitlab-ctl pg-password-md5 gitlab_replicator

在配置文件中添加:

postgresql['sql_replication_password'] = '<md5_hash>'

5. 网络配置

配置PostgreSQL监听网络接口:

postgresql['listen_address'] = '<主站点IP>'
postgresql['md5_auth_cidr_addresses'] = ['<主站点IP>/32', '<从站点IP>/32']

6. 应用配置

临时禁用自动迁移:

gitlab_rails['auto_migrate'] = false

重新配置并重启服务:

gitlab-ctl reconfigure
gitlab-ctl restart postgresql

最后重新启用迁移:

gitlab_rails['auto_migrate'] = true
gitlab-ctl reconfigure

7. 证书准备

复制PostgreSQL的TLS证书以备从站点使用:

cat ~gitlab-psql/data/server.crt

从站点配置

1. 基础准备

登录从节点并停止相关服务:

sudo -i
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

2. 网络连通性测试

测试与主站点的连接:

gitlab-rake gitlab:tcp_check[<主站点IP>,5432]

3. 证书安装

创建并安装主站点的证书:

install -D -o gitlab-psql -g gitlab-psql -m 0400 -T server.crt ~gitlab-psql/.postgresql/root.crt

4. 数据库连接测试

测试数据库连接:

sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql --list -U gitlab_replicator -d "dbname=gitlabhq_production sslmode=verify-ca" -W -h <主站点IP>

5. 角色配置

设置从节点角色:

roles(['geo_secondary_role'])

6. 数据库配置

添加数据库相关配置:

postgresql['listen_address'] = '<从站点IP>'
postgresql['md5_auth_cidr_addresses'] = ['<从站点IP>/32']
postgresql['sql_replication_password'] = '<复制密码MD5>'
postgresql['sql_user_password'] = '<数据库密码MD5>'
gitlab_rails['db_password'] = '<数据库明文密码>'

应用配置变更:

gitlab-ctl reconfigure
gitlab-ctl restart postgresql

数据库复制

1. 准备复制

选择一个唯一的复制槽名称,例如secondary_site

2. 执行复制

gitlab-ctl replicate-geo-database --slot-name=secondary_site --host=<主站点IP> --sslmode=verify-ca

后续配置

1. SSH密钥快速查找

配置SSH密钥快速查找功能,这对Geo是必需的。

2. 密钥文件复制

手动复制/etc/gitlab/gitlab-secrets.json文件从主节点到所有从节点。

3. SSH主机密钥复制

复制主站点的SSH主机密钥到从站点:

find /etc/ssh -iname 'ssh_host_*' -exec cp {} {}.backup.`date +%F` \;

注意事项

  1. 每个从站点必须使用唯一的复制槽名称
  2. 认证由主站点处理,不要在从站点设置自定义认证
  3. 任何需要管理员权限的变更都应在主站点进行
  4. PostgreSQL升级需要特别小心,建议禁用自动升级

通过以上步骤,您就完成了GitLab Geo在两个单节点环境中的部署。这种配置可以提供跨地域的代码仓库镜像,增强系统的可用性和灾难恢复能力。

gitlabhq GitLab CE Mirror | Please open new issues in our issue tracker on GitLab.com gitlabhq 项目地址: https://gitcode.com/gh_mirrors/gi/gitlabhq

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翟江哲Frasier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值