7.2.9.4.4. Déploiement d’un cluster de production avec réduction de la RAM¶
Le déploiement d’un cluster mongoDB, pour gérer de forte volumétrie avec les performances initiales estimées et une tolérance aux pannes satisfaisante, va s’avérer gourmand en ressource matérielle.
Par exemple, pour gérer un milliard d’AU dans le système, avec une performance de versement estimée à 450.000 AU par heure, et une tolérance aux pannes fondée sur l’utilisation de 3 membres par ReplicaSet
, il est estimé le besoin de 960 Go de RAM (donnée extrapolée à partir d’un environnement chargé à 200 millions d’AU avec 4 Shards constitués de machines 4 vCPU / 16 Go RAM).
Si le coût d’une telle infrastructure ne peut pas être supportée, il est possible de diminuer l’allocation RAM sur un membre par ReplicaSet
. Le principe étant de conserver une haute disponibilité (et une consistance des données), à performance constante, avec deux membres dont les ressources physiques le permettent. Le troisième membre, dont les ressources ont été abaissées au minimum, est configuré pour ne pas être prioritaire à l’élection d’un noeud primaire. Dans le cas d’une indisponibilité des deux premiers membres, le service reste assuré (avec niveau de tolérance aux pannes toujours équivalent à 3 membres) mais dont les performances initiales ne sont plus assurées.
Pour réaliser le déploiement du cluster mongodb-data
, en mode PSSmin
, composé de 3 machines hebergeant les services vitam-mongos
et vitam-mongoc
et de 6 machines hebergeant le service vitam-mongod
(pour disposer de 2 Shards
), l’inventaire ansible doit référencer les 3 premières machines pour les groupes hosts-mongos-data
et hosts-mongoc-data
et les 6 autres machines pour le groupe hosts-mongod-data
.
Parmis les 3 machines de chaque replicaSet
, la machine qui est déployée avec les ressources matérielles minimum, doit être suivi du paramètre is_small=true
.
Exemple
[hosts-mongodb-data:children]
hosts-mongos-data
hosts-mongoc-data
hosts-mongod-data
[hosts-mongos-data]
host1.vm mongo_cluster_name=mongodb-data
host2.vm mongo_cluster_name=mongodb-data
host3.vm mongo_cluster_name=mongodb-data mongo_rs_bootstrap=true
[hosts-mongoc-data]
host1.vm mongo_cluster_name=mongodb-data
host2.vm mongo_cluster_name=mongodb-data
host3.vm mongo_cluster_name=mongodb-data mongo_rs_bootstrap=true
[hosts-mongod-data]
host4.vm mongo_cluster_name=mongodb-data mongo_shard_id=0
host5.vm mongo_cluster_name=mongodb-data mongo_shard_id=0 is_small=true
host6.vm mongo_cluster_name=mongodb-data mongo_shard_id=0 mongo_rs_bootstrap=true
host7.vm mongo_cluster_name=mongodb-data mongo_shard_id=1
host8.vm mongo_cluster_name=mongodb-data mongo_shard_id=1 is_small=true
host9.vm mongo_cluster_name=mongodb-data mongo_shard_id=1 mongo_rs_bootstrap=true
Le déploiement d’un cluster mongodb-offer
en mode PSSmin
suit les mêmes règles que l’exemple illustré ci-dessus (les groupes ansible ne sont pas les mêmes).