Gitlab高可用部署文档-简易版:方案二
部署方案
方案一:负载均衡(查看上篇文章)
2台gitlab同时工作(后续也增加节点,前期部署难度大,后续增加节点简单),
共用一台服务器的redis和postgresql
需要注意点:
1、在2台服务器都启动gitlab后,需要将git相关操作账号做同步,保证uid,gid相同,否则后续2台同时工作会出现权限问题
查看gitlab用到的账号: cat /etc/passwd
2、因方案一研究时间较长,虽然实现2台同时工作,分担了负载压力,但是因为采用nfs部署,导致在线web端导入其他项目gz文件无法正常导入(其他功能正常),所以临时切换为第二种方案
方案二:单机部署,做好备份;另一台可应急启用
只启用一台服务器运行,每天定时备份,在这台服务器宕机的情况下启用第二台,并恢复当天备份数据(含脚本命令)
部署步骤会在下篇文章中详细介绍
方案二(安装步骤与方案一相同,主要是配置简化了不少)
因为只有2台服务用于部署gitlab
gitlab资源配置如下(端口号:8010):
Gitlab1: 192.168.16.83
Gitlab2: 192.168.16.88
NFS 网络文件系统(端口号:2049)
服务端: 192.168.16.83
客户端: 192.168.16.88*
这种方案部署相对简单,单机部署,并每天晚上定时做好备份,另一台服务器根据备份文件可做紧急恢复服务使用,无缝衔接;但是后继无法扩展,适合中小型开发团队
一、 安装gitlab (需要在2台服务器都做相同操作)
1、 下载安装包
下载地址:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
根据需求选择下载版本,我这里使用的是15.6.2版本
2、 安装gitlab 安装命令:
rpm -i gitlab-ce-15.6.2-ce.0.el7.x86_64.rpm
3、 修改gitlab配置文件指定服务器ip和自定义端口:
vim /etc/gitlab/gitlab.rb
修改端口为8010
修改ip为当前主机ip
进入编辑器后按“i”键进入编辑状态,ESC键退出编辑状态
退出并保存,命令输入 :wq
4、 启动gitlab
sudo gitlab-ctl start
常用命令
#停止gitlab:
sudo gitlab-ctl stop
#关闭gitlab相关的进程:
systemctl stop gitlab-runsvdir.service
#(如果执行过该上面这条命令,后续启动也需要先执行)
systemctl start gitlab-runsvdir.service
#重新加载gitlab相关配置:
sudo gitlab-ctl reconfigure
#重启 gitlab:
sudo gitlab-ctl restart
#查看gitlab 运行日志:
gitlab-ctl tail
查看gitlab用到的账号: cat /etc/passwd ,并同步他们的uid,gid,保证相同
5、 后续修改配置后都需要
先执行
#重新加载gitlab相关配置:
sudo gitlab-ctl reconfigure
再执行
#重启 gitlab:
sudo gitlab-ctl restart
gitlab数据文件默认存储路径为: /var/opt/gitlab
如果需要修改存储路径 (我没有修改,使用是默认存储地址)
vim /etc/gitlab/gitlab.rb
#修改一下两处
git_data_dirs({undefined
"default" => {undefined
"path" => "/home/gitlab/git-data",
"failure_count_threshold" => 10,
"failure_wait_time" => 30,
"failure_reset_time" => 1800,
"failure_timeout" => 30
}
})
#添加一行
git_data_dir "/home/data/gitlab"
二、 安装NFS (可以省略)
因为我的备份文件是存放在共享磁盘上,方便2台服务器互访问,直接读取,这样可以保证备份文件的权限和所属用户不被篡改,哥们可以考虑用 scp命令 将备份文件传到另一台服务器
1、 服务端安装
1)、检查是否已安装rpcbind、nfs-utils
rpm -qa|grep rpcbind
rpm -qa|grep nfs-utils
如果展示安装包则表示已安装
没有安装则使用 yum安装
使用
yum -y install nfs-utils 安装nfs
yum -y install rpcbind 安装 rpc
2)、编辑/etc/exports文件
vim /etc/gitlab/gitlab.rb
编辑文件内容
/var/opt/gitlab 192.168.16.88(rw,no_all_squash,sync,no_root_squash)
保存:wq
nfs配置详解
/var/opt/gitlab :共享的文件目录
192.168.16.88 允许挂载的主机ip ,88/90 表示允许同网段 88-90多个主机挂载
ro只读访问
rw读写访问
sync所有数据在请求时写入共享
asyncNFS在写入数据前可以相应请求
secureNFS通过1024以下的安全TCP/IP端口发送
insecureNFS通过1024以上的端口发送
wdelay如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide在NFS共享目录中不共享其子目录
no_hide共享NFS目录的子目录
subtree_check如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check和上面相对,不检查父目录权限
all_squash共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash保留共享文件的UID和GID(默认)
root_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squasroot用户具有根目录的完全管理访问权限
anonuid=xxx指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx指定NFS服务器/etc/passwd文件中匿名用户的GID
3)、导出nfs配置 校验配置是否有误
#配置生效
exports -r
#查看所有的nfs共享服务端配置
exports -v
#检测本是否成功提供共享目录
showmount localhost
4)、启动rpc服务 (二选一,因系统不同 可能导致启动命令不同)
systemctl start rpcbind
service rpcbind start
5)、启动nfs 服务(二选一,如果报错多试一试) 并设置开机自启
systemctl start nfs
systemctl start nfs-server.service
#开机自启
systemctl enable nfs-server.service
6)、再次验证
showmount -e 192.168.16.83
2、 客户端安装
1)、检查是否已安装nfs-utils
rpm -qa|grep nfs-utils
如果展示安装包则表示已安装
没有安装则使用 yum安装
使用yum -y install nfs-utils 安装nfs
2)、启动nfs 服务 并添加开机自启
systemctl start nfs-server.service
systemctl enable nfs-server.service
3)、验证是否能查看到服务端共享目录
showmount -e 192.168.16.83
4)、挂载服务端共享目录至本机 /apps/gitlab-home目录
mount -t nfs 192.168.16.83:/var/opt/gitlab /apps/gitlab-home
三、修改相关配置
1、主服务器相关配置
1)、持久化nfs共享盘 (如果没有用共享磁盘请忽略此步)
vim /etc/fstab
192.168.3.233:/sf/ones-gitlab /gitlab nfs rw,sync,hard,intr,vers=3 0 0
2)、修改gitlab核心配置文件
vim /etc/gitlab/gitlab.rb
nginx['listen_port'] = 8010
external_url 'https://192.168.16.83/gitlab'
2、从服务器相关配置
1)、持久化nfs共享盘 并绑定 子目录(如果没有用共享磁盘请忽略此步)
vim /etc/fstab
192.168.3.233:/sf/ones-gitlab /gitlab nfs rw,sync,hard,intr,vers=3 0 0
2)、修改gitlab核心配置文件
vim /etc/gitlab/gitlab.rb
nginx['listen_port'] = 8010
external_url 'http://192.168.16.88:8010/gitlab'
3)、上传备份脚本和恢复备份脚本
因gitlab启动和gitlab停止需要多个命令组合且必须按照顺序执行,
这里我将一组命令写成了脚本,执行一个命令,
脚本就会按照顺序执行相关命令,
部署过程中会存在多次启动和停止gitlab 使用其配置生效,给部署过和带来不减便捷
原创不易请多支持!