demo/rustfs

Four-node distributed RustFS object-storage example managed and monitored through the MINIO module.

demo/rustfs explicitly sets minio_type: rustfs and deploys a RustFS S3-compatible object-storage cluster across four nodes. It reuses the MINIO module’s identity, TLS, mcli, bucket, and user-provisioning interfaces, while using a separate RustFS package, certificate directory, data format, and native OTLP metrics.


Overview

  • Config name: demo/rustfs
  • Nodes: 4 object-storage nodes; the first also hosts a single-node INFRA deployment
  • Cluster identity: minio_cluster: rustfs
  • Data directory: /data/rustfs on each node
  • Client endpoint: https://rustfs-1.pigsty:9000, using alias rustfs
  • Provisioning: creates the pgsql, meta, and data buckets with corresponding example users
  • Repository: explicitly includes the RustFS package through repo_extra_packages: [rustfs]
./configure -c demo/rustfs
./deploy.yml

You can also target only the four members after NODE and INFRA initialization:

./minio.yml -l minio

-l minio is the Ansible group name in the template; actual membership is determined by minio_cluster: rustfs.


Content

Source: pigsty/conf/demo/rustfs.yml

---
#==============================================================#
# File      :   rustfs.yml
# Desc      :   Four-node RustFS cluster managed by MINIO module
#==============================================================#

all:
  children:

    infra:
      hosts:
        10.10.10.10: { infra_seq: 1 }

    minio:
      hosts:
        10.10.10.10: { minio_seq: 1 }
        10.10.10.11: { minio_seq: 2 }
        10.10.10.12: { minio_seq: 3 }
        10.10.10.13: { minio_seq: 4 }
      vars:
        minio_type: rustfs
        minio_cluster: rustfs
        minio_data: /data/rustfs
        minio_alias: rustfs
        minio_endpoint: https://rustfs-1.pigsty:9000
        minio_buckets:
          - { name: pgsql }
          - { name: meta, versioning: true }
          - { name: data }
        minio_users:
          - { access_key: pgbackrest, secret_key: S3User.Backup, policy: pgsql }
          - { access_key: s3user_meta, secret_key: S3User.Meta, policy: meta }
          - { access_key: s3user_data, secret_key: S3User.Data, policy: data }

  vars:
    version: v4.5.0
    admin_ip: 10.10.10.10
    region: default
    repo_extra_packages: [ rustfs ]
    minio_access_key: minioadmin
    minio_secret_key: S3User.MinIO
...

Explanation

  • The MINIO role generates multi-node volume addresses from the four minio_seq values and /data/rustfs.
  • By default, RustFS pushes native rustfs_* metrics over OTLP/HTTP to VictoriaMetrics on the first infra node every 15 seconds and registers a separate HTTPS readiness probe.
  • minio_endpoint points directly to the first member and is not an HA endpoint. Production deployments should add a validated load balancer or VIP according to their failure budget.
  • All access keys in the template are public demo values and must be replaced before deployment.
  • RustFS shares only the S3 and module interfaces with Silo/MinIO; their data formats are not interchangeable in place. Switching an existing cluster’s engine requires a validated data-migration and rollback procedure.

See the MINIO module and RustFS monitoring guide for parameters, monitoring, and migration boundaries.


Last Modified: 2026-08-10: calibrate for pigsty 4.5 (3683ee2b)