Ce depot contient la configuration des différents cluster MongoDB de la Mission Apprentissage.
Les clusters MongoDB sont composés d'un ou plus noeuds (serveur). Ils sont basés sur la configuration commune via le dépot infra.
MongoDB est installé sur les serveurs via les packages officiels de MongoDB en natif.
La configuration de MongoDB comprend:
- La création des utilisateurs via le vault
- La création du keyfile pour l'authentification des membres du cluster
- La configuration du fichier de configuration de MongoDB avec:
- L'utilisation du keyfile pour l'authentification interne
- L'activation de l'authentification
- L'activation du mode replSet
- L'activation du mode TLS pour le chiffrement des connexions
- La sauvegarde des données sur un volume externe (/mnt/data)
- Le montage du volume externe pour la sauvegarde des données
- La création d'un CRON pour la rotation des certificats TLS
Pour plus de détails sur la configuration lié à MongoDB se référer à la documentation de l'infrastructure.
En plus de MongoDB les serveurs ont un Docker Swarm pour le lancement des services système définis dans le dépot infra:
- un conteneur cadvisor pour la supervision des conteneurs
- un conteneur node-exporter pour la supervision du système
- un conteneur fluentd pour la collecte des logs
- un conteneur reverse proxy pour l'accès aux métriques par le serveur de monitoring (cadvisor, node-exporter, fluentd-prometheus-exporter).
Nom du cluster | URL de connexion | Noeud #1 | Noeud #2 | Noeud #3 |
---|---|---|---|---|
mongodb-recette |
mongodb+srv://<credentials>@mongodb-recette.apprentissage.beta.gouv.fr |
mongodb-recette-1.apprentissage.beta.gouv.fr |
n/a |
n/a |
mongodb-contrat |
mongodb+srv://<credentials>@mongodb-contrat.apprentissage.beta.gouv.fr |
mongodb-contrat-1.apprentissage.beta.gouv.fr |
n/a |
n/a |
mongodb-bal |
mongodb+srv://<credentials>@mongodb-bal.apprentissage.beta.gouv.fr |
mongodb-bal-1.apprentissage.beta.gouv.fr |
mongodb-bal-2.apprentissage.beta.gouv.fr |
mongodb-bal-3.apprentissage.beta.gouv.fr |
mongodb-lba |
mongodb+srv://<credentials>@mongodb-lba.apprentissage.beta.gouv.fr |
mongodb-lba-1.apprentissage.beta.gouv.fr |
mongodb-lba-2.apprentissage.beta.gouv.fr |
mongodb-lba-3.apprentissage.beta.gouv.fr |
Le déploiement des clusters est fait via Ansible, mais certaines actions ne sont pas automatisées:
- L'ajout du volume externe
- Le formatage initial du volume externe
Pour déployer un cluster MongoDB, il est nécessaire de déployer chaque noeud individuellement. En fonction de la finalité recherchée il exiiste plusieurs cas de figure, avec chacun une procédure et documentation dédiée:
- Créer un nouveau cluster: Créer un nouveau cluster MongoDB.
- Ajouter un membre à un cluster existant: Ajouter un membre à un cluster existant.
- Mettre à jour d'un noeud existant: Mettre à jour un cluster existant (par exemple pour changer mettre à jour les utilisateurs).
Pour migrer un cluster MongoDB existant vers la nouvelle architecture veuillez suivre la procédure Migration.
Consulter les documentations dédiées à la sauvegarde et à la restauration des données.
Pour supprimer un noeud veuillez:
- Supprimer l'adresse du noeud dans l'enregistrement DNS
SRV
sur alwaysdata. - Supprimer le noeud du cluster MongoDB via la commande
.bin/mna deploy:remove:node <environnement>-<n>
- Décommissionner le serveur et le volume externe associé.
- Supprimer la référence du serveur dans le fichier ini de ce dépôt ainsi que celui du dépôt infra.
- Supprimer le noeud de Percona
Voici une liste des problèmes courants et des solutions associées:
- Augmenter le volume d'un noeud: Augmenter la taille du volume d'un noeud.
- Perte d'un noeud: Procédure en cas de perte d'un noeud.
Vous pouvez également consulter ces pages de la documentation officielle de MongoDB:
- Adjust Priority for Replica Set Member
- Perform Maintenance on Replica Set Members
- Force a Member to Become Primary
- Resync a Member of a Replica Set
Voir la documentation dédiée au développement