记一次服务器迁移的过程

由于内部服务原支持者即将关闭服务,所以需要迁移测试环境和正式环境的服务,总共花了一天半的时间,这里记录一下操作的过程

环境搭建

  1. 系统环境
    首先是初始化相同配置的虚拟机,原有的两个虚拟机都是 CentOS-8 系统,所以同样初始化了两个2核4G的虚拟机

  2. 系统初始化
    进入虚拟机中,执行 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 数据源

  1. 安装 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

  1. 安装 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
  1. 安装 Redis
    这里比较偷懒,测试环境和正式环境的 Redis 都使用的本地机器,所以两台服务器都需要初始化 Redis,直接 yum install 安装后启动即可

  2. 安装 Gitlab Runner
    我们使用了 Gitlab CI 进行自动化测试和部署,所以需要注册 Gitlab Runner 来处理服务内容,为了减少机器的使用,直接使用当前机器注册就行了

机器迁移

  1. 数据迁移
    由于内部服务访问量有很大的时间相关性,所以直接在没有使用量的阶段使用 mysqldump 导出了sql内容,再导入到新的测试机器中,redis 数据使用 aof 文件迁移

  2. 服务迁移
    这里步骤较为复杂,首先就是通过 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
  1. 流量迁移
    最后一步,在网关中将域名对应的旧机器指向新机器,就大功告成了
posted @ 2022-07-06 15:55  love_飞影  阅读(116)  评论(0)    收藏  举报