# 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"