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

Bases de l'automatisation de la base de données MongoDB à l'aide de Chef

Les environnements gérés se développent au fil du temps, souvent en raison de l'augmentation de l'implication des données ou peut-être en raison de la nécessité d'augmenter les performances grâce à une charge de travail partagée. Pour cette raison, il est nécessaire d'ajouter des membres. Par exemple, avec MongoDB, on peut décider de faire de la réplication et du sharding, ce qui nécessitera par conséquent d'ajouter plus de membres au cluster. La configuration et le déploiement de ces environnements avec le temps deviennent mouvementés, chronophages, sujets aux erreurs humaines et à tant de contretemps associés qui engendrent finalement des dépenses opérationnelles. Prenons un exemple d'un jeu de répliques avec 50 membres dans MongoDB et vous souhaitez partitionner une certaine collection dans chacun des membres, le faire manuellement pour chacun prend du temps, nous avons donc besoin d'un système centralisé à partir duquel vous pouvez facilement configurer tous les membres . Avec un système centralisé, vous écrivez du code qui configure en interne les membres connectés. Le code est donc lisible par l'homme, versionnable et testable pour supprimer les éventuelles erreurs avant le déploiement.

Qu'est-ce que le logiciel Chef ?

Chef est un logiciel d'automatisation écrit en langage Ruby qui est utilisé pour rationaliser la tâche de configuration et de maintenance des machines cloud ou sur les serveurs prem. Pour ce faire, il s'assure que tous les membres connectés obtiennent les ressources requises, que les ressources sont bien configurées et corrige toutes les ressources qui ne sont pas dans l'état souhaité. Ainsi, Chef s'assure essentiellement que les fichiers et les ressources logicielles qui devraient se trouver sur une certaine machine sont présents, configurés correctement et fonctionnent correctement comme prévu.

Les composants de Chef

Chef serveur

Il s'agit du système de contrôle central qui héberge les données de configuration. Les données sont écrites dans une "recette" et si plusieurs de ces recettes sont impliquées, elles forment un livre de cuisine. Le système central contient également des métadonnées décrivant chacun des nœuds comme indiqué dans chef-client.

Toutes les modifications apportées aux recettes passent ici pour validation avant déploiement. Le serveur s'assure également que le poste de travail et les nœuds connectés sont couplés à l'aide de clés d'autorisation avant d'autoriser la communication entre eux et d'appliquer les modifications.

Noeud Client Chef

Le nœud client Chef enregistre et valide les nœuds et crée les objets de nœud. Il contient essentiellement l'état actuel d'un nœud donné et ses métadonnées.

Nœud

Il s'agit de la machine physique, virtuelle ou cloud à configurer et chacune doit avoir le nœud client installé.

Poste de travail

Le poste de travail fournit une interface de communication entre le serveur et les nœuds clients. Il fournit une plate-forme pour écrire, tester et déployer les livres de recettes. C'est ici que les rôles sont également définis

Tester la cuisine

C'est ici que le code est validé.

Couteau de chef

Interagit avec les nœuds.

Livres de cuisine

Contient des recettes écrites en langage Ruby et permettent de définir les tâches à effectuer. Les recettes précisent les ressources et l'ordre d'exécution sur les tâches définies.

  • les attributs sont utilisés pour remplacer les paramètres par défaut.
  • fichiers utilisés pour transférer des fichiers d'un chemin spécifique vers chef-client.
  • la ressource de métadonnées définit les informations de nœud telles que décrites dans le nœud client.

Comment fonctionne le chef

Chef a deux modes de fonctionnement, c'est-à-dire client/serveur ou en mode autonome appelé "chef-solo".

Le chef-serveur reçoit divers attributs concernant un certain nœud du chef-client. Ces attributs sont ensuite indexés à l'aide d'Elasticsearch par le serveur qui fournit ensuite une interface de programme d'application (API) à partir de laquelle les nœuds clients peuvent interroger ces données. Les résultats renvoyés sont ensuite utilisés par les nœuds clients pour configurer les machines concernées et les transformer à l'état souhaité.

Le serveur concentre toutes les opérations où les modifications doivent être stockées

Les serveurs gérés par Chef sont évalués de temps à autre par rapport à un état souhaité garantissant que tout changement de configuration est automatiquement corrigé et appliqué universellement. Avec cette approche, il existe une configuration cohérente à grande échelle.

Démarrer avec Chef

Vous pouvez télécharger le chef-workstation à partir de ce site et l'installer. Créez un dossier nommé livres de cuisine et dans ce dossier, exécutez la commande :

$ chef generate cookbook first_cookbook

Cela va générer un répertoire nommé first_cookbook avec quelques sous-dossiers et fichiers.

Naviguez vers les livres de cuisine/first_cookbook/recipes/ et mettez à jour la recette default.rb avec le contenu

file "test.txt" do

  content 'This is my first recipe file'

end

Nous exécutons ensuite ce fichier à l'aide de la commande

$ chef-client --local-mode --override-runlist first_cookbook.

OU, dans le dossier de la recette, vous pouvez exécuter le fichier avec la commande

$ chef-apply default.rb

Si vous accédez à votre dossier de recettes, vous verrez certainement le fichier test.txt avec le contenu Ceci est mon premier fichier de recette. C'est si facile. Dans la section suivante, nous allons créer des recettes pour effectuer certaines tâches spécifiques concernant MongoDB

Installer et configurer MongoDB avec Chef

Vous pouvez installer MongoDB en créant une recette d'installation MongoDBInstall.rb et en la remplissant avec le contenu

package "mongodb" do

 action :install

 version '4.0.3'

end

Dans ce cas, notre nom de package est mongodb et nous allons installer la version 4.0.3

Ce que nous avons est une recette de base mais dans de nombreux cas, nous aurons besoin d'un livre de recettes avancé pour faire notre configuration dans MongoDB. Pour faciliter la tâche, il existe des livres de recettes développés tels que SC-MongoDB qui rendent généralement la configuration précise.

Livre de recettes SC-MongoDB

Le livre de recettes fournit  mongodb_instance qui en améliore une pour configurer les paramètres MongoDB, un jeu de répliques et un cluster fragmenté.

Pour installer le livre de recettes, exécutez simplement la commande

$ knife supermarket download sc-mongodb

Vous pouvez ensuite utiliser les attributs définis dans ce site pour reconfigurer certains des attributs MongoDB par défaut.