Files
hi-server/ops/hifast-aws-jp-migration-runbook-zh.md
2026-05-26 09:14:59 -07:00

6.9 KiB
Raw Permalink Blame History

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
    • 公有 / 私有路由表
  • 东京三层安全组已创建并复核:
    • ppanel-jp-sg-alb
    • ppanel-jp-sg-ec2
    • ppanel-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
  • 东京业务 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
  • 东京 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.md
  • ops/hifast-aws-jp-cutover-checklist-zh.md

1. 当前基线

迁移前默认当前现网状态为:

  • 香港应用 EC2hifast-hk-app-01
  • 香港 RDShifast-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. 迁移前准备

正式迁移前必须完成:

  1. 东京基础设施已创建
  2. 东京 EC2 已部署应用目录,但暂未导入正式数据
  3. 东京 RDS 可连通
    • 已验证从东京 EC2 到 ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com:3306 网络畅通
    • 当前若无密码只能得到 ERROR 1045 ... using password: NO,这表示链路正常,不表示实例异常
  4. 东京 Redis 已启动并可认证
  5. 平行域名已准备:
    • api-jp.hifast.biz
    • logs-jp.hifast.biz
  6. 东京 ALB 健康检查已通过
  7. 东京 ACM 证书已签发
  8. 东京 WAF 已挂到 ALB
  9. 已准备正式回滚入口
  10. 已把正式域名 TTL 降低

3. 香港停机冻结

在香港主环境执行:

  1. 停止业务写入
  2. ppanel-server
  3. 保留 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 导入东京

  1. 停止东京 Redis 容器
  2. 替换 /data/dump.rdb
  3. 启动东京 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>:3306
  • MySQL.Username=admin
  • MySQL.Password=<TOKYO_RDS_PASSWORD>
  • Redis.Host=127.0.0.1:6379
  • Redis.Pass=<TOKYO_REDIS_PASSWORD>
  • Site.Host=api-jp.hifast.biz
  • .envAWS_REGION=ap-northeast-1

注意:

  • 东京这台 RDS 当前不是 Secrets Manager 托管密码
  • AWS 控制台不能回看旧密码明文
  • 如果现有密码遗失,只能在 RDS 修改页重置新密码,再同步写入东京 ppanel.yaml

当前东京已实际生效:

  • MySQL.Addr=ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com:3306
  • MySQL.Username=admin
  • MySQL.Password=TkyRds20260521!N9mQ8sKe2vLp7Xa
  • Redis.Host=127.0.0.1:6379
  • Redis.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. 正式域名切换

仅在东京平行环境验收全部通过后执行:

  1. 将正式域名切到东京 ALB
  2. 观察 5xx、延迟、容器日志、RDS、Redis
  3. 保持香港不删,只做回滚保留

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 filemysql-bin-changelog.000189
  • binlog pos185053

然后在 104 重建并挂从。

9.2 Redis

104 Redis 指向东京 EC2 Redis 主库,确认:

  • 东京 role:master
  • 东京 connected_slaves:1
  • 104 role:slave
  • 104 master_link_status:up

10. 回滚

如果东京验收失败:

  • 不切正式域名
  • 继续保留香港主环境

如果正式切换后发现严重问题:

  1. 立刻把 DNS 切回香港
  2. 恢复香港 ppanel-server
  3. 放弃本次东京接管

11. 切换后观察期

切换后至少保留香港环境 7 天:

  • 香港 RDS 快照
  • 香港 Redis RDB
  • 香港 EC2 配置
  • 香港 ppanel.yaml 备份

观察期内不删除香港资源。