部署概述
MITM Service 支持多种部署方式,您可以根据实际需求选择合适的方案。
部署方式对比
| 部署方式 | 适用场景 | 难度 | 维护成本 | 性能 |
|---|---|---|---|---|
| Docker Compose | 开发/测试/小规模生产 | ⭐ | 低 | 中 |
| Kubernetes | 大规模生产环境 | ⭐⭐⭐ | 中 | 高 |
| 传统部署 | 定制化需求 | ⭐⭐ | 高 | 高 |
| 云服务 | 快速上线 | ⭐⭐ | 低 | 中-高 |
Docker Compose 部署
推荐用于: 开发、测试、小规模生产环境
优点
- ✅ 一键部署,快速启动
- ✅ 环境隔离,依赖管理简单
- ✅ 易于版本控制和回滚
- ✅ 资源使用合理
部署步骤
# 克隆仓库
git clone https://github.com/yourusername/mitm-service.git
cd mitm-service
# 配置环境变量
cp web-service/.env.example web-service/.env
cp cookie-manager/.env.example cookie-manager/.env
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
架构图
┌─────────────────────────────────────────────┐
│ Docker Host (单机) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Nginx │ │ Web │ │ Cookie │ │
│ │ Container│ │ Service │ │ Manager │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ MITM │ │ MySQL │ │ Redis │ │
│ │ Proxy │ │ Container│ │ Container│ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────┘
详见: Docker 部署指南
Kubernetes 部署
推荐用于: 大规模生产环境、需要高可用和自动扩展的场景
优点
- ✅ 自动扩展和负载均衡
- ✅ 服务自愈和健康检查
- ✅ 滚动更新和回滚
- ✅ 资源调度和优化
部署步骤
# 创建命名空间
kubectl create namespace mitm-service
# 应用配置
kubectl apply -f k8s/configmaps.yaml
kubectl apply -f k8s/secrets.yaml
# 部署数据库
kubectl apply -f k8s/mysql.yaml
kubectl apply -f k8s/redis.yaml
# 部署应用
kubectl apply -f k8s/web-service.yaml
kubectl apply -f k8s/cookie-manager.yaml
kubectl apply -f k8s/mitm-proxy.yaml
# 部署 Ingress
kubectl apply -f k8s/ingress.yaml
架构图
┌────────────────── Kubernetes Cluster ──────────────────┐
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Ingress Controller │ │
│ └────────────────┬────────────────────────────────┘ │
│ │ │
│ ┌────────────────┼────────────────────────────────┐ │
│ │ ┌─────────────▼──────┐ ┌──────────────────┐ │ │
│ │ │ Web Service │ │ Cookie Manager │ │ │
│ │ │ (3 replicas) │ │ (2 replicas) │ │ │
│ │ └─────────────────────┘ └──────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────────────┐ ┌──────────────────┐ │ │
│ │ │ MITM Proxy │ │ HTTP Listener │ │ │
│ │ │ (2 replicas) │ │ (2 replicas) │ │ │
│ │ └─────────────────────┘ └──────────────────┘ │ │
│ │ Application Layer │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────┐ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ MySQL │ │ Redis │ │ │
│ │ │ StatefulSet │ │ StatefulSet │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ │ Data Layer │ │
│ └───────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
传统部署
推荐用于: 特殊定制需求、已有基础设施
优点
- ✅ 完全控制部署环境
- ✅ 可深度定制
- ✅ 与现有系统集成方便
部署步骤
详见: 生产环境部署
云服务部署
AWS
服务选择:
- ECS/EKS: 容器编排
- RDS: MySQL 托管服务
- ElastiCache: Redis 托管服务
- ALB: 负载均衡
- S3: 静态文件存储
阿里云
服务选择:
- ACK: Kubernetes 服务
- RDS: MySQL 云数据库
- Redis: Redis 云数据库
- SLB: 负载均衡
- OSS: 对象存储
Cloudflare
适用于: 文档站点、静态资源
详见: Cloudflare 部署指南
部署架构选择
单机部署
适用规模: < 1000 并发
单台服务器
├── Nginx (反向代理)
├── Web Service
├── Cookie Manager
├── MITM Proxy
├── MySQL
└── Redis
配置要求:
- CPU: 4 核
- 内存: 8 GB
- 磁盘: 100 GB SSD
分布式部署
适用规模: 1000 - 10000 并发
负载均衡器
├── 应用服务器 1
│ ├── Web Service
│ ├── Cookie Manager
│ └── MITM Proxy
│
├── 应用服务器 2
│ ├── Web Service
│ ├── Cookie Manager
│ └── MITM Proxy
│
└── 数据服务器
├── MySQL (主从复制)
└── Redis (集群)
微服务架构
适用规模: > 10000 并发
Kong/Nginx (API Gateway)
├── Web Service Cluster (多实例)
├── Cookie Manager Cluster (多实例)
├── MITM Proxy Cluster (多实例)
├── MySQL Cluster (多主从)
└── Redis Cluster (分片)
部署清单
部署前检查
- [ ] 服务器资源满足要求
- [ ] 网络环境配置正确
- [ ] 域名和 SSL 证书准备就绪
- [ ] 数据库已创建和配置
- [ ] Redis 已安装和配置
- [ ] 防火墙规则已设置
- [ ] 备份策略已制定
部署步骤
- [ ] 部署数据库服务
- [ ] 部署缓存服务
- [ ] 部署应用服务
- [ ] 配置反向代理
- [ ] 配置 SSL 证书
- [ ] 验证服务可用性
- [ ] 配置监控和日志
- [ ] 配置备份任务
部署后验证
- [ ] 服务健康检查通过
- [ ] API 接口测试通过
- [ ] 代理功能正常
- [ ] 登录任务可执行
- [ ] 日志正常输出
- [ ] 监控数据正常
- [ ] 性能测试达标
安全配置
基础安全
# 1. 更新系统
sudo apt-get update && sudo apt-get upgrade
# 2. 配置防火墙
sudo ufw enable
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# 3. 配置 fail2ban
sudo apt-get install fail2ban
sudo systemctl enable fail2ban
# 4. 禁用 root 远程登录
sudo sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sudo systemctl restart sshd
应用安全
- ✅ 使用强密码和密钥认证
- ✅ 定期更新依赖和补丁
- ✅ 配置 HTTPS 和 SSL 证书
- ✅ 启用请求频率限制
- ✅ 配置数据备份和恢复
- ✅ 监控异常访问和攻击
性能优化
应用层优化
- 启用 Node.js 集群模式
- 配置 PM2 进程管理
- 使用连接池
- 启用响应缓存
数据库优化
- 配置索引
- 优化查询语句
- 启用查询缓存
- 配置读写分离
代理优化
- 调整 worker 数量
- 配置连接池大小
- 启用压缩
- 使用 HTTP/2
监控和维护
监控指标
- 系统指标: CPU、内存、磁盘、网络
- 应用指标: 请求量、响应时间、错误率
- 业务指标: 登录成功率、Cookie 有效期
日志管理
- 集中日志收集
- 日志分级和轮转
- 日志分析和告警
备份策略
- 数据库定时备份
- 配置文件备份
- 代码版本控制
故障排查
详见: 故障排查指南