mirror of
https://github.com/DullJZ/s3-balance.git
synced 2026-06-27 14:01:23 +08:00
166 lines
4.8 KiB
YAML
166 lines
4.8 KiB
YAML
# S3 Balance Service Configuration Example
|
||
# S3兼容负载均衡服务配置示例
|
||
|
||
# 服务器配置
|
||
server:
|
||
host: "0.0.0.0"
|
||
port: 8080
|
||
read_timeout: 30s
|
||
write_timeout: 30s
|
||
idle_timeout: 60s
|
||
|
||
# 数据库配置
|
||
database:
|
||
# 数据库类型: sqlite, mysql, postgres
|
||
type: "sqlite"
|
||
|
||
# 数据源名称 (DSN)
|
||
# SQLite 示例:
|
||
dsn: "data/s3-balance.db"
|
||
|
||
# MySQL 示例:
|
||
# dsn: "user:password@tcp(localhost:3306)/s3balance?charset=utf8mb4&parseTime=True&loc=Local"
|
||
|
||
# PostgreSQL 示例:
|
||
# dsn: "host=localhost user=postgres password=password dbname=s3balance port=5432 sslmode=disable TimeZone=Asia/Shanghai"
|
||
|
||
# 连接池配置
|
||
max_open_conns: 25 # 最大打开连接数
|
||
max_idle_conns: 5 # 最大空闲连接数
|
||
conn_max_lifetime: 300 # 连接最大生命周期(秒)
|
||
|
||
# 日志级别: silent, error, warn, info
|
||
log_level: "warn"
|
||
|
||
# 是否自动迁移数据库表
|
||
auto_migrate: true
|
||
|
||
# S3存储桶配置
|
||
buckets:
|
||
# 真实存储桶 - AWS S3(用于存储数据,对客户端隐藏)
|
||
- name: "my-bucket-1"
|
||
endpoint: "" # 留空使用默认AWS端点
|
||
region: "us-east-1"
|
||
access_key_id: "YOUR_AWS_ACCESS_KEY_ID"
|
||
secret_access_key: "YOUR_AWS_SECRET_ACCESS_KEY"
|
||
max_size: "100GB" # 最大容量限制
|
||
weight: 10 # 权重(用于加权负载均衡)
|
||
enabled: true
|
||
path_style: false # AWS S3使用虚拟主机风格
|
||
virtual: false # 这是真实存储桶
|
||
operation_limits:
|
||
type_a: 0 # 类型A操作(写入类)上限,0表示不限制
|
||
type_b: 0 # 类型B操作(读取类)上限,0表示不限制
|
||
|
||
# 真实存储桶 - MinIO(用于存储数据,对客户端隐藏)
|
||
- name: "my-bucket-2"
|
||
endpoint: "http://localhost:9000"
|
||
region: "us-east-1"
|
||
access_key_id: "minioadmin"
|
||
secret_access_key: "minioadmin"
|
||
max_size: "50GB"
|
||
weight: 5
|
||
enabled: true
|
||
path_style: true # MinIO通常使用路径风格
|
||
virtual: false # 这是真实存储桶
|
||
operation_limits:
|
||
type_a: 0
|
||
type_b: 0
|
||
|
||
# 虚拟存储桶 - user-bucket-1(对客户端可见的唯一存储桶)
|
||
- name: "user-bucket-1"
|
||
endpoint: "" # 虚拟存储桶不需要端点
|
||
region: "us-east-1"
|
||
access_key_id: "" # 虚拟存储桶不需要密钥
|
||
secret_access_key: "" # 虚拟存储桶不需要密钥
|
||
max_size: "100GB" # 显示的最大容量
|
||
weight: 10 # 权重(用于在真实存储桶间负载均衡)
|
||
enabled: true
|
||
path_style: false
|
||
virtual: true # 这是虚拟存储桶
|
||
|
||
# 虚拟存储桶 - user-bucket-2(对客户端可见的唯一存储桶)
|
||
- name: "user-bucket-2"
|
||
endpoint: ""
|
||
region: "us-east-1"
|
||
access_key_id: ""
|
||
secret_access_key: ""
|
||
max_size: "50GB"
|
||
weight: 10
|
||
enabled: true
|
||
path_style: false
|
||
virtual: true # 这是虚拟存储桶
|
||
|
||
# 真实存储桶 - 阿里云OSS(备用存储桶,对客户端隐藏)
|
||
- name: "my-bucket-3"
|
||
endpoint: "https://oss-cn-hangzhou.aliyuncs.com"
|
||
region: "cn-hangzhou"
|
||
access_key_id: "YOUR_ALIYUN_ACCESS_KEY_ID"
|
||
secret_access_key: "YOUR_ALIYUN_SECRET_ACCESS_KEY"
|
||
max_size: "200GB"
|
||
weight: 15
|
||
enabled: true
|
||
path_style: false
|
||
virtual: false # 这是真实存储桶
|
||
operation_limits:
|
||
type_a: 0
|
||
type_b: 0
|
||
|
||
# 负载均衡配置
|
||
balancer:
|
||
# 负载均衡策略,可选值:
|
||
# - "round-robin": 轮询
|
||
# - "least-space": 选择剩余空间最多的存储桶
|
||
# - "weighted": 基于权重的随机选择
|
||
strategy: "least-space"
|
||
|
||
# 健康检查周期
|
||
health_check_period: 30s
|
||
|
||
# 统计信息更新周期
|
||
update_stats_period: 60s
|
||
|
||
# 重试配置
|
||
retry_attempts: 3
|
||
retry_delay: 1s
|
||
|
||
# 监控指标配置
|
||
metrics:
|
||
enabled: true
|
||
path: "/metrics"
|
||
|
||
# S3兼容API配置
|
||
s3api:
|
||
# 客户端连接用的Access Key
|
||
access_key: "AKIAIOSFODNN7EXAMPLE"
|
||
|
||
# 客户端连接用的Secret Key
|
||
secret_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
|
||
|
||
# 是否使用虚拟主机模式
|
||
virtual_host: false
|
||
|
||
# 工作模式:
|
||
# false:预签名重定向模式,客户端下载直接重定向到与后端存储
|
||
# true (默认):代理模式,数据通过S3 Balance服务器中转传输
|
||
# 该选项仅适用于下载,上传操作始终为全代理模式
|
||
proxy_mode: true
|
||
|
||
# 是否需要认证(使用配置的 access_key/secret_key)
|
||
auth_required: true
|
||
|
||
# 用于签名验证的Host(可选)
|
||
# 当服务前有 nginx 等反向代理时,可以设置此项为客户端实际访问的域名
|
||
# 留空则使用请求中的 Host 头
|
||
# 示例: "s3.example.com" 或 "s3.example.com:8080"
|
||
host: ""
|
||
|
||
# 管理API配置
|
||
api:
|
||
# 是否启用管理API
|
||
enabled: true
|
||
|
||
# API访问令牌(用于管理接口的身份验证)
|
||
# 请修改为强密码,建议使用随机生成的长字符串
|
||
token: "your-secure-api-token-change-this"
|