在云原生、边缘存储、AI 非结构化数据存储场景中,传统 MinIO 存储常面临 GC 卡顿、高并发性能瓶颈、内存安全隐患等问题。而 RustFS 作为 Rust 编写的国产化分布式对象存储,凭借无 GC 抖动、内存安全、超高并发性能,且 100% 兼容 S3 协议的特性,成为 MinIO 的优质替代方案,实测 4K 随机读写性能较 MinIO 提升 40% 以上,适配各类高性能存储场景。
本文将手把手带你完成 RustFS 部署 + Jellyfish 完整对接配置,从环境准备、服务部署、参数配置、连通验证到性能优化,全程可直接复刻,适配开发测试与生产环境,轻松为 Jellyfish 搭载高性能对象存储后端。
一、核心技术优势:为什么选 Jellyfish + RustFS?
1. RustFS 核心亮点
- 极致性能与稳定性:基于 Rust 开发,无垃圾回收机制,彻底规避运行时卡顿,高并发、大流量场景稳定性拉满
- 全 S3 协议兼容:完美兼容标准 S3 API,原有 S3 对接逻辑无需大幅改造,迁移、对接成本极低
- 轻量易部署:支持 Docker 快速部署、二进制部署、源码编译部署,适配单机测试、集群生产多种场景
- 多架构适配:支持 Linux、Windows、macOS 系统,兼容 x86、ARM 架构,可落地服务器、边缘网关等多设备
2. 组合适配场景
Jellyfish 作为轻量化云原生存储调度组件,搭配 RustFS 可完美适配:AI 数据集存储、日志文件归档、静态资源托管、边缘设备数据存储、企业非结构化数据备份等场景,兼顾轻量化、高性能、高可靠。
二、前置环境准备
本次实操基于 Linux 服务器(CentOS 7+/Ubuntu 20.04+),所有命令通用,前置条件如下:
- 服务器已安装 Docker & Docker Compose(推荐 Docker ≥20.10 版本)
- 服务器放行 9000(S3 服务端口)、9001(可视化控制台端口),关闭防火墙或开放端口权限
- 已正常部署 Jellyfish 服务,且服务网络可互通 RustFS 服务
- 服务器磁盘空间充足,提前规划数据持久化目录
三、第一步:部署 RustFS 对象存储服务
优先推荐 Docker Compose 部署,一键启动、自动持久化、便于运维升级,适合绝大多数场景。
1. 创建部署目录与配置文件
新建专属目录,统一管理 RustFS 数据、日志与配置文件:
# 创建工作目录
mkdir -p /opt/rustfs/{data,logs}
cd /opt/rustfs
# 创建 docker-compose 部署文件
vim docker-compose.yml
2. 编写 Docker Compose 配置
填入以下完整配置,包含端口映射、数据持久化、密钥配置、控制台开启等核心参数,生产环境建议修改默认密钥:
version: '3.8'
services:
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs
restart: always
ports:
- "9000:9000" # S3 API 对接端口(核心对接端口)
- "9001:9001" # Web 可视化控制台端口
volumes:
- ./data:/data # 数据持久化挂载
- ./logs:/var/log/rustfs # 日志持久化
environment:
RUSTFS_ACCESS_KEY: rustfsadmin # S3 访问密钥(AK)
RUSTFS_SECRET_KEY: RustFS@2026 # S3 私密密钥(SK,生产务必修改)
RUSTFS_CONSOLE_ENABLE: "true" # 开启可视化控制台
RUSTFS_CONSOLE_ADDRESS: ":9001"
RUSTFS_CACHE_SIZE: 2Gi # 内存缓存大小,按需调整
privileged: true
network_mode: bridge
3. 启动 RustFS 服务
# 修复目录权限(RustFS 容器运行用户为 10001)
chown -R 10001:10001 /opt/rustfs/*
# 后台启动服务
docker-compose up -d
# 查看服务运行状态
docker-compose ps
# 查看日志,排查启动异常
docker-compose logs -f
4. 验证 RustFS 服务可用性
- 访问控制台:
http://服务器IP:9001,使用配置的 AK/SK 登录 - 端口检测:
ss -tulpn | grep 9000,确认端口正常监听
四、核心步骤:Jellyfish 配置 RustFS 存储后端
RustFS 完全兼容 S3 协议,因此 Jellyfish 对接方式与 MinIO 一致,仅需替换服务地址、密钥参数,无需修改核心逻辑。
1. 核心对接参数说明
提前整理对接核心参数(与上述 docker-compose 配置对应):
- S3 服务端点(Endpoint):
http://服务器IP:9000 - AccessKey(AK):
rustfsadmin(自定义则对应修改) - SecretKey(SK):
RustFS@2026(自定义则对应修改) - 区域 Region:任意填写(RustFS 不校验区域,推荐填
us-east-1) - 强制路径模式:开启(对接必备参数)
2. 修改 Jellyfish 存储配置
找到 Jellyfish 核心配置文件(通常为 config.yaml 或环境变量配置),替换存储后端为 RustFS,完整配置示例如下:
# Jellyfish 存储后端配置
storage:
# 启用 S3 兼容存储(RustFS)
driver: s3
s3:
endpoint: http://192.168.xxx.xxx:9000 # 替换为你的服务器公网/内网IP
access_key: rustfsadmin
secret_key: RustFS@2026
region: us-east-1
bucket: jellyfish-data # 自定义存储桶名称
force_path_style: true # 关键配置,必须开启,否则对接失败
disable_ssl: true # 本地/内网部署关闭SSL,公网可按需开启
3. 初始化 RustFS 存储桶
Jellyfish 依赖指定存储桶存储数据,需提前在 RustFS 中创建对应桶,可通过 mc 客户端快速操作:
# 安装 mc 客户端
curl https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc
chmod +x /usr/local/bin/mc
# 配置 RustFS 别名
mc alias set rustfs http://服务器IP:9000 rustfsadmin RustFS@2026
# 创建 Jellyfish 专属存储桶
mc mb rustfs/jellyfish-data
# 查看桶列表,确认创建成功
mc ls rustfs/
4. 重启 Jellyfish 服务生效
# 重启 Jellyfish 服务(根据实际部署方式调整)
# Docker 部署重启
docker restart jellyfish
# 二进制部署重启
systemctl restart jellyfish
五、连通性与功能验证
配置完成后,通过以下步骤验证对接是否成功,确保读写正常:
- 日志验证:查看 Jellyfish 运行日志,无 S3 连接报错、认证报错即为连接正常
- 文件上传测试:通过 Jellyfish 上传测试文件、图片、日志等非结构化数据
- 后端校验:登录 RustFS 控制台(9001 端口),进入
jellyfish-data桶,查看是否存在上传的文件数据 - 读写完整性:测试文件下载、删除、更新操作,确认所有功能正常
六、常见踩坑问题与解决方案
1. 端口占用导致 RustFS 启动失败
问题:9000/9001 端口被 MinIO 或其他服务占用。 解决方案:修改 docker-compose.yml 端口映射,例如 9002:9000,同步修改 Jellyfish 配置中的 endpoint 端口。
2. Jellyfish 连接 RustFS 超时
问题:网络不通、防火墙未放行端口。 解决方案:放行服务器 9000/9001 端口,内网部署优先使用内网 IP,关闭主机防火墙或添加端口放行规则。
3. S3 认证失败
问题:AK/SK 配置不一致、参数空格错误。 解决方案:严格核对 Jellyfish 配置与 RustFS 启动环境变量,密钥无多余空格,生产环境避免使用默认密钥。
4. 文件上传成功但控制台看不到数据
问题:未开启 force_path_style: true。 解决方案:该参数是 S3 兼容对接关键,必须在 Jellyfish 配置中开启,否则域名解析异常导致数据写入异常。
七、生产环境优化建议
- 密钥安全加固:替换默认 AK/SK,使用高强度随机密钥,禁止明文配置,可通过环境变量、密钥管理工具注入
- 性能调优:根据服务器内存调整
RUSTFS_CACHE_SIZE,高并发场景可开启磁盘缓存、数据压缩功能 - 高可用部署:生产环境采用多节点多磁盘(MNMD)部署模式,配置数据副本,避免单点故障
- 日志与监控:开启 RustFS 日志持久化,接入 Prometheus + Grafana 监控,实时观测存储读写、并发、磁盘使用率
- 权限管控:通过 mc 客户端配置存储桶匿名权限、读写策略,限制非法访问
八、总结
RustFS 凭借高性能、高安全、零迁移成本的优势,完美替代传统 MinIO 成为 Jellyfish 的优质存储后端。本次配置全程基于标准 S3 协议,无需改造 Jellyfish 核心代码,部署简单、适配性强。
相较于传统存储方案,Jellyfish + RustFS 组合有效解决了高并发卡顿、内存安全、性能瓶颈等问题,无论是开发测试环境,还是企业生产、边缘存储场景,都能实现轻量化、高性能的非结构化数据存储落地。