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).