6.9 KiB
6.9 KiB
Hifast AWS 香港到日本东京迁移 Runbook
本文档用于把当前香港区 ap-east-1 主生产,迁移到日本东京 ap-northeast-1。
适用目标:
- 东京成为新主站
- 架构升级为
ALB + WAF + EC2 + RDS 104.238.220.230继续作为东京主站的 MySQL / Redis 外部灾备
0. 当前实施状态
截至 2026-05-21:
- 东京迁移执行资产已在仓库内补齐
- 东京网络基础资源已创建并复核:
- VPC
ppanel-jp-prod/vpc-0846b23b4a7d64eac - 2 个公有子网
- 2 个私有子网
- IGW
- 公有 / 私有路由表
- VPC
- 东京三层安全组已创建并复核:
ppanel-jp-sg-albppanel-jp-sg-ec2ppanel-jp-sg-rds
- 东京 RDS 已创建并可用:
- Endpoint:
ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com - Port:
3306 - Username:
admin - Credential management:
self-managed - Current password visibility:
cannot be viewed in AWS console; only reset is supported
- Endpoint:
- 东京业务 EC2 已创建并运行:
- Name:
ppanel-app-jp-01 - Instance ID:
i-07839130074cd7ed9 - Type:
c7i.xlarge - Private IP:
10.20.1.168 - Elastic IP:
3.114.29.208
- Name:
- 东京 S3 备份桶已创建
- 东京 ACM 证书已请求,仍等待 DNS 验证
- 当前尚未完成的核心资源:
- ALB
- WAF
- ACM DNS 验证
- 东京应用目录部署与数据导入
建议先执行:
cp deploy/aws/ap-northeast-1/configs/aws-jp-infra.env.example /root/aws-jp-infra.env
vim /root/aws-jp-infra.env
bash deploy/scripts/aws_jp_create_base_infra.sh /root/aws-jp-infra.env
bash deploy/scripts/aws_jp_describe_state.sh /root/aws-jp-infra.env
然后把结果回填到:
deploy/aws/ap-northeast-1/configs/resource-inventory.current.mdops/hifast-aws-jp-cutover-checklist-zh.md
1. 当前基线
迁移前默认当前现网状态为:
- 香港应用 EC2:
hifast-hk-app-01 - 香港 RDS:
hifast-mysql-prod-v2.cd6aey40m6ag.ap-east-1.rds.amazonaws.com - 香港 Redis 主库:
18.163.33.75:6379 - 外部灾备:
104.238.220.230 - 当前应用部署目录:
/opt/ppanel - 当前应用配置文件:
/opt/ppanel/configs/ppanel.yaml - 当前业务容器:
ppanel-server
2. 迁移前准备
正式迁移前必须完成:
- 东京基础设施已创建
- 东京 EC2 已部署应用目录,但暂未导入正式数据
- 东京 RDS 可连通
- 已验证从东京 EC2 到
ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com:3306网络畅通 - 当前若无密码只能得到
ERROR 1045 ... using password: NO,这表示链路正常,不表示实例异常
- 已验证从东京 EC2 到
- 东京 Redis 已启动并可认证
- 平行域名已准备:
api-jp.hifast.bizlogs-jp.hifast.biz
- 东京 ALB 健康检查已通过
- 东京 ACM 证书已签发
- 东京 WAF 已挂到 ALB
- 已准备正式回滚入口
- 已把正式域名 TTL 降低
3. 香港停机冻结
在香港主环境执行:
- 停止业务写入
- 停
ppanel-server - 保留 Nginx 维护页或直接下线入口
建议命令:
cd /opt/ppanel
docker compose -f docker-compose.cloud.yml stop ppanel-server
冻结后确认:
/v1/common/heartbeat不再提供正式流量- 不再有新写入进入香港 MySQL / Redis
4. 导出香港数据
4.1 MySQL
从香港主库导出:
mysqldump \
-h hifast-mysql-prod-v2.cd6aey40m6ag.ap-east-1.rds.amazonaws.com \
-u admin \
-p \
--single-transaction \
--routines \
--triggers \
--events \
--set-gtid-purged=OFF \
hifast | gzip > hifast-full.sql.gz
4.2 Redis
在香港 Redis 主库导出:
docker exec hifast-redis redis-cli -a '<REDIS_PASSWORD>' BGSAVE
docker cp hifast-redis:/data/dump.rdb ./dump.rdb
5. 导入东京
5.1 MySQL 导入东京 RDS
gunzip -c hifast-full.sql.gz | mysql -h <TOKYO_RDS_ENDPOINT> -u admin -p hifast
导入后确认:
mysql -h <TOKYO_RDS_ENDPOINT> -u admin -p -e "USE hifast; SHOW TABLES;"
5.2 Redis 导入东京
- 停止东京 Redis 容器
- 替换
/data/dump.rdb - 启动东京 Redis 容器
导入后确认:
docker exec hifast-redis redis-cli -a '<TOKYO_REDIS_PASSWORD>' PING
6. 启动东京应用
更新东京:
/opt/ppanel/configs/ppanel.yaml/opt/ppanel/.env
关键值:
MySQL.Addr=<TOKYO_RDS_ENDPOINT>:3306MySQL.Username=adminMySQL.Password=<TOKYO_RDS_PASSWORD>Redis.Host=127.0.0.1:6379Redis.Pass=<TOKYO_REDIS_PASSWORD>Site.Host=api-jp.hifast.biz.env中AWS_REGION=ap-northeast-1
注意:
- 东京这台 RDS 当前不是 Secrets Manager 托管密码
- AWS 控制台不能回看旧密码明文
- 如果现有密码遗失,只能在 RDS 修改页重置新密码,再同步写入东京
ppanel.yaml
当前东京已实际生效:
MySQL.Addr=ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com:3306MySQL.Username=adminMySQL.Password=TkyRds20260521!N9mQ8sKe2vLp7XaRedis.Host=127.0.0.1:6379Redis.Pass=hifast67yj
启动:
cd /opt/ppanel
docker compose -f docker-compose.cloud.yml up -d
7. 东京平行环境验收
至少执行:
curl -sf http://127.0.0.1:8080/v1/common/heartbeat
curl -sf http://127.0.0.1/v1/common/heartbeat
docker compose -f /opt/ppanel/docker-compose.cloud.yml ps
docker compose -f /opt/ppanel/docker-compose.cloud.yml logs --tail=200 ppanel-server
必须验证:
- ALB 健康检查返回
200 - 后台可登录
- 用户登录 / 注册 / 订阅正常
- 验证码 / 会话 / 限流正常
- MySQL / Redis 无连接错误
- WAF 不误伤正常请求
- 平行域名外网访问正常
8. 正式域名切换
仅在东京平行环境验收全部通过后执行:
- 将正式域名切到东京
ALB - 观察 5xx、延迟、容器日志、RDS、Redis
- 保持香港不删,只做回滚保留
9. 104 灾备重挂
9.1 MySQL
在东京 RDS 上:
CALL mysql.rds_set_configuration('binlog retention hours', 24);
CREATE USER IF NOT EXISTS 'repl'@'104.238.220.230' IDENTIFIED BY '<REPL_PASSWORD>';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'104.238.220.230';
FLUSH PRIVILEGES;
SHOW BINARY LOG STATUS;
当前东京已准备完成:
repl@104.238.220.230- 复制密码:
XwWrQGVWtxmXJ3etHmkFvnRSD54MKYer - binlog file:
mysql-bin-changelog.000189 - binlog pos:
185053
然后在 104 重建并挂从。
9.2 Redis
将 104 Redis 指向东京 EC2 Redis 主库,确认:
- 东京
role:master - 东京
connected_slaves:1 104role:slave104master_link_status:up
10. 回滚
如果东京验收失败:
- 不切正式域名
- 继续保留香港主环境
如果正式切换后发现严重问题:
- 立刻把 DNS 切回香港
- 恢复香港
ppanel-server - 放弃本次东京接管
11. 切换后观察期
切换后至少保留香港环境 7 天:
- 香港 RDS 快照
- 香港 Redis RDB
- 香港 EC2 配置
- 香港
ppanel.yaml备份
观察期内不删除香港资源。