在一台服役超过15年得高龄服务器上,运行了一套Gitlab 11.0,因为使用的人比较少,访问不频繁,未将其加入到高可用集群平台。但是最近以来,开发人员经常反馈Gitlab不能使用,通过仔细排查,发现故障的原因是物理服务器运行一段时间后就死机。为了解决这个麻烦,计划将Gitlab迁移到Proxmox VE,方便对其备份及故障快速恢复(虚拟机整体恢复)。
迁移的过程大致分成几步:导出源Gitlab数据、Proxmox VE创建虚拟机并安装好Centos 操作系统、Centos 上部署与原服务器相同版本的Gitlab(高版本导入备份数据时会失败)、复制原服务器Gitlab备份到目标Gitlab设定的备份目录、导入备份数据、启动Gitlab并远程登录验证、端口映射及Gitlab配置文件修改。
源Gitlab导出数据
登录源服务器,查看Gitlab配置文件“gitlab.rb”备份路径的设置,执行导出操做后,备份文件将在此目录生成,用指令” grep backup_path? gitlab.rb |grep -v \#“搜索出备份路径为”/data/backups“,如下图所示。
在未备份之前,目录“/data/backups”是空的。现在开始执行指令“gitlab-rake gitlab:backup:create”进行数据导出,如下图所示。
如果没有意外,执行完毕,将生成“.tar”为后缀的压缩文件(如下图所示),无需将此文件解压,直接将此文件复制到目标系统Gitlab设定的备份目录即可。
目标服务器环境准备
在Proxmox VE上创建虚拟机,并分配相应的资源。接着在创建的虚拟机上安装Centos 7操作系统,设定好网络参数,使其可以访问外网,以方便用”yum“进行Gitlab的安装。
关闭Centos的”firewalld“服务(服务器在内网,无需使用主机防火墙),并将“selinux”的值由“enforce”设置成“disabled”,减少干扰因素。手动执行指令“yum install ?https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.0.0-ce.0.el7.x86_64.rpm”进行在线安装,前边强调过,版本最好一致,如果有必要,等导入备份且运行正常后,再对Gitlab进行升级。
目标系统安装好Gitlab以后,最好与源系统的配置保持一致。那么,就直接从源站将配置文件”gitlab.rb”复制过来,替换到默认生成的配置文件“gitlab”。除此之外,还有一个源站的文件“gitlab-secrets.json”也要迁移到目标系统。
由于需要从外网进行SSH 获取Gitlab代码,因此这里将SSH端口设置成“22055”。对SSH相关的修改有两处,一处是“/etc/ssh/sshd_config”,另一处则是Gitlab配置文件”gitlab.rb”。
准备妥当后,执行指令“gitlab-ctl reconfigur“对配置和运行环境进行检查,如果没有报错,就能保证Gitlab可以正常运行。
目标服务器导入备份数据
将源Gitlab的备份文件复制到目标系统备份目录“/data/backups“,执行指令”gitlab-rake gitlab:backup:restore BACKUP=1702870559_2023_12_18_11.0.0“进行恢复。需要注意的是,”BUCKUP“的取值是从复制来的备份文件截取前半部分,即只取数字部分,如下图所示。
导入完毕,执行”gitlab-ctl start” 启动Gitlab服务。远端浏览器输入Gitlab所在系统的IP地址,输入用户名与密码,验证恢复数据的正确性和有效性,如下图所示。
SSH内外网穿透
在边界设备安装软件Rinetd,Centos 7系统的话,直接”yum install rinetd”片刻就安装好。编辑文件“/etc/rinetd“,新增文本行”142.87.62.195 22055 172.16.28.66 22055“,保存修改,执行”/etc/init.d/rinetd start”启动服务。远程用ssh客户端以“22055“端口连接系统“142.87.62.195“验证配置的正确性和有效行。无误后,再远程用git拉取或者同步项目。