mirror of
https://github.com/DullJZ/s3-balance.git
synced 2026-06-29 06:51:22 +08:00
231 lines
5.5 KiB
Markdown
231 lines
5.5 KiB
Markdown
# S3 Balance 部署指南
|
||
|
||
本目录包含 S3 Balance 服务的各种部署方案,从简单的 Docker Compose 到生产级的 Kubernetes 部署。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
deploy/
|
||
├── docker/ # Docker 和 Docker Compose 部署
|
||
│ ├── docker-compose.yml # Docker Compose 配置
|
||
│ ├── Dockerfile # Docker 镜像构建文件
|
||
│ ├── start-monitoring.sh # 一键启动脚本
|
||
│ └── config.docker.yaml # Docker 环境配置
|
||
├── kubernetes/ # Kubernetes 原生部署
|
||
│ ├── namespace.yaml # 命名空间
|
||
│ ├── configmap.yaml # 配置映射
|
||
│ ├── deployment.yaml # 部署配置
|
||
│ ├── service.yaml # 服务暴露
|
||
│ └── ingress.yaml # 入口配置
|
||
├── helm/ # HELM Chart 部署
|
||
│ └── s3-balance/ # HELM Chart 目录
|
||
└── monitoring/ # 监控系统配置
|
||
├── prometheus.yml # Prometheus 配置
|
||
├── s3_balance_alerts.yml # 告警规则
|
||
└── grafana/ # Grafana 配置和仪表板
|
||
```
|
||
|
||
## 🐳 Docker Compose 部署(推荐开发环境)
|
||
|
||
### 快速启动(含完整监控栈)
|
||
```bash
|
||
cd deploy/docker
|
||
./start-monitoring.sh
|
||
```
|
||
|
||
### 手动启动
|
||
```bash
|
||
cd deploy/docker
|
||
docker-compose up -d
|
||
```
|
||
|
||
### 访问地址
|
||
- S3 Balance API: http://localhost:8080
|
||
- Grafana 面板: http://localhost:3000 (admin/admin123)
|
||
- Prometheus: http://localhost:9090
|
||
- 监控指标: http://localhost:8080/metrics
|
||
|
||
### 配置文件
|
||
编辑 `config.docker.yaml` 来自定义:
|
||
- 存储桶配置
|
||
- 负载均衡策略
|
||
- 监控指标设置
|
||
|
||
## ☸️ Kubernetes 部署(推荐生产环境)
|
||
|
||
### 基础部署
|
||
```bash
|
||
cd deploy/kubernetes
|
||
kubectl apply -f namespace.yaml
|
||
kubectl apply -f configmap.yaml
|
||
kubectl apply -f deployment.yaml
|
||
kubectl apply -f service.yaml
|
||
```
|
||
|
||
### 高可用部署
|
||
```bash
|
||
kubectl apply -f hpa.yaml # 水平自动扩缩容
|
||
kubectl apply -f pdb.yaml # Pod 中断预算
|
||
```
|
||
|
||
### 外部访问
|
||
```bash
|
||
kubectl apply -f ingress.yaml
|
||
```
|
||
|
||
### 配置说明
|
||
- 使用 ConfigMap 管理配置文件
|
||
- 支持 HPA 自动扩缩容
|
||
- 集成集群 DNS 服务发现
|
||
- 支持多环境配置(dev/test/prod)
|
||
|
||
## 📊 HELM Chart 部署(推荐企业环境)
|
||
|
||
### 安装 Chart
|
||
```bash
|
||
cd deploy/helm
|
||
helm install s3-balance ./s3-balance
|
||
```
|
||
|
||
### 自定义参数
|
||
```bash
|
||
helm install s3-balance ./s3-balance -f custom-values.yaml
|
||
```
|
||
|
||
### 升级版本
|
||
```bash
|
||
helm upgrade s3-balance ./s3-balance
|
||
```
|
||
|
||
### HELM 优势
|
||
- 参数化配置
|
||
- 多环境管理
|
||
- 版本控制
|
||
- 依赖管理
|
||
|
||
## 🔧 监控集成
|
||
|
||
所有的部署方案都集成了完整的监控系统:
|
||
|
||
### Prometheus 指标
|
||
- S3 Balance 业务指标
|
||
- 系统资源指标
|
||
- 自定义应用指标
|
||
|
||
### Grafana 仪表板
|
||
- 服务概览面板
|
||
- 性能分析面板
|
||
- 容量监控面板
|
||
- 错误率跟踪面板
|
||
|
||
### 告警规则
|
||
- 存储桶健康状态告警
|
||
- 高错误率告警
|
||
- 高延迟告警
|
||
- 容量使用率告警
|
||
|
||
## 🚨 部署要求
|
||
|
||
### 系统要求
|
||
- Docker & Docker Compose(开发环境)
|
||
- Kubernetes 1.19+(生产环境)
|
||
- HELM 3.0+(企业环境)
|
||
|
||
### 资源要求
|
||
- CPU: 0.5-2 core
|
||
- Memory: 512MB-2GB
|
||
- Storage: 1GB-100GB(根据使用情况)
|
||
- Network: 内网访问存储桶
|
||
|
||
### 网络要求
|
||
- 访问后端 S3 存储桶
|
||
- Prometheus Pushgateway(可选)
|
||
- 外部监控系统(可选)
|
||
|
||
## 📋 环境变量
|
||
|
||
### S3 Balance
|
||
- `CONFIG_FILE`: 配置文件路径
|
||
- `LOG_LEVEL`: 日志级别 (debug/info/warn/error)
|
||
- `TZ`: 时区设置
|
||
|
||
### Prometheus
|
||
- `STORAGE_TSDB_RETENTION_TIME`: 数据保留时间
|
||
- `WEB_ENABLE_LIFECYCLE`: 启用生命周期管理
|
||
|
||
### Grafana
|
||
- `GF_SECURITY_ADMIN_USER`: 管理员用户名
|
||
- `GF_SECURITY_ADMIN_PASSWORD`: 管理员密码
|
||
- `GF_USERS_ALLOW_SIGN_UP`: 是否允许注册
|
||
|
||
## 🎯 最佳实践
|
||
|
||
### 生产环境建议
|
||
1. **资源限制**: 设置合理的CPU/内存限制
|
||
2. **健康检查**: 配置完整的探针检查
|
||
3. **持久化**: 重要数据使用持久化存储
|
||
4. **备份**: 定期备份配置和数据库
|
||
5. **监控**: 集成现有监控系统
|
||
|
||
### 高可用建议
|
||
1. **多副本**: 部署多个实例
|
||
2. **负载均衡**: 集群内负载均衡
|
||
3. **自动扩缩容**: 基于负载自动扩缩容
|
||
4. **多区域**: 跨可用区部署
|
||
|
||
### 安全建议
|
||
1. **镜像安全**: 使用官方基础镜像
|
||
2. **访问控制**: 配置RBAC权限
|
||
3. **网络隔离**: 使用网络策略
|
||
4. **敏感信息**: 使用Secret管理凭证
|
||
|
||
## 🔧 故障排除
|
||
|
||
### 常见问题
|
||
|
||
**Pod 启动失败**
|
||
```bash
|
||
kubectl describe pod <pod-name>
|
||
kubectl logs <pod-name>
|
||
```
|
||
|
||
**配置错误**
|
||
```bash
|
||
kubectl get configmap s3-balance-config -o yaml
|
||
```
|
||
|
||
**服务无法访问**
|
||
```bash
|
||
kubectl get service s3-balance-service
|
||
kubectl get ingress s3-balance-ingress
|
||
```
|
||
|
||
### 性能调优
|
||
- 调整负载均衡策略
|
||
- 优化数据库连接池
|
||
- 配置合理的缓存策略
|
||
- 监控资源使用情况
|
||
|
||
## 🔗 集成外部系统
|
||
|
||
### 已有 Prometheus
|
||
在外部 Prometheus 配置中添加:
|
||
```yaml
|
||
scrape_configs:
|
||
- job_name: 's3-balance'
|
||
static_configs:
|
||
- targets: ['s3-balance-service.default.svc.cluster.local:8080']
|
||
```
|
||
|
||
### 现有监控系统
|
||
- 通过 exporters 暴露指标
|
||
- 使用统一的日志格式
|
||
- 集成告警通知渠道
|
||
|
||
## 📖 参考文献
|
||
|
||
- [Docker Compose 文档](https://docs.docker.com/compose/)
|
||
- [Kubernetes 官方文档](https://kubernetes.io/docs/)
|
||
- [HELM 官方文档](https://helm.sh/docs/)
|
||
- [Prometheus 最佳实践](https://prometheus.io/docs/practices/)
|
||
- [Grafana 文档](https://grafana.com/docs/) |