MariaDB Server offre une réplication asynchrone et synchrone. Il peut être configuré pour avoir une réplication multi-sources ou avec une configuration multi-maître.
Pour une application intensive en lecture et en écriture, une configuration maître-esclave est courante, mais peut différer en fonction de la pile sous-jacente nécessaire pour créer un environnement de base de données hautement disponible.
Avoir une configuration de réplication maître-esclave peut ne pas répondre à vos besoins, en particulier dans un environnement de production. Un serveur MariaDB seul (configuration maître-esclave) n'est pas suffisant pour offrir une haute disponibilité car il a toujours un point de défaillance unique (SPOF).
MariaDB a introduit un produit d'entreprise (MariaDB Platform) pour résoudre ce problème de haute disponibilité. Il comprend divers composants :une version entreprise de MariaDB, MariaDB ColumnStore, MaxScale et des connecteurs MariaDB légers. Comparé à d'autres fournisseurs proposant la même offre de solutions d'entreprise, cela pourrait être une option rentable, mais tout le monde n'a pas besoin de ce niveau de complexité.
Dans ce blog, nous vous montrerons comment utiliser MariaDB Server en utilisant la réplication sur un environnement hautement disponible avec la possibilité de choisir entre l'utilisation de tous les outils gratuits ou notre logiciel de gestion économique pour exécuter et surveiller votre infrastructure MariaDB Server.
Configuration de la topologie haute disponibilité MariaDB
Une configuration habituelle pour une topologie maître-esclave avec MariaDB Server utilise une approche asynchrone ou synchrone avec un seul maître recevant les écritures, puis réplique ses modifications sur les esclaves comme dans le schéma ci-dessous :
Mais là encore, cela ne sert aucune haute disponibilité et a un point de défaillance unique. Si le maître meurt, votre client d'application ne fonctionne plus. Maintenant, nous devons ajouter dans la pile pour avoir un mécanisme de basculement automatique pour éviter le SPOF et offre également un équilibrage de charge pour diviser les lectures-écritures et de manière circulaire. Donc pour l'instant, nous allons finir par avoir le type de topologie,
Maintenant, cette topologie sert plus de sécurité en termes de SPOF. MaxScale effectuera le fractionnement en lecture et en écriture sur les nœuds de base de données de votre maître contre les esclaves. MaxScale adopte une approche parfaite lorsqu'il s'agit de ce type de configuration. MaxScale a également une détection automatique intégrée. Ainsi, quels que soient les changements survenus dans l'état de vos nœuds de base de données, il les détectera et agira en conséquence. MaxScale a la disponibilité pour procéder à un basculement ou même à un basculement. Pour en savoir plus sur son mécanisme de basculement, lisez notre précédent blog qui aborde le mécanisme de basculement de MariaDB MaxScale.
Notez que le mécanisme de basculement MaxScale avec MariaDB Monitor a également ses limites. Il est préférable de l'appliquer uniquement pour une configuration maître-esclave sans configuration trop compliquée. Cela signifie qu'une configuration maître-maître n'est pas prise en charge. Cependant, MaxScale a plus de choses à offrir. Il ne fait pas seulement un certain équilibrage de charge lorsqu'il effectue des divisions en lecture-écriture, il a un SmartRouter intégré qui envoie la requête au nœud le plus performant. Bien que cela n'ajoute pas la fonctionnalité d'être hautement disponible, cela aide les nœuds à ne pas rester bloqués dans le trafic et à éviter que certains nœuds de base de données ne soient sous-performants, ce qui peut entraîner des délais d'attente ou un serveur totalement indisponible en raison d'une activité intensive en ressources. .
Une chose comme mise en garde concernant l'utilisation de MaxScale, ils utilisent BSL (Business Source LIcense). Vous devrez peut-être consulter la FAQ avant d'adopter ce logiciel.
Une autre option à choisir consiste à utiliser une approche plus pratique. Il peut être rentable pour vous de choisir d'utiliser ClusterControl et d'avoir des proxys au milieu en utilisant HaProxy, MaxScale ou ProxySQL, pour lequel ce dernier peut être configuré pour passer d'une configuration légère à une configuration plus au niveau de la production qui effectue le routage des requêtes, filtrage des requêtes, pare-feu ou sécurité. Voir l'illustration ci-dessous :
Maintenant, assis au-dessus d'eux se trouve le ClusterControl. ClusterControl est configuré avec une haute disponibilité, c'est-à-dire CMON HA. Alternativement, la couche proxy peut être choisie parmi HaProxy - une option très légère à choisir, MaxScale, comme mentionné précédemment, ou ProxySQL qui a un ensemble de paramètres plus raffiné si vous voulez plus de flexibilité et une configuration idéale pour une grande échelle montage de fabrication. ClusterControl gérera l'auto-détection en termes d'état de santé des nœuds, en particulier le maître qui est le nœud principal pour déterminer s'il nécessite un basculement ou non. Maintenant, cela peut être plus autonome, mais cela augmente les coûts en raison du nombre de nœuds requis pour implémenter cette configuration et également en utilisant le basculement automatique ClusterControl qui s'applique à notre licence avancée et entreprise. Mais d'un autre côté, il vous offre toute la sécurité, la sécurité et l'observabilité de votre infrastructure de base de données. Il s'agit en fait davantage d'une mise en œuvre d'entreprise à faible coût par rapport aux solutions disponibles sur le marché mondial.
Déploiement de votre réplication maître-esclave MariaDB pour une haute disponibilité
Supposons que vous avez une configuration maître-esclave existante de MariaDB. Pour cet exemple, nous utiliserons ClusterControl en utilisant l'édition communautaire gratuite que vous pouvez installer et utiliser gratuitement. Cela rend simplement votre travail facile et rapide à mettre en place. Pour ce faire, il vous suffit d'importer votre cluster MariaDB Replication existant. Consultez notre blog précédent sur la façon de gérer MariaDB avec ClusterControl. Pour ce blog, j'ai initialement la configuration suivante en tant que cluster de réplication MariaDB, comme indiqué ci-dessous :
Maintenant, utilisons MaxScale ici comme solution alternative de MariaDB Platform qui offre une haute disponibilité. Pour ce faire, il est très facile à utiliser avec ClusterControl en quelques clics, vous pouvez ensuite configurer votre MaxScale qui s'exécute au-dessus de votre cluster MariaDB Replication existant. Pour ce faire, accédez simplement à Gérer → Équilibreur de charge → MaxScale, et vous pourrez configurer et fournir les valeurs appropriées comme indiqué ci-dessous,
Ensuite, activez ou cliquez sur la case à cocher pour sélectionner les serveurs à ajouté dans le cadre de votre surveillance MaxScale. Voir ci-dessous,
En supposant que vous avez plusieurs nœuds MaxScale à ajouter, répétez simplement la mêmes étapes.
Enfin, nous allons configurer Keepalived pour que nos nœuds MaxScale restent toujours disponibles chaque fois que nécessaire. C'est très rapide avec des étapes simples à l'aide de ClusterControl. Encore une fois, vous devez aller dans Gérer → Load Balancer mais à la place, sélectionnez Keepalived,
Comme vous l'avez remarqué, j'ai placé mon Keepalived avec MaxScale sur le même nœud de mon esclave (192.168.10.30). Alors que, d'autre part, le deuxième (2e) Keepalived s'exécute sur 192.168.10.40 avec Maxscale sur le même hôte.
Le résultat de la topologie est prêt pour la production, ce qui peut vous fournir un routage des requêtes, une haute disponibilité et un basculement automatique équipé d'une surveillance et d'une observabilité étendues à l'aide de ClusterControl. Voir ci-dessous,
Conclusion
L'utilisation de la réplication MariaDB Server seule ne vous offre pas une haute disponibilité. L'extension et l'utilisation d'outils tiers vous permettront d'avoir votre pile de base de données hautement disponible en vous appuyant non seulement sur les produits MariaDB ou même en utilisant la plate-forme MariaDB.
Il existe des moyens d'y parvenir et de le gérer pour être plus rentable. Pourtant, il y a une énorme différence à se prévaloir de ces solutions disponibles sur le marché telles que ClusterControl car elles vous offrent rapidité, moins de tracas et, bien sûr, l'observabilité ultime avec des événements en temps réel et à jour, non seulement la santé mais aussi les événements se produisant dans votre cluster de base de données.