PPanel 日本东京区 AWS 部署说明
本目录用于在 AWS 日本东京区 ap-northeast-1 重建一套全新生产环境,并承接当前香港区 ap-east-1 的正式迁移。
如果你要看“当前已经真实跑起来的东京架构”,优先看:
这份 README 更偏向:
- 目标架构
- 资源规划
- 部署方法
- 后续待完成项
目标架构:
DNS -> ALB -> WAF -> EC2(Nginx + ppanel-server + Redis + observability) -> RDS MySQL
灾备链路:
RDS MySQL / EC2 Redis -> 104.238.220.230 外部灾备
当前仓库内已补充:
- 东京基础设施参数模板:
configs/aws-jp-infra.env.example - 东京真实实施状态登记:
configs/resource-inventory.current.md - 东京底座资源创建脚本:
../../scripts/aws_jp_create_base_infra.sh - 东京资源状态检查脚本:
../../scripts/aws_jp_describe_state.sh - MySQL 备份脚本:
../../scripts/mysql_backup_to_s3.sh - 10 分钟 MySQL 备份定时器安装脚本:
../../scripts/install_mysql_backup_timer.sh
1. 资源清单
按下面顺序创建资源:
- VPC
- 2 个公有子网 + 2 个私有子网
- Internet Gateway
- 公有 / 私有路由表
- 安全组
- RDS MySQL
- EC2 本机 Redis Docker
- EC2
- ACM 证书
- ALB + Target Group
- WAF Web ACL
- 东京平行环境域名
- 东京 S3 备份桶
建议命名:
- VPC:
ppanel-jp-prod - EC2:
ppanel-app-jp-01 - RDS:
ppanel-mysql-jp - Redis container:
hifast-redis - ALB:
ppanel-alb-jp - WAF:
ppanel-waf-jp - S3:
hifast-prod-backups-200810848252-ap-northeast-1
2. 默认规格
EC2
- Region:
ap-northeast-1 - OS: Ubuntu 24.04 LTS
- Instance type:
t4g.large - Disk:
gp3 80GB - Public subnet: 是
- IAM Role:
- 允许读取 CloudWatch / SSM(如使用)
- 如果要在东京 EC2 上执行 S3 备份:额外允许写入东京备份桶
RDS MySQL
- Engine:
MySQL 8.4 - Class:
db.r7g.xlarge - Storage:
gp3 100GB - DB name:
hifast - Username:
admin - Public access:
Yes - Charset:
utf8mb4 - Backup retention:
7-14 days - Deletion protection:
On - Multi-AZ:
Yes(当前按 2 实例 Multi-AZ 创建)
说明:
- 当前东京 RDS 需要允许
104.238.220.230从公网直连3306,用于外部 MySQL 从库复制 - 因此本阶段 RDS 使用
public subnet group + Publicly accessible = Yes - 访问面只通过
sg-rds严格限制到业务 EC2 安全组和104.238.220.230/32
Redis
- 部署位置:业务 EC2 本机
- 部署方式:Docker
- 版本:
redis:8.2.1 - 监听:
0.0.0.0:6379 - 应用连接:
127.0.0.1:6379 - 安全组:仅对白名单备用节点
104.238.220.230/32或同机应用开放
3. 网络与安全组
子网布局
public-a,public-c: ALB / EC2private-a,private-c: RDS
说明:
- 东京优先使用
ap-northeast-1a和ap-northeast-1c - 如果账户映射不同,也可以用任意 2 个可用区,但公私网必须各 2 个子网
安全组建议
sg-alb
- Inbound
80/tcpfrom0.0.0.0/0443/tcpfrom0.0.0.0/0
- Outbound
80/tcptosg-ec2
sg-ec2
- Inbound
80/tcpfromsg-alb22/tcpfrom你的固定运维 IP6379/tcpfrom104.238.220.230/32
- Outbound
- all
说明:
- 应用容器监听
127.0.0.1:8080 - EC2 对外只让 Nginx 监听
80 - Grafana / Prometheus / Tempo 仅监听
127.0.0.1
sg-rds
- Inbound
3306/tcpfromsg-ec23306/tcpfrom104.238.220.230/32
4. ALB / Target Group / 健康检查
Target Group
- Type:
Instance - Protocol:
HTTP - Port:
80 - Health check path:
/v1/common/heartbeat - Success code:
200
ALB 监听器
80-> redirect to443443-> forward 到 target group
ACM
- 在
ap-northeast-1重新申请证书 - 先给平行环境域名,例如:
api-jp.hifast.bizlogs-jp.hifast.biz
5. WAF 规则
首版至少启用:
AWSManagedRulesCommonRuleSetAWSManagedRulesKnownBadInputsRuleSetAWSManagedRulesAmazonIpReputationList- 全站 rate-based rule
- 针对高风险路径的 rate-based rule
建议的第一版限流:
- 全站:每 IP
2000 / 5 分钟 /v1/public/user/subscribe:每 IP300 / 5 分钟- 登录 / 注册 / 验证码接口:每 IP
100 / 5 分钟
节点上报接口建议后续补:
/v1/server/status/v1/server/online/v1/server/traffic
6. EC2 文件落地
在 EC2 上建议使用:
- 应用目录:
/opt/ppanel - Nginx 配置:
/etc/nginx/sites-available/ppanel-api.conf
需要上传这些文件 / 目录:
docker-compose.cloud.ymldeploy/aws/ap-northeast-1/configs/ppanel.yaml.example-> 重命名为configs/ppanel.yamldeploy/aws/ap-northeast-1/nginx/ppanel-api.confgrafana/loki/prometheus/tempo/.env.example-> 重命名为.env
目标目录示例:
/opt/ppanel/
docker-compose.cloud.yml
.env
configs/ppanel.yaml
grafana/
loki/
prometheus/
tempo/
logs/
cache/
tempo_data/
7. 应用配置
基线模板见:
关键值必须替换:
MySQL.AddrMySQL.PasswordRedis.HostRedis.PassJwtAuth.AccessSecretAdministrator.EmailAdministrator.PasswordAppSignature.AppSecrets.*device.security_secretSite.HostSite.SiteName
Redis 约定保持不变:
- 业务缓存:DB
0 - Asynq:DB
5
8. 部署步骤
8.0 创建东京基础设施
如果本机或跳板机已经配置好 AWS CLI 凭据,可以先直接执行:
cp deploy/aws/ap-northeast-1/configs/aws-jp-infra.env.example /root/aws-jp-infra.env
chmod 600 /root/aws-jp-infra.env
vim /root/aws-jp-infra.env
chmod +x deploy/scripts/aws_jp_create_base_infra.sh
bash deploy/scripts/aws_jp_create_base_infra.sh /root/aws-jp-infra.env
执行后可用下面命令随时核对东京底座状态:
chmod +x deploy/scripts/aws_jp_describe_state.sh
bash deploy/scripts/aws_jp_describe_state.sh /root/aws-jp-infra.env
8.1 初始化 EC2
把脚本上传到东京 EC2 后执行:
chmod +x deploy/scripts/bootstrap_aws_ec2.sh
sudo APP_DIR=/opt/ppanel APP_USER=ubuntu deploy/scripts/bootstrap_aws_ec2.sh
8.2 安装 Nginx 配置
sudo cp deploy/aws/ap-northeast-1/nginx/ppanel-api.conf /etc/nginx/sites-available/ppanel-api.conf
sudo ln -sf /etc/nginx/sites-available/ppanel-api.conf /etc/nginx/sites-enabled/ppanel-api.conf
sudo nginx -t
sudo systemctl reload nginx
8.3 启动容器
cd /opt/ppanel
docker compose -f docker-compose.cloud.yml up -d
8.4 预检
chmod +x deploy/scripts/preflight_aws_jp.sh
APP_DIR=/opt/ppanel \
RDS_HOST=<TOKYO_RDS_ENDPOINT> \
REDIS_HOST=127.0.0.1 \
deploy/scripts/preflight_aws_jp.sh
9. 数据迁移与切换
正式迁移请按:
执行。
核心原则:
- 先搭平行环境
- 停机后再导出香港主数据
- 东京验收通过后再切正式域名
- 切换后再重挂
104灾备
10. 104 灾备节点常用模板
如果迁移完成后要把 104.238.220.230 重挂为东京主站从库,可复用:
deploy/scripts/hifast_mysql_seed_primary_and_replica.shdeploy/scripts/hifast_mysql_attach_replica.shdeploy/scripts/hifast_redis_attach_replica.shdeploy/scripts/hifast_data_sync_tool.shconfigs/replica-ops.env.example
11. 东京资源创建前置检查
在 AWS 控制台里至少先确认:
- 东京区已启用
ap-northeast-1可创建t4g.largeap-northeast-1RDS 可创建db.r7g.xlarge- ACM / ALB / WAF / S3 服务在东京区可正常使用
- Tokyo 对应配额满足:
- On-Demand Standard vCPU
- ALB 数量
- Elastic IP(如需)
- RDS 实例数
12. 当前已知真实进度
截至 2026-05-20,已知状态如下:
- 东京 VPC
ppanel-jp-prod已创建 - VPC ID:
vpc-0846b23b4a7d64eac - VPC CIDR:
10.20.0.0/16 - 4 个子网在 AWS 控制台里曾填写完成,但提交时控制台 session 失效
- 因此:
- 子网是否真正创建成功,需要重新核实
- IGW / 路由表 / 安全组 / RDS / EC2 / ALB / WAF 都应按“未完成”处理,重新复核
实时状态请以后续更新的 configs/resource-inventory.current.md 为准。