Concept de réplication de base de données
L'architecture
SKOOR Engine utilise une base de données PostgreSQL pour stocker ses données de configuration ainsi que ses valeurs historiques et ses données d'historique. Il supporte l'utilisation d'une configuration primaire/standby pour répliquer continuellement le contenu de la base de données. Les méthodes de réplication propres à PostgreSQL sont utilisées, ce qui signifie qu'une copie exacte de la base de données sur le serveur primaire est conservée sur le serveur de secours et que toutes les mises à jour de la base de données sur le serveur primaire sont répliquées immédiatement sur le serveur de secours. Le serveur primaire met en mémoire tampon les instructions SQL dans un journal binaire, le serveur de secours demande ces instructions au serveur.
Cette méthode garantit des temps d'arrêt courts en cas de défaillance du matériel. Cependant, il ne protège PAS contre les erreurs de pilotage telles que les déclarations de suppression erronées, qui seront synchronisées immédiatement avec le serveur de secours. La réplication ne remplace pas les sauvegardes régulières.
La figure suivante montre un exemple de schéma de réplication standard.
Dans le mode par défaut, le serveur primaire supporte toute la charge, toutes les demandes des utilisateurs sont traitées par le serveur web Apache sur le serveur primaire, les données de mesure sont livrées par les collecteurs au serveur primaire actuel et stockées dans la base de données. Les services eranger-server, eranger-collector et eranger-report ne fonctionnent PAS sur le serveur de secours.
Principales caractéristiques de la configuration de la réplication
La réplication peut être mise en œuvre même avec des collecteurs SKOOR externes.
Si une réplication a été effectuée précédemment, une grande partie des fichiers de la base de données sera probablement déjà synchronisée. Le script ne transfère PAS les anciennes tables qui sont déjà synchronisées. Cela permet d'économiser la bande passante du réseau si une réinitialisation doit être effectuée.
Il n'y a pas de basculement automatique du primaire vers le secondaire. Il a été conçu pour laisser cette décision à l'homme. Toutefois, le script prend en charge un mode non interactif qui permettrait à un script de prendre une décision de basculement. (option -f ).
Possibilité de surveiller le primaire à partir du standby (indépendamment de SKOOR) en envoyant un email dès qu'il détecte que l'Engine SKOOR ne fonctionne plus sur le primaire actuel.
Possibilité d'exécuter des scripts ou des commandes personnalisés avant et/ou après la commutation des fonctions du serveur (standby vers primaire et vice versa).
Exigences
Pour mettre en place la réplication de la base de données, un deuxième serveur SKOOR est nécessaire avec les mêmes spécifications de performance que le premier. Bien que ce serveur de secours soit en mode veille la plupart du temps, il doit être capable de supporter la totalité de la charge lorsque sa fonction passe de veille à primaire.
Les conditions suivantes doivent être remplies :
La même version de SKOOR est installée sur le primaire et le standby.
(Facultatif) les collecteurs externes sont configurés correctement et fonctionnent.
Le paramètre server<n>_address doit être défini sur la même IP que le serveur primaire
Les collecteurs utilisant le protocole HTTP ne peuvent pas être commutés automatiquement.
Le fichier /opt/eranger/bin/eranger-server-replication.pl est identique sur le serveur primaire, le serveur de secours et tous les collecteurs. Cela signifie que tous les hôtes concernés doivent avoir la même version de SKOOR installée.
Le fichier /etc/opt/eranger/eranger-replication.cfg est configuré correctement et est identique sur le collecteur primaire, le collecteur de secours et tous les collecteurs.
Connectivité réseau
Port TCP 22 (ssh) du primaire vers le standby, vice versa et du primaire et du standby vers tous les collecteurs externes.
Port TCP 50001 (livraison des données du collecteur SKOOR) de tous les collecteurs externes vers le collecteur primaire et le collecteur en attente.