web-dev-qa-db-fra.com

Est-il logique d'exécuter un groupe de serveurs de base de données dans des conteneurs Docker?

Je cherche actuellement à mettre en place un cluster de base de données (MySQL Galera ou Percona), mais je n'ai que 2 machines.

Toutefois, selon de nombreuses sources que j'ai lues (ceci article du Mariadb KB), la taille minimale du nœud dans le cluster doit être 3, pour éviter les conditions cérébrales fendues.

Afin d'éviter une condition fractionnée du cerveau, le nombre minimum recommandé de nœuds dans un cluster est 3. Le transfert d'état de blocage est une autre raison de nécessiter un minimum de 3 nœuds afin de profiter de la disponibilité de services au cas où l'un des membres échoue et doit être redémarré. Alors que deux des membres seront engagés dans un transfert d'état, les membres restants pourront continuer à servir des demandes de clients.

Je me demande donc si je peux exécuter peut-être 3 (ou plus) des conteneurs Docker, chacun exécutant un serveur de base de données, sur les deux machines. Si l'une des machines échoue, il reste 3 nœuds dans le cluster, donc aucun problème cérébrale fractionné.

Il se sent comme tricher, mais je ne peux pas penser à une raison de ne pas le faire.

Cette configuration a-t-elle un sens?

5
patatepartie

Galera (pour MySQL, Percona Xtradb Cluster ou Cluster MariADB, ils sont essentiellement les mêmes mais de différents fournisseurs et la version de base MySQL) peuvent fonctionner parfaitement avec 2 machines et constitue une configuration très courante pour la remplacement de la réplication MySQL standard.

nécessitant 3 nœuds n'est pas une exigence de Galera, mais de tout cluster qui se soucie de la cohérence des données sur la disponibilité. En d'autres termes, il est nécessaire de faire Fournir une disponibilité et une intégrité de données dans le cas d'un seul noeud souffrant de partition de réseau (provoquant un " cerveau divisé " sur le cluster). Nous avons besoin d'un nombre impair de nœuds et 1 noeud n'est pas un cluster :-). Vous saviez probablement cela, mais je voulais clarifier cela pour que toutes les personnes lisent cette réponse.

Étant donné que la seule raison d'avoir 3 nœuds est de la disponibilité en cas de panne de nœud/panne de réseau, La manière recommandée de configurer un cluster à 2 nœuds avec la protection du réseau réseau est de configurer A Galera arbitre qui est essentiellement une émulation d'un nœud MySQL, mais sans stocker de données locales. Vous pouvez l'installer n'importe où, bien que vous devez faire attention, car sinon peut influencer la performance du cluster s'il possède des problèmes de latence de réseau.

Courir plusieurs instances sur le même nœud physique est inutile (Docker n'est pas nécessaire, à la manière, vous pouvez le faire en modifiant simplement la configuration locale), comme si vous ne pouvez absolument exécuter que sur 2 machines, vous ferez mieux de désactiver l'arrêt automatique. sur l'un des nœuds et gérer le basculement manuellement. La limitation est juste pour la cohérence des données, il n'y a rien de physique ou sur le protocole nécessitant un certain nombre de nœuds.

Vous pouvez lire plus d'informations sur le Documentation officielle .

4
jynus