Multi-site deployment

Configure MinIO Sidekick to provide automatic failover between multiple datacenter sites.

Two-site configuration

Deploy Sidekick with two sites by specifying separate backend groups:

sidekick --health-path=/minio/health/ready \
  http://site1-minio{1...4}:9000 \
  http://site2-minio{1...4}:9000

Sidekick routes traffic to the first site by default. When all backends in site 1 become unhealthy, the load balancer automatically fails over to site 2.

Pool-based sites

Each site can contain multiple pools of servers. Separate pool endpoints within a site using commas:

sidekick --health-path=/minio/health/ready \
  http://site1-minio{1...4}:9000,http://site1-minio{5...8}:9000 \
  http://site2-minio{1...4}:9000,http://site2-minio{5...8}:9000

This configuration creates two sites, each with two pools of four servers. Sidekick treats all pools within a site equally when distributing traffic. Failover to the next site occurs only when all pools in the current site become unhealthy.

Read-only failover

For deployments with read-write splitting, configure different health check paths for primary and failover sites:

sidekick --health-path=/minio/health/cluster \
  --read-health-path=/minio/health/cluster/read \
  http://site1-minio{1...4}:9000 \
  http://site2-minio{1...4}:9000

The primary site uses the standard health check at /minio/health/cluster. After failover to site 2, Sidekick uses /minio/health/cluster/read for health checks. This allows the backup site to serve read requests even without write quorum.

The --read-health-path flag applies only to the last site specified. All other sites use the standard --health-path endpoint.

Geographic distribution

Deploy load balancer instances at each client location with site lists ordered by geographic proximity. Clients in datacenter 1 should configure site 1 as primary, while clients in datacenter 2 should configure site 2 as primary. This provides optimal latency during normal operations while maintaining failover capability.

Each load balancer instance makes independent failover decisions based on its own health check results. Network partitions may cause different instances to use different active sites.