247 lines
6.3 KiB
Markdown
247 lines
6.3 KiB
Markdown
# 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` 为主语的历史架构说明
|
|
|