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

Surveillance et gestion des opérations de MongoDB 4.0 avec ClusterControl

Bien que MongoDB ait passé près d'une décennie à atteindre sa maturité (version initiale en février 2009), la technologie est un peu un mystère pour ceux qui connaissent les environnements de bases de données relationnelles conventionnelles (RDBMS). L'intégration de NoSQL dans un environnement existant sans connaissances approfondies peut être difficile. Il n'est pas rare de voir MongoDB s'exécuter avec MySQL ou une autre base de données RDBMS.

L'expérience de RDBMS peut aider à comprendre certains des processus, mais vous devez savoir comment traduire votre expertise dans le monde NoSQL. La gestion des environnements de production implique des étapes telles que le déploiement, la surveillance de la disponibilité et des performances, le maintien de la sécurité du système, la gestion de la haute disponibilité, les sauvegardes, etc. RDBMS et NoSQL sont des options viables, mais il existe des différences critiques spécifiques entre les deux que les utilisateurs doivent garder à l'esprit lors de la mise en œuvre ou de la gestion de MongoDB. La technologie évolue rapidement et nous devons nous adapter rapidement.

Lorsque MongoDB est soudainement sous votre responsabilité, les outils de gestion garantissent que les bases de données MongoDB que vous gérez sont stables et sécurisées. L'utilisation de processus prédéfinis et l'automatisation peuvent non seulement vous faire gagner du temps, mais également vous protéger des erreurs courantes. Une plate-forme de gestion qui traite systématiquement tous les différents aspects du cycle de vie de la base de données sera plus robuste que le patching d'un certain nombre de solutions ponctuelles.

Au cœur de ClusterControl se trouve sa fonctionnalité d'automatisation qui vous permet d'automatiser les tâches de base de données que vous devez effectuer régulièrement, comme le déploiement de nouvelles bases de données, l'ajout et la mise à l'échelle de nouveaux nœuds, la gestion des sauvegardes, la haute disponibilité et le basculement, les changements de topologie, les mises à niveau, etc. ClusterControl fournit une sécurité programmée, préservant l'intégrité de votre infrastructure de base de données. De plus, avec ClusterControl, les utilisateurs de MongoDB ne sont plus soumis au verrouillage du fournisseur ; quelque chose qui a été remis en question par beaucoup récemment. Vous pouvez déployer et importer gratuitement une variété de versions et de fournisseurs de MongoDB à partir d'une seule console. Les utilisateurs de MongoDB doivent souvent utiliser un mélange d'outils et de scripts maison pour répondre à leurs besoins, et il est bon de savoir que vous pouvez les trouver combinés dans un seul produit.

Dans cet article, nous allons vous montrer comment déployer et gérer MongoDB 4.0 de manière automatisée. Vous trouverez ici comment faire :

  • Installation de ClusterControl
  • Processus de déploiement MongoDB
    • Déployer un nouveau cluster
    • Importer un cluster existant
  • Mettre à l'échelle MongoDB
    • Lire la mise à l'échelle (replicaSet)
    • Échelle d'écriture (sharding)
  • Sécuriser MongoDB
  • Surveillance et tendances
  • Sauvegarde et restauration

Installation de ClusterControl

Pour démarrer avec ClusterControl, vous avez besoin d'une machine virtuelle ou d'un hôte dédié. La configuration requise pour la machine virtuelle et les systèmes pris en charge est décrite ici. La machine virtuelle de base peut démarrer à partir de 2 Go, 2 cœurs et un espace disque de 20 Go d'espace de stockage, sur site ou dans le cloud.

L'installation est bien décrite dans la documentation mais en gros, il s'agit de télécharger le script d'installation qui vous guidera à travers l'assistant. Le script de l'assistant configure la base de données interne, installe les packages et les référentiels nécessaires et effectue les autres ajustements nécessaires. Pour les environnements de verrouillage Internet, vous pouvez utiliser le processus d'installation hors ligne.

ClusterControl nécessite un accès SSH aux hôtes de la base de données et la surveillance peut être basée sur un agent ou sans agent. La gestion est sans agent.

La configuration de SSH sans mot de passe sur tous les nœuds cibles (ClusterControl et tous les hôtes de base de données) implique l'exécution des commandes suivantes sur le serveur ClusterControl :

$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

Déploiement et mise à l'échelle de MongoDB

Déployer un nouveau cluster MongoDB 4.0

Une fois entré dans l'interface ClusterControl, la première chose à faire est de déployer un nouveau cluster ou d'en importer un existant. La nouvelle version 1.7.1 introduit la prise en charge de la version 4.0. Vous pouvez désormais déployer/importer et gérer MongoDB v4.0 avec prise en charge des connexions SSL.

Sélectionnez l'option "Déployer le cluster de bases de données" et suivez les instructions qui s'affichent.

ClusterControl Déployer le cluster de bases de données

Lors du choix de MongoDB, nous devons spécifier l'utilisateur, la clé ou le mot de passe et le port pour se connecter en SSH à nos serveurs. Nous avons également besoin du nom de notre nouveau cluster et si nous voulons que ClusterControl installe le logiciel et les configurations correspondants pour nous.

Après avoir configuré les informations d'accès SSH, nous devons entrer les données pour accéder à notre base de données. Nous pouvons également spécifier quel référentiel utiliser. La configuration du référentiel est un aspect important pour les serveurs de base de données et les clusters. Vous pouvez avoir trois types de référentiel lors du déploiement du serveur/cluster de base de données à l'aide de ClusterControl :

  • Utilisez le référentiel de fournisseurs
    Provisionnez le logiciel en configurant et en utilisant le référentiel de logiciels préféré du fournisseur de base de données. ClusterControl installera la dernière version de ce qui est fourni par le référentiel du fournisseur de base de données.
  • Ne configurez pas de référentiels de fournisseurs
    Provisionnez le logiciel en utilisant le référentiel de logiciels préexistant déjà configuré sur les nœuds. L'utilisateur doit configurer manuellement le référentiel de logiciels sur chaque nœud de base de données et ClusterControl utilisera ce référentiel pour le déploiement. C'est bien si les nœuds de la base de données fonctionnent sans connexion Internet.
  • Utiliser des référentiels en miroir (créer un nouveau référentiel)
    Créez et mettez en miroir le référentiel du fournisseur de base de données actuel, puis déployez-le à l'aide du référentiel en miroir local. Cela vous permet de "geler" les versions actuelles des packages logiciels.

Dans l'étape suivante, nous devons ajouter nos serveurs au cluster que nous allons créer. Lors de l'ajout de nos serveurs, nous pouvons entrer l'adresse IP ou le nom d'hôte. Pour ce dernier, nous devons disposer d'un serveur DNS ou avoir ajouté nos serveurs MongoDB au fichier de résolution local (/etc/hosts) de notre ClusterControl, afin qu'il puisse résoudre le nom correspondant que vous souhaitez ajouter. Pour notre exemple, nous allons déployer un ReplicaSet avec trois serveurs, un primaire et deux secondaires. Il est possible de déployer seulement 2 nœuds MongoDB (sans arbitre). La mise en garde de cette approche n'est pas un basculement automatique, car une configuration à 2 nœuds est vulnérable au cerveau divisé. Si le nœud principal tombe en panne, un basculement manuel est nécessaire pour faire de l'autre serveur le serveur principal. Le basculement automatique fonctionne bien avec 3 nœuds et plus. Il est recommandé qu'un jeu de répliques ait un nombre impair de membres votants. La tolérance aux pannes d'un jeu de réplicas correspond au nombre de membres qui peuvent devenir indisponibles tout en laissant suffisamment de membres dans le jeu pour élire un primaire. La tolérance aux pannes pour trois membres est de un, pour cinq, elle est de deux, etc.

Sur la même page, vous pouvez choisir parmi différentes versions de MongoDB :

ClusteControl Déployer MongoDB version 4.0

Lorsque tout est réglé, appuyez sur le bouton de déploiement. Vous pouvez surveiller l'état de la création de notre nouveau cluster à partir du moniteur d'activité ClusterControl. Une fois la tâche terminée, nous pouvons voir notre cluster dans l'écran principal de ClusterControl et dans la vue topologique.

Vue Topologie ClusterControl

Comme nous pouvons le voir sur l'image, une fois notre cluster créé, nous pouvons effectuer plusieurs tâches dessus, comme convertir un jeu de répliques en fragment ou ajouter des nœuds au cluster.

Mise à l'échelle de ClusterControl

Importer un nouveau cluster

Nous avons également la possibilité de gérer un cluster existant en l'important dans ClusterControl. Un tel environnement peut être créé par ClusterControl ou d'autres méthodes comme l'installation de docker.

ClusterControl importe MongoDB

Tout d'abord, nous devons entrer les informations d'identification d'accès SSH à nos serveurs. Ensuite, nous entrons les informations d'identification d'accès à notre base de données, le répertoire de données du serveur et la version. Nous ajoutons les nœuds par IP ou nom d'hôte, de la même manière que lors du déploiement, et appuyons sur Importer. Une fois la tâche terminée, nous sommes prêts à gérer notre cluster depuis ClusterControl.

Mise à l'échelle de MongoDB

L'une des pierres angulaires de MongoDB est qu'il est construit avec une haute disponibilité et une mise à l'échelle à l'esprit. La mise à l'échelle peut être effectuée soit verticalement en ajoutant plus de ressources au serveur, soit horizontalement avec plus de nœuds. La mise à l'échelle horizontale est ce à quoi MongoDB est bon, et ce n'est pas beaucoup plus que de répartir la charge de travail sur plusieurs machines. En effet, nous utilisons plusieurs boîtiers matériels de base à faible coût, plutôt que de passer à un serveur hautes performances plus coûteux. MongoDB offre à la fois une mise à l'échelle en lecture et en écriture, et nous découvrirons pour vous les différences entre ces deux stratégies. Que vous choisissiez la mise à l'échelle en lecture ou en écriture, tout dépend de la charge de travail de votre application :si votre application a tendance à lire plus souvent qu'elle n'écrit des données, vous souhaiterez probablement utiliser les capacités de mise à l'échelle en lecture de MongoDB.

Avec ClusterControl, ajouter plus de serveurs au cluster est une étape facile. Vous pouvez le faire à partir de l'interface graphique ou de la CLI. Pour les utilisateurs plus avancés, vous pouvez utiliser ClusterControl Developer Studio et écrire une condition de base de ressources pour étendre votre cluster horizontalement.

MongoDB ReplicaSet

Partage

La solution de partitionnement MongoDB est similaire aux frameworks de partitionnement existants pour d'autres solutions de base de données majeures. Il utilise une solution de recherche typique, où le sharding est défini dans une clé de shard et les plages sont stockées dans une base de données de configuration. MongoDB fonctionne avec trois composants pour trouver le bon fragment pour vos données. Un environnement MongoDB fragmenté typique ressemble à ceci :

Éclatement MongoDB

Le premier composant utilisé est le routeur de fragments appelé mongos. Toutes les opérations de lecture et d'écriture doivent être envoyées au routeur de fragments, ce qui fait que tous les fragments agissent comme une base de données unique pour l'application cliente. Le routeur de partitions acheminera les requêtes vers les partitions appropriées en consultant le serveur de configuration.

ClusterControl Convertir en fragment

La gestion des fragments est vraiment facile dans MongoDB. Vous pouvez ajouter et supprimer des fragments en ligne et le routeur de fragments MongoDB s'adaptera automatiquement à ce que vous lui dites. Si vous souhaitez en savoir plus sur la meilleure façon de gérer les fragments, veuillez lire notre article de blog sur la gestion des fragments MongoDB.

Sécuriser MongoDB

Ressources associées ClusterControl pour MongoDB Automatisation et gestion de MongoDB avec ClusterControl

MongoDB est livré avec très peu de sécurité :par exemple, l'authentification est désactivée par défaut. En d'autres termes :par défaut, n'importe qui a des droits root sur n'importe quelle base de données. L'un des changements appliqués par MongoDB pour atténuer les risques a été de changer sa liaison par défaut en 127.0.0.1. Cela l'empêche d'être lié à l'adresse IP externe, mais naturellement, cela sera annulé par la plupart des personnes qui l'installent. ClusterControl supprime les erreurs humaines et donne accès à une suite de fonctionnalités de sécurité, pour protéger automatiquement vos bases de données contre les piratages et autres menaces. Nous avons précédemment publié une courte vidéo avec des conseils de sécurité.

La nouvelle version de ClusterControl offre un support SSL pour les connexions MongoDB. L'activation de SSL ajoute un autre niveau de sécurité pour la communication entre les applications (y compris ClusterControl) et la base de données. Les clients MongoDB ouvrent des connexions chiffrées aux serveurs de base de données et vérifient l'identité de ces serveurs avant de transférer des informations sensibles.

Pour activer la connexion SSL, vous devez utiliser le dernier client s9s. Vous pouvez l'installer avec

wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
chmod 755 install-s9s-tools.sh
./install-s9s-tools.sh

Ou suivez les autres méthodes d'installation possibles décrites ici.

Une fois que vous avez installé les outils s9s (version minimale 1.7-93.1), vous pouvez utiliser l'indicateur --enable-ssl pour activer la connexion SSL.

Exemple ci-dessous :

[[email protected] ~]# s9s cluster --cluster-id=3 --enable-ssl --log
This is an RPC V2 job (a job created through RPC V2).
The job owner is 'admin'.
Accessing '/.runtime/jobs/jobExecutor' to execute...
Access ok.
Stopping the cluster
node1:27017: Node is already stopped by the user.
node2:27017: Node is already stopped by the user.
node3:27017: Node is already stopped by the user.
Checking/generating (expire 1000 days) server and CA certificate.
node1:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node1:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node1:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node1:/etc/mongod.conf'.
node1:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node2:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node2:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node2:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node2:/etc/mongod.conf'.
node2:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
node3:27017: setting up SSL as required way of connection.
Using certificate 'mongodb/cluster_3/server'
node3:27017: installed /etc/ssl/mongodb/cluster_3/server.crt, /etc/ssl/mongodb/cluster_3/server.key and /etc/ssl/mongodb/cluster_3/server_ca.crt
node3:27017: Deploying client certificate 'mongodb/cluster_3/client'
Writing file 'node3:/etc/mongod.conf'.
node3:27017: /etc/mongod.conf [mongod] set: ssl_cert, ssl_key and ssl_ca values.
Starting the cluster
node3:27017: Doing some preparation for starting the node.
node3:27017: Disable transparent huge page and its defrag according to mongo suggestions.
node3:27017: Checking file permissions and ownership.
node3:27017: Starting mongod MongoDb server with command:
ulimit -u 32000 -n 32000 &&  runuser -s /bin/bash mongod '-c mongod -f /etc/mongod.conf'
node3:27017: Verifing that 'mongod' process is started.
SSL setup done.

ClusterControl exécutera toutes les étapes nécessaires, y compris la création de la certification sur tous les nœuds du cluster. Ces certificats peuvent être conservés ultérieurement dans l'onglet Gestion des clés.

Gestion des clés ClusterControl

Surveillance

Lorsque vous travaillez avec des systèmes de bases de données, vous devez être en mesure de les surveiller. Cela vous permettra d'identifier les tendances, de planifier des mises à niveau ou des améliorations ou de réagir efficacement aux problèmes ou erreurs qui pourraient survenir.

Présentation de ClusterControl MongoDB

Le nouveau ClusterControl 1.7.1 ajoute une surveillance haute résolution pour MongoDB. Il utilise Prometheus comme magasin de données avec le langage de requête PromQL. La liste des tableaux de bord comprend les tableaux de bord MongoDB Server, MongoDB ReplicaSet, System Overview et Cluster Overview. ClusterControl installe les agents Prometheus, configure les métriques et maintient l'accès à la configuration des exportateurs Prometheus via son interface graphique, afin que vous puissiez mieux gérer la configuration des paramètres comme les indicateurs de collecteur pour les exportateurs (Prometheus). Nous avons décrit en détail ce qui peut être surveillé récemment dans l'article Comment surveiller MongoDB avec Prometheus &ClusterControl.

Tableaux de bord ClusterControl MongoDB SCUMM

Alerte

En tant qu'opérateur de base de données, nous devons être informés chaque fois que quelque chose de critique se produit sur notre base de données. Les trois principales méthodes de ClusterControl pour recevoir une alerte incluent :

  • notifications par e-mail
  • intégrations
  • conseillers

Vous pouvez définir les notifications par e-mail au niveau de l'utilisateur. Accédez à Paramètres> Notifications par e-mail. Où vous pouvez choisir entre la criticité et le type d'alerte à envoyer.

La méthode suivante consiste à utiliser les services d'intégration. Il s'agit de transmettre la catégorie spécifique d'événements à l'autre service comme les tickets ServiceNow, Slack, PagerDuty, etc. afin que vous puissiez créer des méthodes de notification avancées et des intégrations au sein de votre organisation.

Services d'intégration ClusterControl

Le dernier consiste à impliquer une analyse de métriques sophistiquée dans la section Advisor, où vous pouvez créer des contrôles et des déclencheurs intelligents. Un exemple ici pourrait être une prédiction de l'utilisation de l'espace disque ou une mise à l'échelle du cluster en ajoutant des nœuds lorsque la charge de travail atteint un niveau prédéfini.

Conseillers ClusterControl pour MongoDB

Sauvegarde et restauration

Maintenant que votre réplique MongoDB est configurée et en cours d'exécution et que votre surveillance est en place, il est temps de passer à l'étape suivante :assurez-vous d'avoir une sauvegarde de vos données.

ClusterControl Créer une politique de sauvegarde

ClusterControl fournit une interface pour la gestion des sauvegardes MongoDB avec prise en charge de la planification et des rapports créatifs. Il vous donne deux options pour les méthodes de sauvegarde.

  • Mongodump
  • Sauvegarde cohérente Mongodb

Mongodump vide toutes les données au format Binary JSON (BSON) à l'emplacement spécifié. Mongorestore peut ensuite utiliser les fichiers BSON pour restaurer votre base de données. La sauvegarde cohérente de ClusterControl MongoDB inclut les transactions de l'oplog qui s'exécutaient lors de la sauvegarde.

Cryptage de sauvegarde ClusterControl

Une bonne stratégie de sauvegarde est un élément essentiel de tout système de gestion de base de données. ClusterControl offre de nombreuses options pour les sauvegardes et la récupération/restauration.

ClusterControl Backup Schedule Control

La conservation des sauvegardes ClusterControl est configurable; vous pouvez choisir de conserver votre sauvegarde pendant n'importe quelle période ou de ne jamais supprimer les sauvegardes. Le cryptage AES256 est utilisé pour sécuriser vos sauvegardes contre les éléments malveillants. Pour une récupération rapide, les sauvegardes peuvent être restaurées directement dans le cluster de sauvegarde - ClusterControl gère le processus de restauration complet du lancement à la récupération du cluster, en supprimant les étapes manuelles sujettes aux erreurs du processus.