跳到主要内容RustFS + Docker 生产环境部署指南 | 极客日志Rust
RustFS + Docker 生产环境部署指南
RustFS 是一个高性能对象存储系统,结合 Docker 可实现快速部署。本指南详细说明了从环境准备到生产环境配置的完整步骤。内容包括安装 Docker 与 Docker Compose,创建项目目录,启动单机版服务,以及配置生产环境的 docker-compose.yml。此外还涵盖了性能优化参数设置、Prometheus 监控集成、日志管理、数据备份脚本编写及常见问题排查。通过容器化方案解决依赖冲突,支持高可用与资源限制,确保服务在生产环境中稳定运行。
云间漫步3 浏览 为什么要选择 RustFS + Docker?
相比传统部署方式,RustFS 结合 Docker 容器化具有显著优势:
- 性能表现:针对对象存储场景优化,处理效率较高。
- 依赖管理:Docker 镜像包含所有依赖,避免环境冲突。
- 生产就绪:支持高可用、监控、备份,可直接用于生产环境。
一、环境准备
1.1 安装 Docker 和 Docker Compose
curl -fsSL https://get.docker.com | sh
sudo systemctl start docker
sudo systemctl enable docker
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
1.2 创建项目目录
mkdir -p rustfs-production/{data,logs,config}
cd rustfs-production
二、单机版快速体验
2.1 启动服务
docker run -d \
--name rustfs \
-p 9000:9000 \
-p 9001:9001 \
-v $(pwd)/data:/data \
-v $(pwd)/logs:/logs \
rustfs/rustfs:latest
2.2 权限问题处理
若遇到权限问题,可通过自定义 Dockerfile 或 docker-compose 配置解决:
version: '3.8'
services:
rustfs:
image: rustfs/rustfs:latest
user: "10001:10001"
volumes:
- ./data:/data
- ./logs:/logs
command: >
sh -c "chown -R 10001:10001 /data /logs && /entrypoint.sh server /data"
三、生产环境完整配置
3.1 docker-compose.yml
version: '3.8'
services:
rustfs:
image: rustfs/rustfs:1.0.0-alpha.69
container_name: rustfs
hostname: rustfs
restart: unless-stopped
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./data:/data
- ./logs:/logs
- ./config:/config
- /etc/localtime:/etc/localtime:ro
environment:
- RUSTFS_ACCESS_KEY=你的访问密钥
- RUSTFS_SECRET_KEY=你的安全密钥
- RUSTFS_REGION=cn-east-1
- RUSTFS_BROWSER=on
deploy:
resources:
limits:
memory: 2G
cpus: '1.0'
reservations:
memory: 1G
cpus: '0.5'
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
- redis_data:/data
command: redis-server --appendonly yes
volumes:
redis_data:
3.2 启动与验证
docker-compose up -d
docker-compose ps
docker-compose logs -f rustfs
docker inspect --format='{{.State.Health.Status}}' rustfs
四、性能优化配置
4.1 存储性能优化
environment:
- RUSTFS_CACHE_DRIVES=/data/cache
- RUSTFS_CACHE_MAXSIZE=80
- RUSTFS_CACHE_EXPIRY=90
- RUSTFS_CACHE_QUOTA=70
4.2 网络优化
sysctls:
- net.core.somaxconn=1024
- net.ipv4.tcp_max_syn_backlog=1024
ulimits:
nofile:
soft: 65536
hard: 65536
五、监控和日志管理
5.1 集成 Prometheus 监控
environment:
- RUSTFS_PROMETHEUS_AUTH_TYPE=public
- RUSTFS_PROMETHEUS_URL=http://prometheus:9090
5.2 日志配置
{
"version": "1.0",
"formatters": {
"detailed": {
"format": "%(asctime)s %(name)-15s %(levelname)-8s %(message)s"
}
},
"handlers": {
"file": {
"class": "logging.handlers.RotatingFileHandler",
"filename": "/logs/rustfs.log",
"maxBytes": 10485760,
"backupCount": 5
}
},
"root": {
"level": "INFO",
"handlers": ["file"]
}
}
六、备份和恢复
6.1 自动备份脚本
#!/bin/bash
BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
docker exec rustfs tar czf /data/metadata.tar.gz /data/.metadata
docker cp rustfs:/data/metadata.tar.gz $BACKUP_DIR/
tar czf $BACKUP_DIR/config.tar.gz ./config
echo "备份完成:$BACKUP_DIR"
6.2 设置定时任务
0 2 * * * /opt/rustfs/scripts/backup.sh
七、常见问题排坑指南
问题 1:控制台无法访问
sudo firewall-cmd --add-port=9000-9001/tcp --permanent
sudo firewall-cmd --reload
问题 2:存储空间不足
volumes:
- /mnt/nas/rustfs_data:/data
问题 3:性能瓶颈
environment:
- RUSTFS_READ_AFTER_WRITE_QUORUM=1
- RUSTFS_WRITE_QUORUM=1
八、生产级部署脚本
#!/bin/bash
set -e
echo "开始部署 RustFS 生产环境..."
if ! command -v docker &> /dev/null; then
echo "安装 Docker..."
curl -fsSL https://get.docker.com | sh
fi
docker network create rustfs-net 2>/dev/null || true
docker-compose down
docker-compose up -d
echo "等待服务启动..."
sleep 30
if curl -f http://localhost:9000/minio/health/live; then
echo "RustFS 部署成功!"
echo "控制台地址:http://你的 IP:9001"
echo "API 地址:http://你的IP:9000"
else
echo "部署失败,请检查日志"
docker-compose logs rustfs
fi
附录:官方资源
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online