将Gitlab迁移到内网Proxmox VE

在一台服役超过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"。

  1. 修改SSHD服务端口为"22055"。用vi编辑器或者sed这类的工具,将默认端口由"22"替换成"22055"(如下图所示),保存后重启SSHD服务。
  1. 用编辑器或者sed工具,将"gitlab.rb"中ssh端口也修改成"22055",修改的位置大致在此文件的第351行(如下图所示),在vi编辑器中,可用关键字"/ssh_port"进行快速搜索。

准备妥当后,执行指令"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拉取或者同步项目。

相关推荐
Nejosi_念旧3 天前
开发常用工具
flutter·vue·gitlab·postman
yaoshengting5 天前
GitLab集成Jira
gitlab·jira
mrhaoxiaojun6 天前
gitlab runner正常连接 提示 作业挂起中,等待进入队列 解决办法
gitlab
铜锣烧1号6 天前
【学习笔记】GitLab 使用技巧和说明和配置和使用方法
git·python·pycharm·gitlab
极小狐6 天前
如何在 Rocky Linux 上安装极狐GitLab?
gitlab·devsecops·devops·极狐gitlab·安全合规
ihengshuai8 天前
Gitlab搭建npm仓库
前端·docker·npm·gitlab
Channing Lewis8 天前
在使用 GitLab API 时,如果只能获取少量的 Merge Request(MR)信息,而没有完整的数据
gitlab·mr
Channing Lewis8 天前
如何查看gitlab mr labels 添加和删除的历史
gitlab·mr
ihengshuai8 天前
Gitlab流水线配置
前端·docker·gitlab·devops
阿里云云原生8 天前
GitLab 国际站中国大陆等地区停服,如何将数据快速迁移到云效
阿里云·云原生·gitlab