记一次服务器迁移的过程
由于内部服务原支持者即将关闭服务,所以需要迁移测试环境和正式环境的服务,总共花了一天半的时间,这里记录一下操作的过程
环境搭建
-
系统环境
首先是初始化相同配置的虚拟机,原有的两个虚拟机都是 CentOS-8 系统,所以同样初始化了两个2核4G的虚拟机 -
系统初始化
进入虚拟机中,执行sudo -i获取系统权限
Centos 使用yum包管理系统工具,在首次执行yum update的时候,收到了如下错误
CentOS-8 - AppStream 70 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'AppStream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
原因是官方停止了 CentOS-8 的维护,如果需要继续使用 yum 下载内容,需要更换包的数据源或者升级到 CentOS Stream,显然我们不会升级系统,所以需要更新一下数据源
cd /etc/yum.repos.d/
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
yum update
等待一段时间,成功更新 yum 数据源
- 安装 NodeJS
上一步中,更新的数据源只能获取到 NodeJS 的 v10 版本,我们需要升级到 v16 的话就需要拉取 NodeJS 包的地址
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
yum install -y nodejs
这里注意一下,如果已安装了旧版本的 NodeJS,需要通过 yum remove 删除掉旧版本才可以
在安装完毕后,全局安装一些要使用的工具,如 pm2/yarn 等
- 安装 MySQL
在测试环境中,我们使用的是本机 MySQL,正式环境使用的是公司内部的 DB 系统,所以这时就需要在测试环境中安装 MySQL 服务,我们使用wget处理 MySQL repo
yum install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server
systemctl start mysql
-
安装 Redis
这里比较偷懒,测试环境和正式环境的 Redis 都使用的本地机器,所以两台服务器都需要初始化 Redis,直接yum install安装后启动即可 -
安装 Gitlab Runner
我们使用了 Gitlab CI 进行自动化测试和部署,所以需要注册 Gitlab Runner 来处理服务内容,为了减少机器的使用,直接使用当前机器注册就行了
机器迁移
-
数据迁移
由于内部服务访问量有很大的时间相关性,所以直接在没有使用量的阶段使用mysqldump导出了sql内容,再导入到新的测试机器中,redis 数据使用 aof 文件迁移 -
服务迁移
这里步骤较为复杂,首先就是通过 CI 的自动化部署,所以需要修改配置,我们的 Gitlab Runner 使用rsync同步打包好的文件,所以需要开启rsync服务,通过配置rsyncd.conf来实现跨机器同步内容,将path保存在 CI 的 variables 中
通过注册好的 Gitlab Runner 执行 PipeLine 即可部署到新的机器
此时出现了两个问题。
首先就是我们获取服务器的用户名密码是通过nacos配置获取,然而新老服务器集群网络不通!!!,新服务器无法获取nacos配置,所以只能改成 gitlab 写入 variables file 在.env.production.local中处理权限文件,在.gitignore中配置*.local不上传
遇到的第二个问题是,在 Gitlab Runner 运行的时候服务器内存不足,使用free -m查了一下发现新机器没有自动开启交换分区,所以需要手动建立一个缓冲区
swapoff -a
dd if=/dev/zero of=/var/swapfile bs=1M count=4096
mkswap /var/swapfile
swapon /var/swapfile
设置完毕后再进入 /etc/fstab 中设置开机启动
/var/swapfile swap swap defaults 0 0
- 流量迁移
最后一步,在网关中将域名对应的旧机器指向新机器,就大功告成了

浙公网安备 33010602011771号