Un cluster est un groupe de deux ou plusieurs serveurs indépendants fonctionnant comme un système unique. Un cluster de serveurs de base de données peut permettre l’obtention d’une solution avec haute disponibilité ou encore augmenter la performance I/O de votre service de base de données. Dans cet article, nous discutons des différentes approches pour la mise en cluster des bases de données MySQL et MSSQL.
MySQL DRBD
Le service de base de données MySQL peut être transformé en un service hautement disponible à l’aide de DRBD. Cette technologie logicielle, seulement disponible sous Linux, effectue la mise en miroir des données d’un service entre le nœud actif et le nœud passif d’un cluster hautement disponible. DRBD fonctionne avec des périphériques en mode bloc (ex.: partitions d’un disque dur, volumes logiques LVM). Chaque bloc de données écrit sur le nœud actif l’est également sur le nœud passif.La mise en miroir de données peut être effectuée de façon étroitement couplée selon le protocole C (mise en miroir synchrone). Dans ce mode, le système de fichier du nœud actif est averti que l’écriture du bloc est terminée uniquement lorsque le bloc a été écrit autant sur le nœud actif que le nœud passif. Il s’agit d’un bon choix pour une solution hautement disponible tout particulièrement si le fait de perdre ou de corrompre une transaction doit être évité à tout prix. L’autre mode possible est la mise en miroir asynchrone. Dans ce mode, le système de fichier du nœud actif est averti que l’écriture du bloc est terminée dès que le bloc a été écrit sur le nœud actif. Il s’agit d’un bon choix lors de la mise en place de nœuds séparés par une longue distance physique.
Le diagramme ci-dessous présente une solution web formée d’un cluster de serveurs web ainsi que d’un cluster DRBD de serveurs MySQL connectés via un réseau local. Les deux serveurs MySQL sont interconnectés par un lien réseau DRBD. Ce lien réseau est utilisé pour synchroniser les blocs de données entre les deux serveurs tout en évitant de congestionner le réseau local.
Réplication MySQL
Un cluster formé de deux serveurs MySQL ou plus peut également être créé à l’aide d’une solution redondante de répartiteurs de charge et des fonctionnalités de réplication du service MySQL.Réplication MySQL master/master
Un cluster MySQL avec réplication master/master est formé de deux serveurs MySQL en mode actif/actif. L’application de répartition de charge doit définir deux adresses IP distinctes :- Adresse IP pour les opérations d’écriture
- Adresse IP pour les opérations de lecture
Dans une telle configuration de réplication master/master, les deux serveurs sont sur un pied d’égalité. Si un serveur a une défaillance, le second prend le relai sans qu’il y ait besoin de modifier la configuration des serveurs web. Pour les opérations en écriture, une telle configuration fournit un niveau de performance égal à celui d’un seul serveur. Pour les opérations en lecture, la performance théorique d’une telle configuration est deux fois plus élevée que celle d’un seul serveur. Toutefois, pour obtenir des performances plus élevées lors des opérations de lecture, l’application web doit être codée de façon à distinguer les opérations en écriture des opérations en lecture.
Réplication MySQL master/slave
Un cluster MySQL avec réplication master/slave est formé de deux serveurs MySQL en mode actif/actif. L’application de répartition de charge doit définir deux adresses IP distinctes :- Adresse IP pour les opérations d’écriture
- Adresse IP pour les opérations de lecture
Dans une configuration de réplication master/slave, seul le serveur master est en mesure de gérer les opérations d’écriture. En cas de défaillance du serveur master, l’application web cessera de fonctionner normalement. Pour les opérations en lecture, une telle configuration offre un niveau de performance égal à celui d’un seul serveur. Pour les opérations en lecture, la performance théorique d’une telle configuration est deux fois plus élevée que celle d’un seul serveur. Toutefois, pour obtenir des performances plus élevées lors des opérations de lecture, l’application web doit être codée de façon à distinguer les opérations en écriture des opérations en lecture.
Jusqu’à présent, la comparaison des réplications master/master et master/slave indique qu’il n’y a aucun réel avantage à utiliser une réplication master/slave. Cependant, tandis que la réplication master/master s’effectue uniquement entre deux serveurs, la réplication master/slave peut être réalisée avec plusieurs serveurs dont un master et les autres en configuration slave. Par conséquent, une configuration master/slave devient intéressante lorsque le nombre de serveurs slave est supérieur à un.
Cluster MSSQL pour haute disponibilité
Un cluster Microsoft Windows est composé de deux serveurs en mode actif/passif, au moins un contrôleur de domaine et une solution de stockage de données. Le diagramme ci-dessous présente un cluster MSSQL formé de deux serveurs de base de données, deux contrôleurs de domaine redondants et d’une solution de stockage SAN iSCSI. Le SAN iSCSI est connecté aux serveurs de base de données avec des connexions multi-trajet afin de fournir des liens de communication redondants.- Processeur des serveurs de base de données
- Type et configuration RAID des disques du SAN
- Mécanisme de mise en cache des données du SAN
- Liens de communication entre les serveurs de base de données et le SAN
Réplication MSSQL
Un cluster formé de deux serveurs MSSQL ou plus peut également être réalisé en utilisant une solution de répartition de charge redondante et les fonctionnalités de réplication de MSSQL.Réplication MSSQL master/master
Un cluster utilisant la réplication MSSQL master/master consiste en deux serveurs MSSQL opérant en mode actif/actif. L’appareil de répartition de charge doit définir deux adresses IP distinctes :- Adresse IP pour les opérations d’écriture
- Adresse IP pour les opérations de lecture
Le mécanisme publication transactionnelle avec des abonnements qui peuvent être mis à jour ajoute une colonne nommée msrepl_tran_version sur chaque table publiée afin de suivre les transactions. Toutes les commandes SQL INSERT de votre application doivent potentiellement être adaptées à cette contrainte.
Dans une telle configuration de réplication master/master, les deux serveurs sont sur un pied d’égalité. Si un serveur a une défaillance, le second prend le relai sans qu’il y ait besoin de modifier la configuration des serveurs web. Pour les opérations en écriture, une telle configuration fournit un niveau de performance égal à celui d’un seul serveur. Pour les opérations en lecture, la performance théorique d’une telle configuration est deux fois plus élevée que celle d’un seul serveur. Toutefois, pour obtenir des performances plus élevées lors des opérations de lecture, l’application web doit être codée de façon à distinguer les opérations en écriture des opérations en lecture.
Réplication MSSQL master/slave
Un cluster MSSQL avec réplication master/slave est formé de deux serveurs MSSQL en mode actif/actif. L’application de répartition de charge doit définir deux adresses IP distinctes :- Adresse IP pour les opérations d’écriture
- Adresse IP pour les opérations de lecture
Dans une configuration de réplication master/slave, seul le serveur master est en mesure de gérer les opérations d’écriture. En cas de défaillance du serveur master, l’application web cessera de fonctionner normalement. Pour les opérations en lecture, une telle configuration offre un niveau de performance égal à celui d’un seul serveur. Pour les opérations en lecture, la performance théorique d’une telle configuration est deux fois plus élevée que celle d’un seul serveur. Toutefois, pour obtenir des performances plus élevées lors des opérations de lecture, l’application web doit être codée de façon à distinguer les opérations en écriture des opérations en lecture.
Jusqu’à présent, la comparaison des réplications master/master et master/slave indique qu’il n’y a aucun réel avantage à utiliser une réplication master/slave à l’exception de la nécessité d’utiliser des requêtes SQL INSERT modifiées en mode master/master. Cependant, tandis que la réplication master/master s’effectue uniquement entre deux serveurs, la réplication master/slave peut être réalisée avec plusieurs serveurs dont un master et les autres en configuration slave. Par conséquent, une configuration master/slave devient intéressante lorsque le nombre de serveurs slave est supérieur à un.
Aucun commentaire :
Enregistrer un commentaire