使用 RustFS 作为对象存储
RustFS 是一个用 Rust 编写的开源 S3 兼容对象存储。GreptimeDB 通过标准的 S3 存储类型连接 RustFS,不需要任何 RustFS 特有的配置项。RustFS 官方也提供了一份 GreptimeDB 集成指南。
启动 RustFS
使用 Docker 启动一个单节点 RustFS:
docker run -d --name rustfs -p 9000:9000 -p 9001:9001 rustfs/rustfs:latest
9000 端口提供 S3 API,9001 端口提供 Web 控制台。默认的 access key 和 secret key 都是 rustfsadmin,生产环境务必修改。
创建 bucket
GreptimeDB 不会自动创建 bucket,请先在 RustFS 中创建,可以通过控制台 http://127.0.0.1:9001/rustfs/console/ 或任意 S3 客户端完成。下面的配置使用名为 greptimedb 的 bucket。如果 bucket 不存在,GreptimeDB 仍能正常启动,但第一条 CREATE TABLE 会因对象存储返回 404 而失败。
配置 GreptimeDB
在单机实例或每个 datanode 的配置文件中加入如下 [storage] 配置:
[storage]
type = "S3"
bucket = "greptimedb"
root = "greptimedb"
access_key_id = "rustfsadmin"
secret_access_key = "rustfsadmin"
endpoint = "http://127.0.0.1:9000"
region = "us-east-1"
RustFS 使用 path-style 请求。GreptimeDB 对自定义 endpoint 默认就使用 path-style,因此无需设置 enable_virtual_host_style。其他 S3 配置项请参考存储选项。