Un Replica Set MongoDB permet d’assurer la haute disponibilité et la redondance des données. Ce guide détaille l’installation d’un Replica Set à trois nœuds, l’activation de l’authentification et la mise en place de sauvegardes automatisées via mongodump.
Prérequis
- Trois serveurs Linux (Debian/Ubuntu ou RHEL/CentOS)
- MongoDB Community Edition installé (v6.x)
- Ports réseau ouverts : 27017
1. Configuration initiale sans authentification
Sur chaque nœud, éditez /etc/mongod.conf et configurez d'abord le Replica Set sans authentification :
replication:
replSetName: 'rs0'
net:
bindIp: 0.0.0.0
Redémarrez MongoDB :
sudo systemctl restart mongod
2. Créez l'utilisateur administrateur
Sur le premier nœud, créez un utilisateur admin avant d'activer l'authentification :
mongosh --eval "db.getSiblingDB('admin').createUser({user:'admin',pwd:'StrongPass123',roles:[{role:'root',db:'admin'}]});"
3. Création du keyFile pour la sécurité intra-cluster
Générez et configurez le keyFile sur le nœud primaire :
openssl rand -base64 756 > /etc/mongod/keyfile
chmod 400 /etc/mongod/keyfile
sudo chown mongod:mongod /etc/mongod/keyfile
Copiez ce fichier sur les autres nœuds avec les mêmes permissions.
4. Activation de l'authentification et du keyFile
Sur chaque nœud, éditez /etc/mongod.conf et ajoutez :
security:
authorization: enabled
keyFile: /etc/mongod/keyfile
Redémarrez tous les nœuds :
sudo systemctl restart mongod
5. Initialisation du Replica Set
Avec l'authentification activée, initialisez le Replica Set sur le premier nœud :
mongosh -u admin -p StrongPass123 --authenticationDatabase admin --eval 'rs.initiate({_id:"rs0",members:[{_id:0,host:"node1:27017"},{_id:1,host:"node2:27017"},{_id:2,host:"node3:27017"}]});'
6. Vérification du statut
mongosh -u admin -p StrongPass123 --authenticationDatabase admin --eval 'rs.status();'
7. Mise en place de la sauvegarde automatisée
Créez un script /usr/local/bin/mongo-backup.sh :
#!/bin/bash
TIMESTAMP=$(date +'%F_%H-%M')
BACKUP_DIR="/backups/mongo/$TIMESTAMP"
mkdir -p "$BACKUP_DIR"
mongodump --uri="mongodb://admin:StrongPass123@node1:27017,node2:27017,node3:27017/admin?replicaSet=rs0" --out="$BACKUP_DIR"
find /backups/mongo -maxdepth 1 -mtime +7 -type d -exec rm -rf {} \;
Rendez-le exécutable :
chmod +x /usr/local/bin/mongo-backup.sh
Ajoutez un cron pour sauvegarder chaque jour à 2h :
(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/mongo-backup.sh >> /var/log/mongo-backup.log 2>&1") | crontab -
Conclusion
Vous avez mis en place un Replica Set MongoDB sécurisé avec authentification, haute disponibilité et sauvegardes automatisées pour garantir l'intégrité de vos données et la continuité de service.
Pour une supervision complète de votre cluster, complétez cette infrastructure avec une stack monitoring Prometheus et un load balancer HAProxy pour router les connexions efficacement.


