6.2 KiB
6.2 KiB
PPanel 香港区新 AWS 账号部署说明
本目录用于在 新 AWS 账号 中按 香港区 ap-east-1 重建一套全新空环境。
目标架构:
DNS -> ALB -> WAF -> EC2(Nginx + ppanel-server + observability) -> RDS MySQL + ElastiCache Redis
1. 资源清单
按下面顺序创建资源:
- VPC
- 2 个公有子网 + 2 个私有子网
- Internet Gateway
- 公有 / 私有路由表
- 安全组
- RDS MySQL
- ElastiCache Redis OSS
- EC2
- ACM 证书
- ALB + Target Group
- WAF Web ACL
- 平行环境域名
建议命名:
- VPC:
ppanel-hk-prod - EC2:
ppanel-app-hk-01 - RDS:
ppanel-mysql-hk - Redis:
ppanel-redis-hk - ALB:
ppanel-alb-hk - WAF:
ppanel-waf-hk
2. 默认规格
EC2
- Region:
ap-east-1 - OS: Ubuntu 24.04 LTS
- Instance type:
t4g.large起步 - Disk:
gp3 80GB - Public subnet: 是
- IAM Role: 允许读取 CloudWatch / SSM(如使用)
RDS MySQL
- Engine: MySQL 8.0
- Class:
db.r7g.xlarge - Storage:
gp3 100GB - DB name:
hifast - Username:
admin - Public access:
No - Charset:
utf8mb4 - Backup:
7-14 days
ElastiCache Redis OSS
- Engine: Redis OSS 7.x
- Node type:
cache.m7g.large - Cluster mode: disabled
- Multi-AZ: 按预算决定,正式环境建议开启
- Public access: 不开放
- TLS: 当前模板按 关闭 规划
3. 网络与安全组
子网布局
public-a,public-b: ALB / EC2private-a,private-b: RDS / Redis
安全组建议
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你的固定运维 IP
- Outbound
- all
说明:
- 应用容器监听
127.0.0.1:8080 - EC2 对外只让 Nginx 监听
80 - Grafana / Prometheus / Tempo 仅监听
127.0.0.1
sg-rds
- Inbound
3306/tcpfromsg-ec2
sg-redis
- Inbound
6379/tcpfromsg-ec2
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-east-1申请证书 - 先给平行环境域名,例如:
api-new.hifast.bizlogs-new.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
优先用节点出口 IP 白名单;没有固定出口 IP 的节点暂时保留 secret_key,但不要把它当成唯一防线。
6. EC2 文件落地
在 EC2 上建议使用:
- 应用目录:
/opt/ppanel - Nginx 配置:
/etc/nginx/sites-available/ppanel-api.conf
需要上传这些文件 / 目录:
docker-compose.cloud.ymldeploy/aws/ap-east-1/configs/ppanel.yaml.example-> 重命名为configs/ppanel.yamldeploy/aws/ap-east-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.HostJwtAuth.AccessSecretAdministrator.EmailAdministrator.PasswordAppSignature.AppSecrets.*device.security_secretSite.HostSite.SiteName
Redis 约定保持不变:
- 业务缓存:DB
0 - Asynq:DB
5(代码内部已固定使用)
8. 部署步骤
8.1 初始化 EC2
把脚本上传到 EC2 后执行:
chmod +x deploy/scripts/bootstrap_aws_ec2.sh
sudo APP_DIR=/opt/ppanel deploy/scripts/bootstrap_aws_ec2.sh
8.2 安装 Nginx 配置
sudo cp deploy/aws/ap-east-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_hk.sh
APP_DIR=/opt/ppanel \
RDS_HOST=<new-rds-endpoint> \
REDIS_HOST=<new-redis-endpoint> \
deploy/scripts/preflight_aws_hk.sh
9. 平行环境验证
先验证 api-new.hifast.biz,不要直接切正式域名。
必测项:
ALB target为 healthyGET /v1/common/heartbeat返回 200- 管理员登录
- 用户注册 / 登录
- 订阅查询
- 节点上报
/v1/server/status - Redis 可写缓存
- Asynq 可入队并消费
10. 正式切换
切换前检查:
- ALB 5xx 为 0
- EC2 CPU / Memory 正常
- RDS CPU / Connections 正常
- Redis CPU / Connections / Memory 正常
- WAF 已挂到 ALB
- EC2 安全组没有对公网放
8080/3333/9090/4317
切换方式:
- 保持新环境先跑平行域名
- 正式域名切到新 ALB
- 观察至少 1 小时
- 确认无误后再处理旧环境
11. 监控建议
至少建这些 CloudWatch / Grafana 观测项:
- ALB
RequestCount,HTTPCode_ELB_5XX_Count,TargetResponseTime - EC2
CPUUtilization,NetworkIn,NetworkOut,StatusCheckFailed - RDS
CPUUtilization,DatabaseConnections,ReadLatency,WriteLatency - Redis
EngineCPUUtilization,CurrConnections,BytesUsedForCache
12. 这次方案的边界
本目录交付的是:
- 香港区新账号的部署模板
- 新空环境启动与验证流程
- ALB / WAF / EC2 / RDS / Redis 的落地约定
不包含:
- 旧数据迁移
- Terraform / CloudFormation 自动建资源
- Redis TLS 改造
- 多活 / 自动扩缩容