MinIO Distributed Cluster Architecture
Cold cluster (HDD/SAN) + Hot cluster (SSD/NVMe) with HAProxy load balancer
Client / Application
S3-compatible API requests
HAProxy Load Balancer
Single HA endpoint · Round-robin + failover · Health checks
Ports: 9000 (cold API) · 9001 (cold UI) · 9100 (hot API) · 9101 (hot UI)
❄️ cold cluster
ports 9000 / 9001
⚡ hot cluster
ports 9100 / 9101
❄️ Cold Cluster
HDD / SAN storage · /mnt/san
cold-node1
:9000 · :9001
minio-user · /mnt/san
systemd · ufw allowed
cold-node2
:9000 · :9001
minio-user · /mnt/san
systemd · ufw allowed
cold-node3
:9000 · :9001
minio-user · /mnt/san
systemd · ufw allowed
cold-node4
:9000 · :9001
minio-user · /mnt/san
systemd · ufw allowed
Erasure coding · survive 1–2 node failures
HAProxy → GET /minio/health/live
💾 Storage layer
HDD · SAN · NFS (testing only)
Separate disk per node — never root disk
Archives · Backups · Compliance
Cost-optimised · Infrequent access
/etc/default/minio · MINIO_SERVER_URL=haproxy:9000
⚡ Hot Cluster
SSD / NVMe storage · /mnt/ssd
hot-node1
:9000 · :9001
minio-user · /mnt/ssd
systemd · ufw allowed
hot-node2
:9000 · :9001
minio-user · /mnt/ssd
systemd · ufw allowed
hot-node3
:9000 · :9001
minio-user · /mnt/ssd
systemd · ufw allowed
hot-node4
:9000 · :9001
minio-user · /mnt/ssd
systemd · ufw allowed
Erasure coding · survive 1–2 node failures
HAProxy → GET /minio/health/live
⚡ Storage layer
SSD · NVMe
Separate disk per node — never root disk
Low-latency · High-throughput apps
Performance-optimised · Frequent access
/etc/default/minio · MINIO_SERVER_URL=haproxy:9100
Access endpoints via HAProxy
❄️ API → haproxy:9000
❄️ UI → haproxy:9001
⚡ API → haproxy:9100
⚡ UI → haproxy:9101
9 servers total: 4 cold nodes + 4 hot nodes + 1 HAProxy
Data HA via erasure coding · Access HA via HAProxy round-robin
Automatic failover · Health-checked every request · Systemd managed
Created by darin40 · MinIO Distributed Cluster Guide