x
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
# Hifast 东京切换执行清单
|
||||
|
||||
本文档用于正式执行香港 `ap-east-1` -> 东京 `ap-northeast-1` 迁移时,逐项勾选和留痕。
|
||||
|
||||
## 0. 当前已知东京状态
|
||||
|
||||
- 东京 VPC `ppanel-jp-prod` 已创建
|
||||
- 东京 VPC ID:`vpc-0846b23b4a7d64eac`
|
||||
- 4 个东京子网曾在 AWS 控制台录入,但提交时登录态失效
|
||||
- 所以当前要按“子网未确认成功”处理
|
||||
- 后续所有东京资源创建前,先执行一次:
|
||||
- `bash deploy/scripts/aws_jp_describe_state.sh /root/aws-jp-infra.env`
|
||||
- 真实状态登记文件:
|
||||
- `deploy/aws/ap-northeast-1/configs/resource-inventory.current.md`
|
||||
|
||||
## 1. 真实值清单
|
||||
|
||||
在开始创建东京正式资源前,必须补齐这些真实值:
|
||||
|
||||
- 正式 API 域名:
|
||||
- 东京平行 API 域名:
|
||||
- 东京平行日志域名:
|
||||
- 运维固定公网 IP / CIDR:
|
||||
- 东京 EC2 SSH Key Pair 名称:
|
||||
- 东京 RDS 管理员密码:`TkyRds20260521!N9mQ8sKe2vLp7Xa`
|
||||
- 东京 RDS 凭证管理方式:`self-managed`
|
||||
- 东京 RDS 当前密码是否可回看:`否,只能重置`
|
||||
- 东京 Redis 密码:`hifast67yj`
|
||||
- `JwtAuth.AccessSecret`:
|
||||
- `Administrator.Email`:`admin@ppanel.dev`
|
||||
- `Administrator.Password`:`PpanelAdmin!20260521Temp`
|
||||
- `AppSignature.AppSecrets.android-client`:`uB4G,XxL2{7b`
|
||||
- `AppSignature.AppSecrets.ios-client`:`uB4G,XxL2{7b`
|
||||
- `AppSignature.AppSecrets.web-client`:`uB4G,XxL2{7b`
|
||||
- `device.security_secret`:`uB4G,XxL2{7b`
|
||||
- 东京备份桶最终名称:
|
||||
- `104.238.220.230` MySQL 复制密码:`XwWrQGVWtxmXJ3etHmkFvnRSD54MKYer`
|
||||
- `104.238.220.230` Redis 主从认证密码:`hifast67yj`
|
||||
|
||||
## 2. 东京资源创建勾选
|
||||
|
||||
- 已切换 AWS 控制台到 `ap-northeast-1`
|
||||
- 已确认东京区可用
|
||||
- 已确认 EC2 配额满足 `t4g.large`
|
||||
- 已确认 RDS 配额满足 `db.r7g.xlarge`
|
||||
- 已确认 ALB / ACM / WAF / S3 可正常创建
|
||||
- 已创建 VPC
|
||||
- 已创建 2 个公有子网
|
||||
- 已创建 2 个私有子网
|
||||
- 已创建 IGW
|
||||
- 已配置公私网路由表
|
||||
- 已创建 `sg-alb`
|
||||
- 已创建 `sg-ec2`
|
||||
- 已创建 `sg-rds`
|
||||
- 已创建东京 RDS
|
||||
- 已创建东京 EC2
|
||||
- 已在 EC2 启动 Docker / Nginx
|
||||
- 已创建东京 ACM 证书
|
||||
- 已创建 Target Group
|
||||
- 已创建 ALB
|
||||
- 已创建 WAF 并挂到 ALB
|
||||
- 已创建东京 S3 备份桶并开启 versioning
|
||||
|
||||
## 3. 东京应用部署勾选
|
||||
|
||||
- 已上传 `docker-compose.cloud.yml`
|
||||
- 已上传 `configs/ppanel.yaml`
|
||||
- 已上传 `.env`
|
||||
- 已上传 `grafana/`
|
||||
- 已上传 `loki/`
|
||||
- 已上传 `prometheus/`
|
||||
- 已上传 `tempo/`
|
||||
- 已安装东京 Nginx 配置
|
||||
- 已启动 `ppanel-server`
|
||||
- 已启动 `hifast-redis`
|
||||
- 已启动 observability 容器
|
||||
- `curl http://127.0.0.1:8080/v1/common/heartbeat` 正常
|
||||
- `curl http://127.0.0.1/v1/common/heartbeat` 正常
|
||||
- ALB 健康检查正常
|
||||
|
||||
## 4. 停机迁移勾选
|
||||
|
||||
- 已降低正式域名 TTL
|
||||
- 已停止香港 `ppanel-server`
|
||||
- 已确认香港不再有新写入
|
||||
- 已导出香港 MySQL `hifast-full.sql.gz`
|
||||
- 已导出香港 Redis `dump.rdb`
|
||||
- 已导入东京 RDS
|
||||
- 已导入东京 Redis
|
||||
- 东京应用已改为连接东京 MySQL / Redis
|
||||
- 平行域名验收通过
|
||||
|
||||
## 5. 104 灾备重挂勾选
|
||||
|
||||
- 东京 RDS 已设置 `binlog retention hours`
|
||||
- 东京 RDS 已创建 `repl@104.238.220.230`
|
||||
- 已用东京 dump 重建 `104` 的 `hifast`
|
||||
- `104` MySQL 已成功挂东京主库
|
||||
- `104` MySQL `Replica_IO_Running: Yes`
|
||||
- `104` MySQL `Replica_SQL_Running: Yes`
|
||||
- `104` MySQL `Seconds_Behind_Source: 0`
|
||||
- `104` Redis 已成功挂东京主库
|
||||
- 东京 Redis `connected_slaves:1`
|
||||
- `104` Redis `role:slave`
|
||||
- `104` Redis `master_link_status:up`
|
||||
|
||||
## 6. 正式切换与回滚勾选
|
||||
|
||||
- 已切正式域名到东京 ALB
|
||||
- 外网请求正常
|
||||
- 核心业务接口无 `5xx`
|
||||
- 应用日志无 MySQL / Redis 连接错误
|
||||
- WAF 无误伤
|
||||
- 已验证 DNS 可回切
|
||||
- 香港环境已保留为只读回滚基线
|
||||
- 香港环境计划保留 `7` 天观察期
|
||||
@@ -0,0 +1,286 @@
|
||||
# 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 验证
|
||||
- 东京应用目录部署与数据导入
|
||||
|
||||
建议先执行:
|
||||
|
||||
```bash
|
||||
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. 当前基线
|
||||
|
||||
迁移前默认当前现网状态为:
|
||||
|
||||
- 香港应用 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. 迁移前准备
|
||||
|
||||
正式迁移前必须完成:
|
||||
|
||||
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 维护页或直接下线入口
|
||||
|
||||
建议命令:
|
||||
|
||||
```bash
|
||||
cd /opt/ppanel
|
||||
docker compose -f docker-compose.cloud.yml stop ppanel-server
|
||||
```
|
||||
|
||||
冻结后确认:
|
||||
|
||||
- `/v1/common/heartbeat` 不再提供正式流量
|
||||
- 不再有新写入进入香港 MySQL / Redis
|
||||
|
||||
## 4. 导出香港数据
|
||||
|
||||
### 4.1 MySQL
|
||||
|
||||
从香港主库导出:
|
||||
|
||||
```bash
|
||||
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 主库导出:
|
||||
|
||||
```bash
|
||||
docker exec hifast-redis redis-cli -a '<REDIS_PASSWORD>' BGSAVE
|
||||
docker cp hifast-redis:/data/dump.rdb ./dump.rdb
|
||||
```
|
||||
|
||||
## 5. 导入东京
|
||||
|
||||
### 5.1 MySQL 导入东京 RDS
|
||||
|
||||
```bash
|
||||
gunzip -c hifast-full.sql.gz | mysql -h <TOKYO_RDS_ENDPOINT> -u admin -p hifast
|
||||
```
|
||||
|
||||
导入后确认:
|
||||
|
||||
```bash
|
||||
mysql -h <TOKYO_RDS_ENDPOINT> -u admin -p -e "USE hifast; SHOW TABLES;"
|
||||
```
|
||||
|
||||
### 5.2 Redis 导入东京
|
||||
|
||||
1. 停止东京 Redis 容器
|
||||
2. 替换 `/data/dump.rdb`
|
||||
3. 启动东京 Redis 容器
|
||||
|
||||
导入后确认:
|
||||
|
||||
```bash
|
||||
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`
|
||||
- `.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:3306`
|
||||
- `MySQL.Username=admin`
|
||||
- `MySQL.Password=TkyRds20260521!N9mQ8sKe2vLp7Xa`
|
||||
- `Redis.Host=127.0.0.1:6379`
|
||||
- `Redis.Pass=hifast67yj`
|
||||
|
||||
启动:
|
||||
|
||||
```bash
|
||||
cd /opt/ppanel
|
||||
docker compose -f docker-compose.cloud.yml up -d
|
||||
```
|
||||
|
||||
## 7. 东京平行环境验收
|
||||
|
||||
至少执行:
|
||||
|
||||
```bash
|
||||
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 上:
|
||||
|
||||
```sql
|
||||
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`
|
||||
- `104` `role:slave`
|
||||
- `104` `master_link_status:up`
|
||||
|
||||
## 10. 回滚
|
||||
|
||||
如果东京验收失败:
|
||||
|
||||
- 不切正式域名
|
||||
- 继续保留香港主环境
|
||||
|
||||
如果正式切换后发现严重问题:
|
||||
|
||||
1. 立刻把 DNS 切回香港
|
||||
2. 恢复香港 `ppanel-server`
|
||||
3. 放弃本次东京接管
|
||||
|
||||
## 11. 切换后观察期
|
||||
|
||||
切换后至少保留香港环境 `7` 天:
|
||||
|
||||
- 香港 RDS 快照
|
||||
- 香港 Redis RDB
|
||||
- 香港 EC2 配置
|
||||
- 香港 `ppanel.yaml` 备份
|
||||
|
||||
观察期内不删除香港资源。
|
||||
@@ -0,0 +1,246 @@
|
||||
# Hifast 当前架构文档(东京主站版)
|
||||
|
||||
最后更新:`2026-05-21`
|
||||
|
||||
这份文档只描述**当前真实生效**的架构,不描述理想目标,不混入已经下线或待迁移的香港旧链路。
|
||||
|
||||
如果后续东京 `ALB / WAF / 正式域名` 上线,应继续更新这份文档,而不是回头参考旧香港架构文档。
|
||||
|
||||
## 1. 当前结论
|
||||
|
||||
当前已经实际跑起来的是:
|
||||
|
||||
`用户 / 运维 -> 东京 EC2 -> ppanel-server + Redis + observability -> 东京 RDS MySQL`
|
||||
|
||||
当前还**没有**实际生效的组件:
|
||||
|
||||
- `ALB`
|
||||
- `WAF`
|
||||
- 正式域名切流
|
||||
- `104.238.220.230` 重挂东京 MySQL / Redis 从库
|
||||
|
||||
也就是说,东京环境目前是:
|
||||
|
||||
- 一台业务 EC2 已可用
|
||||
- 一台东京 RDS 已可用
|
||||
- 本机 Redis 已可用
|
||||
- `ppanel-server` 已成功启动并连通 MySQL / Redis
|
||||
- 灾备链路参数已准备好,但 `104` 还没最终挂上去
|
||||
|
||||
## 2. 当前真实拓扑
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
USER["用户 / 运维"] --> EIP["东京 EC2 公网入口\n3.114.29.208"]
|
||||
EIP --> NGINX["Nginx\nEC2 本机"]
|
||||
NGINX --> APP["ppanel-server\nhost network\n127.0.0.1:8080"]
|
||||
APP --> REDIS["Redis Docker\n127.0.0.1:6379"]
|
||||
APP --> RDS["Tokyo RDS MySQL\nppanel-mysql-jp"]
|
||||
APP --> OBS["Grafana / Loki / Tempo / Prometheus"]
|
||||
|
||||
RDS -. 预留复制 .-> DRMYSQL["104.238.220.230\nMySQL DR\n未最终接入"]
|
||||
REDIS -. 预留复制 .-> DRREDIS["104.238.220.230\nRedis DR\n未最终接入"]
|
||||
```
|
||||
|
||||
## 3. 云资源清单
|
||||
|
||||
### 3.1 Region
|
||||
|
||||
- AWS account: `hifastvpn (200810848252)`
|
||||
- Region: `ap-northeast-1`
|
||||
|
||||
### 3.2 网络
|
||||
|
||||
- VPC: `ppanel-jp-prod`
|
||||
- VPC ID: `vpc-0846b23b4a7d64eac`
|
||||
- CIDR: `10.20.0.0/16`
|
||||
|
||||
公有子网:
|
||||
|
||||
- `ppanel-jp-public-a` / `subnet-091232bdb53e71490` / `10.20.0.0/24`
|
||||
- `ppanel-jp-public-c` / `subnet-01ba0975c525ce8cf` / `10.20.1.0/24`
|
||||
|
||||
私有子网:
|
||||
|
||||
- `ppanel-jp-private-a` / `subnet-0bd13111c02f0edbe` / `10.20.10.0/24`
|
||||
- `ppanel-jp-private-c` / `subnet-0d86c5c756dbc84b2` / `10.20.11.0/24`
|
||||
|
||||
### 3.3 安全组
|
||||
|
||||
- `ppanel-jp-sg-alb`
|
||||
- `80/tcp <- 0.0.0.0/0`
|
||||
- `443/tcp <- 0.0.0.0/0`
|
||||
- `ppanel-jp-sg-ec2`
|
||||
- `80/tcp <- sg-0b3a23c31041a5a5a`
|
||||
- `22/tcp <- 64.118.144.142/32`
|
||||
- `6379/tcp <- 104.238.220.230/32`
|
||||
- `ppanel-jp-sg-rds`
|
||||
- `3306/tcp <- sg-01f2a5a81e7505c91`
|
||||
- `3306/tcp <- 104.238.220.230/32`
|
||||
|
||||
## 4. 计算与数据库
|
||||
|
||||
### 4.1 业务 EC2
|
||||
|
||||
- Name: `ppanel-app-jp-01`
|
||||
- Instance ID: `i-07839130074cd7ed9`
|
||||
- Type: `c7i.xlarge`
|
||||
- AZ: `ap-northeast-1c`
|
||||
- Private IP: `10.20.1.168`
|
||||
- Public IP / Elastic IP: `3.114.29.208`
|
||||
- Public DNS: `ec2-3-114-29-208.ap-northeast-1.compute.amazonaws.com`
|
||||
- Root volume: `gp3 100GiB`
|
||||
- Status: `running`
|
||||
|
||||
说明:
|
||||
|
||||
- 当前公网入口是这台 EC2 自己
|
||||
- 这里绑定的是 `EIP`,不是依赖实例自动分配的临时公网 IP
|
||||
- 绑定 EIP 的目的,是保证以后 Redis 主从、白名单、DNS、文档里的公网地址不因为实例变更而漂移
|
||||
|
||||
### 4.2 Tokyo RDS
|
||||
|
||||
- Identifier: `ppanel-mysql-jp`
|
||||
- Engine: `MySQL Community 8.4.8`
|
||||
- Class: `db.r7g.xlarge`
|
||||
- Storage: `gp3 100GiB`
|
||||
- Master user: `admin`
|
||||
- Endpoint: `ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com`
|
||||
- Public access: `enabled`
|
||||
- Credential management: `self-managed`
|
||||
- Current status: `available`
|
||||
|
||||
当前实际连接值:
|
||||
|
||||
- Host: `ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com`
|
||||
- Port: `3306`
|
||||
- User: `admin`
|
||||
|
||||
### 4.3 Redis
|
||||
|
||||
- 部署位置:东京 EC2 本机
|
||||
- 部署方式:Docker
|
||||
- 容器名:`ppanel-redis`
|
||||
- 当前角色:`master`
|
||||
- 当前监听:`127.0.0.1:6379`(应用本机访问)
|
||||
- 当前对灾备开放:`3.114.29.208:6379`
|
||||
|
||||
### 4.4 应用与可观测
|
||||
|
||||
业务容器:
|
||||
|
||||
- `ppanel-server`
|
||||
|
||||
可观测容器:
|
||||
|
||||
- `ppanel-grafana`
|
||||
- `ppanel-loki`
|
||||
- `ppanel-promtail`
|
||||
- `ppanel-prometheus`
|
||||
- `ppanel-tempo`
|
||||
- `ppanel-cadvisor`
|
||||
- `ppanel-node-exporter`
|
||||
- `ppanel-nginx-exporter`
|
||||
|
||||
## 5. 当前部署方式
|
||||
|
||||
部署目录:
|
||||
|
||||
- `/opt/ppanel`
|
||||
|
||||
关键文件:
|
||||
|
||||
- `/opt/ppanel/docker-compose.cloud.yml`
|
||||
- `/opt/ppanel/configs/ppanel.yaml`
|
||||
- `/opt/ppanel/.env`
|
||||
|
||||
业务启动方式:
|
||||
|
||||
- `ppanel-server` 使用 `docker compose`
|
||||
- `network_mode: host`
|
||||
|
||||
当前配置指向:
|
||||
|
||||
- MySQL -> 东京 RDS
|
||||
- Redis -> 本机 Docker Redis
|
||||
- Trace -> `127.0.0.1:4317`
|
||||
|
||||
## 6. 当前已验证状态
|
||||
|
||||
截至 `2026-05-21` 已确认:
|
||||
|
||||
- `docker exec ppanel-redis redis-cli -a 'hifast67yj' PING` 返回 `PONG`
|
||||
- `MYSQL_PWD=... mysql -h ppanel-mysql-jp.cpo0keikgh80.ap-northeast-1.rds.amazonaws.com -u admin -e "select 1"` 返回正常
|
||||
- `docker compose -f /opt/ppanel/docker-compose.cloud.yml up -d ppanel-server` 已成功
|
||||
- `docker logs ppanel-server` 无 MySQL / Redis 连接报错
|
||||
- `curl http://127.0.0.1:8080/v1/common/heartbeat` 返回成功
|
||||
|
||||
可以认为当前东京单站已经具备:
|
||||
|
||||
- 服务启动能力
|
||||
- 数据库连接能力
|
||||
- Redis 连接能力
|
||||
- 基础可观测能力
|
||||
|
||||
## 7. 当前未落地项
|
||||
|
||||
下面这些还属于“目标方案”,不是“当前实际架构”:
|
||||
|
||||
- `ALB`
|
||||
- `WAF`
|
||||
- ACM 证书完成 DNS 验证
|
||||
- 正式域名切换到东京
|
||||
- `104.238.220.230` 完整接成东京 DR
|
||||
|
||||
所以现在请不要把当前架构理解成:
|
||||
|
||||
`DNS -> ALB -> WAF -> EC2 -> RDS`
|
||||
|
||||
当前真实架构更准确地说是:
|
||||
|
||||
`EIP -> EC2(Nginx + ppanel-server + Redis + observability) -> RDS`
|
||||
|
||||
## 8. 灾备准备状态
|
||||
|
||||
### 8.1 MySQL DR
|
||||
|
||||
已准备好:
|
||||
|
||||
- DR host: `104.238.220.230`
|
||||
- 复制账号:`repl@104.238.220.230`
|
||||
- binlog retention hours: `24`
|
||||
- current binlog file: `mysql-bin-changelog.000189`
|
||||
- current binlog position: `185053`
|
||||
|
||||
当前状态:
|
||||
|
||||
- 东京侧已准备完成
|
||||
- 但 `104` 侧还没有最终执行挂从
|
||||
|
||||
### 8.2 Redis DR
|
||||
|
||||
已准备好:
|
||||
|
||||
- 东京 Redis 主地址:`3.114.29.208:6379`
|
||||
- 东京 Redis 当前角色:`role:master`
|
||||
- 东京 Redis 当前状态:`connected_slaves:0`
|
||||
|
||||
当前状态:
|
||||
|
||||
- 东京侧已可作为主库提供同步
|
||||
- 但 `104` 侧还没有最终执行 `REPLICAOF`
|
||||
|
||||
## 9. 权威文档入口
|
||||
|
||||
与当前东京架构直接相关的文档,以这些为准:
|
||||
|
||||
- [当前架构文档](./hifast-current-architecture-zh.md)
|
||||
- [东京资源清单](../deploy/aws/ap-northeast-1/configs/resource-inventory.current.md)
|
||||
- [东京迁移 Runbook](./hifast-aws-jp-migration-runbook-zh.md)
|
||||
- [东京切换清单](./hifast-aws-jp-cutover-checklist-zh.md)
|
||||
|
||||
下面这些旧文档可以继续保留,但不要作为“当前实际架构”依据:
|
||||
|
||||
- 香港旧主站相关文档
|
||||
- 仍以 `ap-east-1` 为主语的历史架构说明
|
||||
|
||||
@@ -214,6 +214,42 @@ S3_PREFIX=redis bash deploy/scripts/redis_rdb_backup_to_s3.sh
|
||||
- 本地临时文件默认只保留 `3` 天
|
||||
- 长期保留建议通过 S3 Lifecycle 管理,而不是靠本机 cron 删除
|
||||
|
||||
### 9.3 MySQL 每 10 分钟执行一次
|
||||
|
||||
如果你要在 `104` 上做高频逻辑备份,仓库里已经补了 `systemd timer` 安装脚本:
|
||||
|
||||
- 安装脚本:
|
||||
- [`deploy/scripts/install_mysql_backup_timer.sh`](/Users/Apple/code_vpn/vpn/ppanel-server/deploy/scripts/install_mysql_backup_timer.sh)
|
||||
- systemd service:
|
||||
- [`deploy/systemd/hifast-mysql-backup.service`](/Users/Apple/code_vpn/vpn/ppanel-server/deploy/systemd/hifast-mysql-backup.service)
|
||||
- systemd timer:
|
||||
- [`deploy/systemd/hifast-mysql-backup.timer`](/Users/Apple/code_vpn/vpn/ppanel-server/deploy/systemd/hifast-mysql-backup.timer)
|
||||
|
||||
安装方式:
|
||||
|
||||
```bash
|
||||
cp deploy/aws/ap-northeast-1/configs/backup-to-s3.env.example /root/backup-to-s3.env
|
||||
chmod 600 /root/backup-to-s3.env
|
||||
vim /root/backup-to-s3.env
|
||||
|
||||
bash deploy/scripts/install_mysql_backup_timer.sh /opt/ppanel /root/backup-to-s3.env
|
||||
```
|
||||
|
||||
查看状态:
|
||||
|
||||
```bash
|
||||
systemctl list-timers --all | grep hifast-mysql-backup
|
||||
systemctl status hifast-mysql-backup.timer --no-pager -l
|
||||
systemctl status hifast-mysql-backup.service --no-pager -l
|
||||
journalctl -u hifast-mysql-backup.service -n 50 --no-pager
|
||||
```
|
||||
|
||||
补充说明:
|
||||
|
||||
- 定时表达式是 `OnCalendar=*:0/10`,即每 `10` 分钟执行一次
|
||||
- 备份脚本已加 `flock` 锁,上一轮未结束时,下一轮会自动跳过,不会并发打包
|
||||
- 高频逻辑备份会持续产生 `mysqldump` 开销,建议只在 `104` 这样的从库或备用库上执行,不要直接打主库
|
||||
|
||||
## 10. 恢复思路
|
||||
|
||||
### 10.1 MySQL
|
||||
|
||||
Reference in New Issue
Block a user