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

Comment déployer MongoDB pour une haute disponibilité

Présentation

MongoDB offre un excellent support pour la haute disponibilité via ReplicaSets. Cependant, le déploiement d'un ReplicaSet n'est pas suffisant pour un système prêt pour la production. Ce dernier nécessite un peu de planification. Le déploiement n'est que la première étape, nous devons ensuite doter les équipes opérationnelles de surveillance, d'alerte, de sécurité, de détection d'anomalies ou de pannes, de récupération/basculement automatique, de gestion des sauvegardes et d'autres outils pour maintenir l'environnement opérationnel.

Prérequis

Avant de pouvoir commencer votre déploiement MongoDB avec ClusterControl, certaines préparations sont nécessaires. Les plates-formes prises en charge sont RedHat/CentOS 6.x/7.x, Ubuntu 12.04/14.04/16.04 LTS et Debian 7.x/8.x. Les ressources minimales requises pour le système d'exploitation sont de 2 Go de RAM, 2 CPU et 20 Go d'espace disque fonctionnant sur x86. architecture. ClusterControl lui-même peut s'exécuter sur des VM standard ou des hôtes barebone exécutés sur site, derrière un pare-feu ou sur des VM cloud.

De plus, ClusterControl nécessite que les ports utilisés par les services suivants soient ouverts/activés :
ICMP (réponse/demande d'écho)
SSH (la valeur par défaut est 22)
HTTP (la valeur par défaut est 80)
HTTPS (la valeur par défaut est 443)
MySQL (la valeur par défaut est 3306) (base de données interne)
CMON RPC (la valeur par défaut est 9500)
CMON RPC TLS (la valeur par défaut est 9501)
Événements CMON (la valeur par défaut est 9510)
CMON SSH (la valeur par défaut est 9511)
CMON Cloud (la valeur par défaut est 9518)

Port de streaming pour les sauvegardes via netcat (la valeur par défaut est 9999)

Le moyen le plus simple et le plus pratique d'installer ClusterControl est d'utiliser le script d'installation fourni par Manynines. Téléchargez simplement le script et exécutez-le en tant qu'utilisateur root ou utilisateur avec l'autorisation sudo root. Si vous avez besoin d'une approche plus manuelle, par exemple si vos serveurs sont entièrement sans accès à Internet, vous pouvez suivre les instructions fournies dans la documentation de ClusterControl.

$ wget http://www.severalnines.com/downloads/cmon/install-cc 
$ chmod +x install-cc
$ ./install-cc   # as root or sudo user

Suivez l'assistant d'installation où vous serez guidé pour configurer un serveur de base de données interne ClusterControl et ses informations d'identification, le mot de passe cmon pour l'utilisation de ClusterControl, etc. Vous devriez obtenir la ligne suivante une fois l'installation terminée :

Determining network interfaces. This may take a couple of minutes. Do NOT press any key.
Public/external IP => http://{public_IP}/clustercontrol
Installation successful. 

L'étape suivante consiste à générer une clé SSH que nous utiliserons pour configurer ultérieurement le SSH sans mot de passe. Si vous avez une paire de clés que vous souhaitez utiliser, vous pouvez ignorer la création d'une nouvelle.

Vous pouvez utiliser n'importe quel utilisateur du système, mais il doit avoir la capacité d'effectuer des opérations de super-utilisateur (sudoer). Dans cet exemple, nous avons choisi l'utilisateur root :

$ whoami
root
$ ssh-keygen -t rsa #generates ssh key

Configurez SSH sans mot de passe pour tous les nœuds que vous souhaitez surveiller/gérer via ClusterControl. Dans ce cas, nous allons le configurer sur tous les nœuds de la pile (y compris le nœud ClusterControl lui-même). Sur le nœud ClusterControl, exécutez les commandes suivantes pour copier les clés ssh et spécifiez le mot de passe root lorsque vous y êtes invité :

ssh-copy-id [email protected] # clustercontrol
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
...

Vous pouvez ensuite vérifier si cela fonctionne en exécutant la commande suivante sur le nœud ClusterControl :

$ ssh [email protected] "ls /root"

Assurez-vous de pouvoir voir le résultat de la commande ci-dessus sans avoir à saisir de mot de passe.
Une fois l'installation terminée, vous devriez pouvoir vous connecter à l'interface Web via

https://<your_vm_name>/clustercontrol/#

Après la première connexion, vous verrez une fenêtre avec des options pour commencer votre premier déploiement ou importer un cluster existant.

ClusterControl Déployer et importer un cluster existant

Configurer les référentiels

Avant de commencer le déploiement, examinons le système de gestion des packages. Le processus de déploiement de ClusterControl prend en charge l'ensemble du processus d'installation du cluster. Cela inclut les ajustements du système d'exploitation et le téléchargement et l'installation du package. Si vos nœuds de base de données ont un accès limité à Internet et que vous ne pouvez pas télécharger de packages directement à partir du nœud, vous pouvez créer un référentiel de packages directement sur l'hôte ClusterControl.

Référentiel de packages ClusterControl

Il existe trois façons de gérer les packages MongoDB dans ClusterControl.

Utiliser les référentiels de fournisseurs

Installez 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 stocké par le référentiel MongoDB.

Ne configurez pas de référentiels de fournisseurs

Installez le logiciel en utilisant le référentiel de logiciels préexistant déjà configuré sur le système d'exploitation. 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 du package. C'est une bonne chose si les nœuds de la base de données fonctionnent sans connexion Internet et que votre entreprise dispose d'un système de packages externes avec des packages MongoDB en place.

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 actuel, puis déployez-le à l'aide du référentiel miroir local. Il vous permet également de "geler" les versions récentes des packages logiciels utilisés pour provisionner un cluster de bases de données pour un fournisseur spécifique (c'est-à-dire, n'utiliser que des packages Percona).

ClusterControl automatise la création d'un référentiel de packages interne

Déployer ReplicaSet

ClusterControl prend en charge MongoDB/Percona Server pour MongoDB 3.x ReplicaSet. Pour commencer le déploiement du nouveau cluster, accédez à l'option de déploiement dans le coin supérieur droit. Lorsque vous installez vos nœuds de base de données, utilisez toujours des machines virtuelles propres et minimales. Les dépendances de package existantes peuvent être supprimées si nécessaire. De nouveaux packages seront installés et les packages existants peuvent être supprimés lors du provisionnement du nœud avec le logiciel requis.

La toute première étape du processus de déploiement consiste à fournir les informations d'identification ssh appropriées aux hôtes sur lesquels vous déployez votre cluster. Comme ClusterControl utilise ssh sans mot de passe pour se connecter et configurer vos hôtes, une clé ssh est requise.

ClusterControl déploie l'assistant de cluster MongoDB

Il est conseillé d'utiliser un compte utilisateur non privilégié pour se connecter aux hôtes, ainsi un mot de passe sudo peut être fourni pour faciliter les tâches administratives. Si le compte d'utilisateur ne demande pas de mot de passe sudo, cela n'est pas nécessaire. Vous avez également la possibilité de désactiver iptables et AppArmor ou SELinux sur l'hôte pour éviter le problème avec le déploiement initial.

Sur l'écran suivant, vous pouvez choisir d'installer les binaires MongoDB à partir de MongoDB Inc ou de Percona. Ici également, vous devez spécifier votre compte d'utilisateur administrateur MongoDB et votre mot de passe car la sécurité au niveau de l'utilisateur est obligatoire.

ClusterControl déploie l'assistant MongoDB, ReplicaSet

Sur cet écran, vous pouvez également voir quel modèle de configuration est utilisé. ClusterControl utilise des modèles de fichiers de configuration pour garantir des déploiements reproductibles. Les modèles sont stockés sur l'hôte ClusterControl et peuvent être modifiés directement à l'aide de la ligne de commande ou via l'interface utilisateur ClusterControl. Vous pouvez également choisir d'utiliser les référentiels des fournisseurs, si vous le souhaitez, ou choisir votre propre référentiel. De plus, vous pouvez créer automatiquement un nouveau référentiel sur l'hôte ClusterControl. Cela permet de geler la version de MongoDB que ClusterControl déploiera dans la version actuelle. Une fois que vous avez effectué la configuration appropriée ici, cliquez sur Déployer pour continuer.

Déployer le partitionnement

ClusterControl peut également déployer des clusters partagés. Deux méthodes pour ce faire sont prises en charge. Tout d'abord, vous pouvez convertir un MongoDB ReplicaSet existant en un cluster partagé, comme indiqué ci-dessous.

ClusterControl Déployer des fragments MongoDB

Lorsque vous cliquez sur "Convertir en fragment", vous êtes invité à ajouter au moins un serveur de configuration (pour les environnements de production, vous devez en ajouter trois) et un routeur, également appelé processus "mongos". La dernière étape consiste à choisir vos modèles de configuration MongoDB pour le serveur de configuration et le routeur, ainsi que votre répertoire de données. Enfin, cliquez sur déployer. Une fois terminé, il apparaîtra dans votre vue Clusters de bases de données. Il montrera la santé de votre fragment au lieu d'instances individuelles. Il est également possible d'ajouter des fragments supplémentaires au besoin.

Convertir en fragment

Si vous rencontrez des problèmes de mise à l'échelle, vous pouvez mettre à l'échelle ce ReplicaSet en ajoutant d'autres secondaires ou en effectuant une mise à l'échelle par partitionnement. Vous pouvez convertir un ReplicaSet existant en un cluster fragmenté, mais il s'agit d'un long processus où vous pourriez facilement faire des erreurs. Dans ClusterControl, nous avons automatisé ce processus, où nous ajoutons automatiquement les serveurs de configuration, les routeurs de partitionnement et activons le partitionnement.

Pour convertir un ReplicaSet en cluster fragmenté, vous pouvez simplement le déclencher via le menu déroulant des actions :

ClusterControl Convertir en fragment

Politique de sauvegarde planifiée

Il est essentiel de conserver la sauvegarde de votre base de données et que votre base de données dispose d'un processus de sauvegarde simple et efficace. ClusterControl prend en charge la sauvegarde et les restaurations entièrement cohérentes de votre jeu de réplicas MongoDB ou de votre cluster fragmenté.

Les sauvegardes peuvent être effectuées manuellement ou peuvent être programmées. La centralisation des sauvegardes est prise en charge, avec des sauvegardes stockées soit sur le système de fichiers du contrôleur, y compris des répertoires montés sur le réseau, soit téléchargées vers un fournisseur de cloud préconfiguré - les fournisseurs actuellement pris en charge sont Google Cloud Platform, Amazon Web Services et Microsoft Azure. Cela vous permet de tirer pleinement parti des fonctionnalités avancées de gestion du cycle de vie fournies par Amazon et Google pour des fonctionnalités telles que les calendriers de conservation personnalisés, l'archivage à long terme et le chiffrement au repos, entre autres.

La conservation des sauvegardes 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.

Activer les rapports opérationnels

Avec ClusterControl, vous pouvez planifier des rapports inter-environnements tels que "Daily System Report", "Package Upgrade Report", "Schema Change Report" ainsi que "Backups" et "Disponibilité". Ces rapports vous aideront à maintenir votre environnement sécurisé et opérationnel. Vous verrez également des recommandations sur la façon de corriger les lacunes. Les rapports au format HTML peuvent être envoyés par e-mail aux SysOps, DevOps ou même aux responsables qui souhaitent obtenir des mises à jour régulières sur l'état d'un système donné.

Conseillers aux performances

Les conseillers fournissent des conseils spécifiques sur la manière de résoudre les problèmes dans des domaines tels que les performances, la sécurité, la gestion des journaux, la configuration, l'espace de stockage, etc. ClusterControl est livré avec une liste de conseillers prédéfinis destinés à suivre l'état de différentes métriques et l'état de vos bases de données. En cas de besoin, une alerte est créée. Elles peuvent être complétées par des scripts manuels. Pour plus d'informations, veuillez suivre notre blog récent sur "Comment automatiser l'analyse de la charge de travail de la base de données avec ClusterControl Performance Advisors".

Parmi les différents conseillers en performances du système d'exploitation, vous pouvez trouver ci-dessous concernant MongoDB.

MongoDB conseillers de partitionnement
connexions utilisées
vérification de la réplication
fenêtre de réplication

Déployer dans le cloud

À partir de la version 1.6, ClusterControl vous permet de créer un ReplicaSet MongoDB 3.4 dans le cloud. Les plateformes cloud prises en charge sont Amazon AWS, Google Cloud et Microsoft Azure.

L'assistant vous guidera tout au long de la création de la machine virtuelle et des paramètres MongoDB, le tout au même endroit.

ClusterControl déploie MongoDB ReplicaSet dans le cloud

Le processus vous permet de choisir les paramètres du système d'exploitation, y compris la configuration du réseau. Il n'est pas nécessaire de copier les clés SSH, elles seront ajoutées automatiquement. Une fois le travail terminé, vous verrez votre cluster dans le tableau de bord principal. Désormais, vous pouvez gérer votre cluster MongoDB comme n'importe quel autre dans ClusterControl.

ClusterControl déploie MongoDb RelicaSet dans le cloud, paramètres réseau VM

Conseils de sécurité

À ce stade, votre nouveau cluster devrait être opérationnel. Avant d'autoriser les utilisateurs et les processus d'application à accéder aux données, vous devez définir les paramètres de sécurité du cluster. Dans nos blogs précédents, nous avons soulevé des inquiétudes concernant la configuration de sécurité par défaut. Voici quelques-uns des principaux éléments à prendre en compte avant de transmettre votre nouveau cluster à d'autres équipes.

Modifier les ports par défaut - par défaut, MongoDB se liera aux ports standard :27017 pour les ReplicaSets MongoDB ou les routeurs de fragments, 27018 pour les fragments et 27019 pour les serveurs de configuration. L'utilisation de ports standard n'est pas recommandée car cela simplifie la possibilité d'une attaque de pirate.

Activer l'authentification - sans authentification, les utilisateurs peuvent se connecter sans mot de passe. Activez l'authentification sur tous vos environnements (développement, certification et production).

security:
    Authentication: on

Utilisez des mots de passe forts - si besoin, utilisez un générateur de mots de passe pour générer des mots de passe complexes.

Ajouter un fichier de clé de réplication - avec le fichier clé activé, l'authentification du flux de réplication sera cryptée.

Crypter vos sauvegardes - ClusterControl vous permet de chiffrer vos sauvegardes.

Pour en savoir plus, nous avons un blog sur la façon de sécuriser MongoDB.

Activer la récupération automatique du cluster

La dernière fonctionnalité à activer serait la récupération automatique des nœuds et des clusters.

ClusterControl peut travailler pour vous en tant que membre de l'équipe DBA étendue 24h/24 et 7j/7. Il y a deux fonctions principales ici. Récupération automatique des nœuds et récupération automatique des clusters.

Lorsque la récupération automatique des nœuds est activée, ClusterControl réagit aux problèmes de nœud et en cas d'échec, il tente de récupérer des nœuds individuels. Il s'agit de résoudre des problèmes tels qu'un processus qui exécute de la mémoire ou un service qui nécessite un démarrage après une panne de courant, quelle que soit la cause d'un problème avec le service en panne.

L'option de récupération de cluster est encore plus sophistiquée. Il effectuera un basculement si nécessaire.

Dans ce cas, l'annulation de toutes les modifications qui ne sont pas répliquées sur les esclaves sera placée dans un dossier "rollback", il appartient donc à l'administrateur de le restaurer.

Pour configurer la récupération automatique des nœuds et des clusters, il vous suffit de les activer dans le tableau de bord principal.