MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Automatiser MongoDB avec SaltStack

Le déploiement de bases de données pour un nombre multiple de serveurs devient plus complexe et prend du temps avec le temps lors de l'ajout de nouvelles ressources ou des modifications. De plus, il existe un risque d'erreurs humaines pouvant entraîner des résultats catastrophiques chaque fois que le système est configuré manuellement.

Un outil d'automatisation du déploiement de base de données nous permettra de déployer une base de données sur plusieurs serveurs allant des environnements de développement aux environnements de production. Les résultats d'un déploiement automatisé sont fiables, plus efficaces et prévisibles en plus de fournir des informations sur l'état actuel de vos nœuds qui peuvent ensuite être utilisées pour planifier les ressources que vous devrez ajouter à vos serveurs. Avec un déploiement bien géré, la productivité des équipes de développement et opérationnelles s'améliore, permettant ainsi à l'entreprise de se développer plus rapidement, d'accomplir davantage et, grâce à un déploiement fréquent et facile, la configuration globale du logiciel sera finalement meilleure et fonctionnera de manière fiable pour les utilisateurs finaux.

MongoDB peut être déployé manuellement mais la tâche devient de plus en plus lourde lorsque vous devez configurer un cluster de nombreux membres hébergés sur différents serveurs. Il faut donc se résoudre à utiliser un outil automobile qui peut nous éviter le stress. Certains des outils disponibles pouvant être utilisés incluent Puppet, Chef, Ansible et SaltStack.

Les principaux avantages du déploiement de votre MongoDB avec l'un de ces outils sont :

  1. Gain de temps. Imaginez avoir 50 nœuds pour votre base de données et vous devez mettre à jour la version de MongoDB pour chacun. Cela vous prendra des années à travers le processus. Cependant, avec un outil automatique, il vous suffira d'écrire quelques instructions et d'émettre une commande pour effectuer le reste de la mise à jour à votre place. Les développeurs auront alors le temps de travailler sur de nouvelles fonctionnalités plutôt que de corriger les déploiements manuels.
  2. Réduction des erreurs d'où la satisfaction des clients. Faire de nouvelles mises à jour peut introduire des erreurs dans un système de base de données, surtout si la configuration doit être effectuée manuellement. Avec un outil comme SaltStack, la suppression des étapes manuelles réduit les erreurs humaines et les mises à jour fréquentes avec de nouvelles fonctionnalités répondront aux besoins des clients, permettant ainsi à l'organisation de rester compétitive.
  3. Coût de configuration réduit. Avec un outil de déploiement, n'importe qui peut se déployer, même vous-même, car le processus lui-même sera beaucoup plus facile. Cela éliminera le besoin d'experts pour effectuer le travail et réduira les erreurs

Qu'est-ce que SaltStack

SaltStack est un outil d'exécution à distance open source et un système de gestion de configuration développé en Python.

Les fonctionnalités d'exécution à distance sont utilisées pour exécuter des commandes sur différentes machines en parallèle avec un système de ciblage flexible. Si par exemple vous avez 3 machines serveurs et que vous souhaitez installer MongoDB pour chacune, vous pouvez exécuter les commandes d'installation sur ces machines simultanément depuis un nœud maître.

En termes de gestion de configuration, une interface client-serveur est établie pour transformer facilement et en toute sécurité les composants de l'infrastructure dans l'état souhaité.

Architecture SaltStack

Le modèle de configuration de base pour SaltStack est Client-Serveur où le serveur peut être appelé le maître et les Clients comme les esclaves. Le maître émet des commandes ou plutôt des instructions en tant que système de contrôle qui doivent être exécutées par les clients/minions qui sont les systèmes contrôlés.

Composants SaltSack

Voici ce dont SaltStack est composé

  1. Maître  :responsable de l'émission d'instructions aux esclaves et de leur passage à l'état souhaité après exécution.
  2. Sbire  :C'est le système contrôlé qui doit être transformé en un état souhaité.
  3. Grains de sel  : il s'agit de données statiques ou de métadonnées concernant le minion et qui constituent des informations telles que le modèle, le numéro de série, la capacité de la mémoire et le système d'exploitation. Ils sont collectés lorsque le minion se connecte pour la première fois au serveur. Ils peuvent être utilisés pour cibler un certain groupe de sbires en relation avec certains aspects. Par exemple, vous pouvez exécuter une commande indiquant, installez MongoDB pour toutes les machines avec un système d'exploitation Windows.
  4. Modules/instructions d'exécution  :Il s'agit de commandes ad hoc émises vers un ou plusieurs minions cibles et exécutées à partir de la ligne de commande.
  5. Piliers :sont des variables définies par l'utilisateur distribuées parmi les minions. Ils sont utilisés pour :la configuration des minions, les données hautement sensibles, les données arbitraires et les variables. Tous les minions ne sont pas accessibles à tous les piliers, on peut restreindre les piliers pour un certain groupe de minions.
  6. Fichiers d'état . C'est le cœur du Salt State System (SLS) et il représente l'état dans lequel le système devrait être. C'est l'équivalent d'un playbook dans le cas d'Ansible étant donné qu'ils sont également au format YAML, c'est-à-dire
#/srv/salt/mongodbInstall.sls (file root)

install_mongodb: (task id)

pkg.installed: (state declaration)

-name:mongodb  (name of package to install)
  1. Top fichier :Utilisé pour mapper un groupe de machines et définir quels fichiers d'état doivent être appliqués. c'est-à-dire

#/srv/salt/top.sls

  base:

   ‘minion1’:

     -mongodb
  1. Proxy Salt  :  Il s'agit d'une fonctionnalité qui permet de contrôler les appareils qui ne peuvent pas exécuter un salt-minion standard. Ils incluent des équipements réseau avec une API fonctionnant sur un système d'exploitation propriétaire, des appareils avec des limitations de CPU et de mémoire ou ceux qui ne peuvent pas exécuter de minions pour des raisons de sécurité. Un proxy Junos doit être utilisé pour la découverte, le contrôle, l'exécution à distance et la gestion de l'état de ces appareils.

Installation de SaltStack

Nous pouvons utiliser la commande pip pour installer SaltStack en tant que 

$ pip install salt

Pour confirmer l'installation, exécutez la commande $ salt --version et vous devriez obtenir quelque chose comme salt 2019.2.2 (Fluorine)

Avant de se connecter au maître, le minion nécessitera une configuration minimale de l'adresse IP du maître et de l'identifiant du minion qui seront utilisés par le maître pour sa référence. Ces configurations peuvent être faites dans les fichiers /etc/salt/minion.

Nous pouvons ensuite exécuter le maître dans différents modes, c'est-à-dire démon ou en mode débogage. Pour le cas du démon, vous aurez $salt-master -d et pour le mode débogage, $salt-master -l debug. Vous devrez accepter la clé du minion avant de le démarrer en exécutant $ salt-key -a nameOfMinion. Pour lister les clés disponibles, exécutez $ salt-key -l

Dans le cas du minion, nous pouvons le démarrer avec $salt-minion -l debug.

Par exemple, si nous voulons créer un fichier dans tous les minions du maître, nous pouvons exécuter la commande 

$ salt ‘’*” file.touch ‘/tmp/salt_files/sample.text

Tous les nœuds auront un nouveau fichier sample.text dans le dossier salt_files. L'option * est utilisée pour désigner tous les serviteurs. Pour spécifier par exemple tous les minions avec le nom d'identifiant ayant la chaîne minion, nous utiliserons une expression regex comme ci-dessous 

$ salt “minion*” file.touch ‘/tmp/salt_files/sample.text

Pour voir les métadonnées collectées pour un minion donné, exécutez :

$salt ‘minion1’ grains.items.

Configurer MongoDB avec SaltStack

Nous pouvons créer une base de données appelée myAppdata avec setDatabase.sls avec le contenu ci-dessous 

classes:

- service.mongodb.server.cluster

parameters:

   _param:

     mongodb_server_replica_set: myAppdata

     mongodb_myAppdata_password: myAppdataPasword

     mongodb_admin_password: cloudlab

     mongodb_shared_key: xxx

   mongodb:

     server:

       database:

         myAppdata:

           enabled: true

           password: ${_param:mongodb_myAppdata_password}

           users:

           -  name: myAppdata

              password: ${_param:mongodb_myAppdata_password}

Démarrer un seul serveur MongoDB 

mongodb:

  server:

    enabled: true

    bind:

      address: 0.0.0.0

      port: 27017

    admin:

      username: admin

      password: myAppdataPasword

    database:

      myAppdata:

        enabled: true

        encoding: 'utf8'

        users:

        - name: 'username'

          password: 'password'

Configurer un cluster MongoDB avec SaltStack

mongodb:

  server:

    enabled: true

    logging:

      verbose: false

      logLevel: 1

      oplogLevel: 0

    admin:

      user: admin

      password: myAppdataPasword

    master: mongo01

    members:

      - host: 192.168.100.11

        priority: 2

      - host: 192.168.101.12

      - host: 192.168.48.13

    replica_set: default

    shared_key: myAppdataPasword

Conclusion

Comme ClusterControl, SaltStack est un outil d'automatisation qui peut être utilisé pour faciliter les tâches de déploiement et d'exploitation. Avec un outil d'automatisation, il y a moins d'erreurs, moins de temps de configuration et des résultats plus fiables.