内容提要
阿里云最近降价超过20%,我购买了ECS并计划迁移华为云的服务。项目由多个Github私有仓库组成,使用Github Action进行自动构建和部署。通过SSH连接阿里云服务器,安装git和docker,配置镜像源后成功启动项目。数据库使用PostgreSQL进行备份和恢复,最终完成数据迁移和健康检查。
延伸解读
迁移前的容器化与自动化准备
文章中的服务所有组件早已容器化,业务镜像使用私有仓库,且通过Github Action自动构建并推送镜像,使用git sha作为Tag。部署文件仓库在目标服务器拉取,并触发Action更新环境变量。这种设计使得迁移时只需在服务器上执行git pull和docker compose up即可,大幅降低了迁移复杂度。
网络与安全组配置的注意事项
迁移到阿里云ECS后,作者发现SSH连不上,原因是安全组未放行端口。需要手动开放TCP 22/80/443和UDP 500/4500(用于ipsec)。此外,作者将专有网络设置在函数计算FC网络内,便于未来内网调用。这些配置对迁移成功至关重要,读者需根据自身需求调整安全组规则。
数据库迁移的实操与简化
作者使用PostgreSQL,通过pg_dump和pg_restore进行备份恢复。由于已有cron job每日备份,直接手动触发job,下载备份文件,再通过scp上传到新服务器,在容器内执行pg_restore并重启容器。作者也提到更稳妥的做法是备份整个pg数据卷,但因其数据不重要而选择简化。
迁移后的验证与工具选择
迁移完成后,作者通过预设的health check接口验证服务,虽然报数据库错误,但同步数据后恢复正常。作者还提到阿里云有Mac arm64客户端,比华为云CodeArt仅支持Windows更方便。此外,使用Caddy自动申请HTTPS证书,简化了配置。这些细节体现了个人项目迁移中注重效率与便利的取舍。
Q&A
为什么选择阿里云而不是华为云进行服务器迁移?
因为阿里云最近降价超过20%,我选择了更便宜的服务。
如何通过SSH连接阿里云服务器?
需要打开TCP的22/80/443端口和UDP的500/4500端口,然后使用SSH命令连接。
在迁移过程中如何备份和恢复PostgreSQL数据库?
使用pg_dump进行备份,使用pg_restore进行恢复,具体命令为pg_dump -Fc和pg_restore -d。
项目中如何使用Github Action进行自动构建?
通过Github Action自动构建镜像并推送到私有镜像仓库,使用git sha作为镜像的Tag。
迁移过程中遇到的网络问题如何解决?
将部署文件仓库同步到gitee私有仓库,以避免拉取失败的问题。
如何配置Docker镜像源以加速下载?
通过修改/etc/docker/daemon.json文件,添加阿里云和其他镜像源的地址。