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

Guide de déploiement et de maintenance de MongoDB à l'aide de Puppet : 1ère partie

La mise en cluster de bases de données implique souvent la configuration et la maintenance d'un certain nombre de serveurs et d'instances, tous dans un but collectif. Nous entendons par là que vous pouvez avoir différents serveurs de base de données sur différents hôtes qui servent les mêmes données.

Par exemple, supposons que vous ayez des serveurs A, B, C et D, vous décidez d'installer MongoDB sur chacun, mais réalisez plus tard qu'il existe une nouvelle version que vous auriez dû utiliser. Lorsque vous avez un grand nombre de serveurs et que vous devez mettre à jour la version de MongoDB, les configurer manuellement (un par un) présente de nombreux revers. Ces revers peuvent inclure; prendre trop de temps à reconfigurer (donc votre site aura un long temps d'arrêt) ou rendre votre base de données sujette à des erreurs de configuration.

De plus, il y a toujours des tâches répétitives que vous aimeriez exécuter automatiquement, au lieu de subir les mêmes étapes encore et encore, chaque fois que vous souhaitez effectuer des modifications similaires. À un moment donné, nous devons également apprendre de nouveaux modules en ce qui concerne les avancées technologiques qui peuvent nous aider à améliorer les performances du cluster

En termes simples, nous avons besoin d'un système d'automatisation qui peut faciliter toutes les entreprises mentionnées. Puppet est l'un des systèmes logiciels les plus appréciés pour y parvenir depuis :

  • Il est facile et plus rapide de configurer et de déployer le cluster MongoDB.
  • Les tâches répétitives peuvent être facilement automatisées de manière à être exécutées automatiquement plus tard.
  • L'intégralité de l'infrastructure du cluster peut être gérée collectivement à partir d'une seule plate-forme.
  • Provisionnement facile pour les nouveaux nœuds dans un environnement cloud, hybride ou physique
  • Orchestrer les modifications et les événements sur un cluster de nœuds
  • Découvrez des ressources en quelques minutes qui peuvent vous aider à effectuer différentes tâches facilement.
  • S'adapte bien de 1 à 200 000 nœuds
  • Compatible avec plusieurs plates-formes

Qu'est-ce que la marionnette ?

Puppet est un langage utilisé pour amener une machine à un état souhaité ou plutôt un moteur utilisé pour interpréter et appliquer certaines instructions définies à un système de service. Comme Ansible, Puppet est également un outil de gestion de configuration utilisé pour automatiser et exécuter des tâches de cluster de base de données. Cependant, il est plus avancé et bien établi étant donné qu'il s'agit du plus ancien, d'où de nombreuses fonctionnalités nouvellement intégrées qui le rendraient plus sophistiqué que les autres. L'une des principales raisons pour lesquelles je préfère personnellement Puppet est la capacité qu'il me donne de configurer un grand nombre de nœuds connectés avec des équilibreurs de charge, des périphériques réseau ou des pare-feu. Puppet est souvent utilisé dans les grandes entreprises avec des environnements complexes.

Fonctionnement de la marionnette

Puppet utilise la technique d'idempotence qui l'aide à gérer une certaine machine dès sa création et tout au long de son cycle de vie, même avec des changements de configuration. Le principal avantage est que la machine est mise à jour sur plusieurs années plutôt que d'être construite plusieurs fois à partir de zéro. En cas de mise à jour, Puppet vérifie l'état actuel de la machine cible et les modifications ne seront appliquées qu'en cas de modification spécifique de la configuration.

Idempotence

Le flux de travail d'idempotence est illustré ci-dessous :

Le maître Puppet collecte des détails concernant l'état actuel de la machine cible et les compare aux détails de configuration au niveau de la machine, puis renvoie les détails qui sont envoyés à la couche de conversion.

La couche de conversion compare la configuration récupérée avec les détails de configuration nouvellement définis, puis crée un catalogue qui est envoyé aux agents Puppet cibles, dans ce cas, les nœuds cibles pour lesquels les modifications doivent être appliquées.

Les changements de configuration sont ensuite appliqués au système pour le transformer en un état souhaité. Une fois les modifications mises en œuvre, l'agent Puppet renvoie un rapport au maître Puppet qui est documenté pour définir le nouvel état du système en tant que catalogue fourni.

Composants de base des marionnettes

  1. Ressources sur les marionnettes

    Ce sont les composants de modélisation clés d'une machine particulière dont les descriptions permettront à la machine d'atteindre l'état souhaité.

  2. Fournisseurs

    Les fournisseurs sont des ressources particulières utilisées pour ajouter des packages au système, par ex. miam et apt-get. Il existe des fournisseurs par défaut, mais vous pouvez en ajouter d'autres si vous avez besoin de certains packages.

  3. Manifeste

    Il s'agit d'un ensemble de ressources définies soit dans une fonction, soit dans une classe couplées ensemble pour configurer un système cible.

    La structure doit être

    resource:{‘module’:
    	attribute => value
    }

    Par exemple, en installant mongodb, nous pouvons avoir un fichier manifeste appelé Mongodb.pp avec le contenu suivant :

    package {‘mongodb’:
    		ensure => installed
         }
  4. Modules

    C'est l'élément clé de Puppet qui est essentiellement une collection de ressources, de modèles et de fichiers. Ils peuvent être distribués dans n'importe quel système d'exploitation et peuvent donc être utilisés plusieurs fois avec la même configuration.

  5. Modèles

    Les modèles sont utilisés pour définir un contenu personnalisé et une entrée variable. Ils utilisent la syntaxe Ruby, c'est à dire si vous souhaitez définir un port à écouter :

    Listen <% [email protected]_number %>

    Dans ce cas, la variable Port_number est définie dans le manifeste qui fait référence à ce modèle.

  6. Fichiers statiques

    Ce sont des fichiers généraux qui peuvent être nécessaires pour effectuer des tâches spécifiques. Ils se trouvent dans le répertoire des fichiers de n'importe quel module.

Installation de marionnettes

Dans le but d'apprendre, nous allons installer et configurer la marionnette dans une machine virtuelle que nous allons créer dans notre machine locale. Tout d'abord, vous devrez installer virtualbox et vagrant. Après l'installation, ouvrez un nouveau terminal et créez un répertoire Puppet probablement sur votre bureau et exécutez la commande $ vagrant init. Cela créera une machine virtuelle et l'appellera vagabond. Ensuite, nous pouvons nous connecter à cette machine avec la commande $ vagrant ssh.

Si vous obtenez un écran comme celui ci-dessous, votre machine est opérationnelle.

Sinon, si vous êtes sur une machine serveur, vous pouvez ignorer cette étape et procéder à l'ajout du package de marionnettes comme ci-dessous.

Ajoutez le package marionnette avec la commande

$ wget https://apt.puppetlabs.com/puppet5-release-xenial.deb

Et puis décompressez le paquet et installez-le avec

$ sudo dpkg -i puppet5-release-xenial.deb

Nous devons mettre à jour nos référentiels pour pouvoir exécuter

$ sudo apt-get update

Installez le puppet-agent en exécutant

$ sudo apt-get install puppet-agent

Une fois l'installation terminée, nous pouvons confirmer en vérifiant la version. Vous devrez peut-être vous déconnecter de votre machine virtuelle pour que le chemin Puppet soit ajouté à l'environnement, puis exécutez $ puppet --version ou si vous ne vous êtes pas déconnecté, exécutez $ /opt/puppetlabs/bin/puppet --version. Si vous obtenez un numéro de version comme 5.5.14, l'installation a réussi.

Après avoir installé MongoDB à l'aide de Mongodb.pp que nous avons créé ci-dessus, nous pouvons simplement écrire une tâche pour configurer un produit de base de données et également ajouter un utilisateur à cette base de données.

"Mongodb_database" est utilisé pour créer et gérer des bases de données dans MongoDB

mongodb_database{‘products’:
	ensure => present,
            tries => 10
}

‘Mongodb_user peut être utilisé pour créer et gérer des utilisateurs dans une base de données MongoDB.’

Pour ajouter un utilisateur à la base de données "produits"

mongodb_user {userprod:
  username => ‘prodUser’,
  ensure => present,
  password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
  database => prodUser,
  roles => [‘readWrite’, ‘dbAdmin’],
  tries  => 10
}

Conclusion

Dans ce blog, nous avons appris ce qu'est Puppet, les mérites qui lui sont associés et son architecture de travail. Puppet est un peu plus complexe que les autres outils de gestion (tels que Chef et Ansible), mais il contient de nombreux modules qui peuvent être utilisés pour résoudre les problèmes liés à la gestion de la base de données. Dans la partie suivante, nous allons discuter de la façon de connecter des machines distantes afin qu'elles puissent être reconfigurées à l'aide des fichiers manifestes définis.