🟦 Cluster MinIO — Installation & Configuration Complète
Ce guide explique comment installer un cluster MinIO distribué 4 nœuds, sécurisé et accessible via HAProxy.
Ce mode offre Une haute disponibilité, une tolérance aux pannes et scalabilité horizontale.
✅ 0. Prérequis indispensables
Avant de commencer, assurez-vous d’avoir :
🔹 Infrastructure
- 4 serveurs (ou VM) MinIO :
atdia-minio1,atdia-minio2,atdia-minio3,atdia-minio4 - Chaque nœud doit disposer de :
- 1 disque dédié (ex :
/dev/vdb) - 1 répertoire volume (
/var/minio)
- 1 disque dédié (ex :
- Résolution DNS fonctionnelle entre les nœuds :
ping atdia-minio1.epedia
- Même version de MinIO sur tous les nœuds
🔹 Réseau
- Ports à ouvrir sur chaque nœud :
- 9000/tcp → API S3
- 9001/tcp → Console web
- Accès SSH entre les nœuds (facultatif mais recommandé)
🔹 HAProxy
- 1 serveur dédié pour le load-balancing
- Certificats SSL pour exposer MinIO en HTTPS via HAProxy
🌐 Informations générales
- Console Web : port 9001
- API S3 : port 9000
- MinIO recommande 4 disques minimum, mais on peut faire :
✔️ 4 nœuds × 1 disque = 4 disques → compatible cluster distribué
🟦 1. Préparation des disques /dev/vdb (sur chaque nœud)
sudo mkfs.xfs /dev/vdb
sudo mkdir -p /var/minio
echo "/dev/vdb /var/minio xfs defaults 0 0" | sudo tee -a /etc/fstab
sudo mount -a
sudo chown -R minio-user:minio-user /var/minio
🟦 2. Création de l’utilisateur MinIO (sur chaque nœud)
sudo useradd -r -s /sbin/nologin minio-user
🟦 3. Installation du binaire MinIO (sur chaque nœud)
wget https://dl.min.io/server/minio/release/linux-amd64/minio
sudo cp minio /usr/local/sbin/
sudo chmod +x /usr/local/sbin/minio
🟦 4. Création des dossiers MinIO & logs
sudo mkdir -p /etc/minio
sudo mkdir -p /var/log/minio
sudo chown -R minio-user:minio-user /var/log/minio
Créer la configuration globale :
sudo vim /etc/minio/minio.conf
Contenu identique sur tous les nœuds :
MINIO_ROOT_USER="admin"
MINIO_ROOT_PASSWORD="Passw@rd123"
🟦 5. Endpoints du cluster MinIO
Liste complète des chemins distribués :
http://atdia-minio1.epedia/var/minio
http://atdia-minio2.epedia/var/minio
http://atdia-minio3.epedia/var/minio
http://atdia-minio4.epedia/var/minio
Ces endpoints doivent être mis dans le service systemd.
🟦 6. Fichier systemd pour le Cluster MinIO (sur chaque nœud)
Créer le service :
sudo vim /etc/systemd/system/minio.service
Contenu :
[Unit]
Description=MinIO Distributed Object Storage
After=network-online.target
Wants=network-online.target
StartLimitIntervalSec=0
StartLimitBurst=0
[Service]
User=minio-user
Group=minio-user
EnvironmentFile=/etc/minio/minio.conf
ExecStart=/usr/local/sbin/minio server \
http://atdia-minio1.epedia/var/minio \
http://atdia-minio2.epedia/var/minio \
http://atdia-minio3.epedia/var/minio \
http://atdia-minio4.epedia/var/minio \
--console-address ":9001" --address ":9000"
Restart=always
RestartSec=5
LimitNOFILE=65536
StandardOutput=append:/var/log/minio/minio.log
StandardError=append:/var/log/minio/minio.err
[Install]
WantedBy=multi-user.target
🟦 7. Activer et démarrer MinIO (sur chaque nœud)
sudo systemctl daemon-reload
sudo systemctl enable --now minio
sudo systemctl status minio
🟦 8. Firewall (sur chaque nœud)
sudo firewall-cmd --add-port={9000,9001}/tcp --permanent
sudo firewall-cmd --reload
S'assurer que notre service minio à bel et bien démarré et qu'il est fonctionnel
🟦 Interface Web Minio
http://atdia-minio1.epedia:9001
🟦 9. Serveur HAProxy — Load Balancer MinIO
NB: Le nom de mon serveur haproxy est atdia-minioha.epedia
Installation HAProxy
dnf install haproxy -y
Installation du client mc
wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/sbin/mc
chmod +x /usr/local/sbin/mc
🟦 10. Mise en place des certificats SSL pour HAProxy
sudo mkdir -p /etc/haproxy/certs
cd /etc/haproxy/certs
openssl genrsa -out minio.key 4096
openssl req -new -key minio.key -out minio.csr \
-subj "/C=CI/ST=Abidjan/L=Abidjan/O=ATSain/OU=IT/CN=atdia-minioha.epedia"
openssl x509 -req -days 365 -in minio.csr -signkey minio.key -out minio.crt
cat minio.key minio.crt > minio.pem
chmod 600 minio.pem
🟦 11. Configuration HAProxy pour MinIO
#---------------------------------------------------------------------
# Configuration Minio
#---------------------------------------------------------------------
# -----------------------------
# MINIO API (HTTPS public)
# -----------------------------
frontend minio_api_https
bind *:9000 ssl crt /etc/haproxy/certs/minio.pem
mode http
option forwardfor
http-request set-header Connection "upgrade" if { req.hdr(Upgrade) -i websocket }
http-request set-header Upgrade "websocket" if { req.hdr(Upgrade) -i websocket }
default_backend minio_api_nodes
backend minio_api_nodes
mode http
balance leastconn
server minio1 atdia-minio1.epedia:9000 check
server minio2 atdia-minio2.epedia:9000 check
server minio3 atdia-minio3.epedia:9000 check
server minio4 atdia-minio4.epedia:9000 check
# -----------------------------
# MINIO CONSOLE HTTPS
# -----------------------------
frontend minio_console_https
bind *:9001 ssl crt /etc/haproxy/certs/minio.pem
mode http
option forwardfor
http-request set-header Connection "upgrade" if { req.hdr(Upgrade) -i websocket }
http-request set-header Upgrade "websocket" if { req.hdr(Upgrade) -i websocket }
default_backend minio_console_nodes
backend minio_console_nodes
mode http
balance roundrobin
option httpchk HEAD /minio/health/ready
http-check expect rstatus 200
server minio1 atdia-minio1.epedia:9001 check
server minio2 atdia-minio2.epedia:9001 check
server minio3 atdia-minio3.epedia:9001 check
server minio4 atdia-minio4.epedia:9001 check
# -----------------------------
# STATISTIQUES
# -----------------------------
frontend haproxy_stats
bind *:8404
stats enable
stats uri /stats
stats refresh 10s
stats auth admin:Password123
🟦 12. Firewall HAProxy
firewall-cmd --permanent --add-port={9000,9001}/tcp
firewall-cmd --reload
🟦 13. Redémarrer HAProxy
systemctl restart haproxy
🟦 14. Initialisation du cluster depuis HAProxy
mc alias set minio https://atdia-minioha.epedia:9000 admin Passw@rd123 --insecure
mc mb minio/es-backups-mycellia --insecure
🟦 15. Informations sur le cluster MinIO
mc admin info minio --insecure
Vous aurez un resultat de ce genre :
🎉 Votre cluster MinIO est opérationnel !
🔜 À venir dans la section Lab
Très bientôt, vous découvrirez un lab complet montrant comment
sauvegarder les indices d’un cluster Elasticsearch vers un stockage MinIO distribué.
Nous verrons :
- la configuration d’un dépôt S3 pour Elasticsearch
- la création et l’automatisation des snapshots
- la restauration des données depuis MinIO
- les bonnes pratiques pour un backup fiable et sécurisé
Restez connectés les ami(e)s ! 🚀

