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