Cluster KVM sans stockage partagé sur un SAN
[SafeKit] Réplication temps réel synchrone, haute disponibilité et migration de machines virtuelles entre deux serveurs
La solution apportée à KVM
Evidian SafeKit apporte la haute disponibilité à KVM entre deux serveurs de n'importe quelle marque.
Cet article explique comment mettre en œuvre rapidement un cluster KVM sans stockage partagé sur un SAN et sans compétences spécifiques.
Le principe de la solution est de mettre une application critique dans une machine virtuelle sous KVM. SafeKit implémente la réplication en temps réel et le basculement automatique de la machine virtuelle.
A noter que KVM est l'hyperviseur gratuit inclus dans toutes les versions de Linux.
Une solution ouverte à plusieurs applications
Plusieurs applications peuvent être mises dans plusieurs machines virtuelles répliquées et redémarrées par SafeKit. Vous avez la possibilité de migrer chaque machine virtuelle entre les deux serveurs avec la console SafeKit et ainsi d'équilibrer la charge dans un cluster actif-actif.
Économisez des coûts avec cette solution
Il n'y a pas besoin d'une solution complexe de type VMware avec trois serveurs et un stockage partagé sur un SAN ou vSAN. Avec SafeKit, vous disposerez à la place d'une réplication synchrone en temps réel et d'un basculement de plusieurs machines virtuelles entre deux serveurs.
Et avec l'interface graphique standard virt-manager, vous pourrez gérer très simplement vos machines virtuelles.
Notez que vous pouvez implémenter avec le produit SafeKit la réplication et le basculement en temps réel de n'importe quel répertoire de fichiers et service, base de données, machines virtuelles Hyper-V ou KVM complètes, Docker, Podman, K3S, applications Cloud (voir la liste des modules).
Partenaires, le succès avec SafeKit
Cette solution indépendante de la plateforme est idéale pour un partenaire revendant une application critique et qui souhaite proposer une option de redondance et de haute disponibilité simple à déployer auprès de nombreux clients.
Avec de nombreuses références dans de nombreux pays gagnées par des partenaires, SafeKit s'est avéré être la solution la plus simple à mettre en œuvre pour la redondance et la haute disponibilité des logiciels de gestion des bâtiments, vidéosurveillance, contrôle d'accès, systèmes SCADA...
Comment fonctionne un cluster miroir avec KVM ?
Les étapes suivantes sont décrites pour une seule machine virtuelle (VM) dans un seul module miroir. Chaque machine virtuelle répliquée s'exécute dans un module miroir indépendant (dans une limite de 32 VMs) avec un serveur primaire qui peut être soit le serveur KVM 1 ou le serveur KVM 2.
Etape 1. Réplication temps réel
Le serveur 1 (PRIM) exécute une VM (machine virtuelle). SafeKit réplique en temps réel les fichiers de la VM (disques durs virtuels, configuration de la VM). Seules les modifications faites à l'intérieur des fichiers sont répliquées en continue à travers le réseau.
La réplication est synchrone sans perte de données en cas de panne contrairement à une réplication asynchrone.
Il vous suffit de configurer le nom du répertoire contenant la VM dans SafeKit. Il n'y a pas de pré-requis sur l'organisation du disque. Le répertoire peut se trouver sur le disque système.
Etape 2. Basculement automatique
Lorsque le serveur 1 tombe en panne, le serveur 2 prend le relais. SafeKit redémarre la VM sur le serveur 2. KVM trouve les fichiers répliqués par SafeKit à jour sur le serveur 2.
La VM continue de s'exécuter sur le serveur 2 en modifiant localement ses fichiers qui ne sont plus répliqués sur le serveur 1.
Le temps de basculement est égal au temps de détection de la panne (fixé à 30 secondes par défaut) plus le temps de redémarrage de la VM.
Etape 4. Retour à la normale
Après la réintégration, les fichiers de la VM sont à nouveau en mode miroir, comme à l'étape 1. Le système est de nouveau en mode haute disponibilité, la VM s'exécutant sur le serveur 2 et SafeKit répliquant les mises à jour sur le serveur 1.
Si l'administrateur souhaite que son application s'exécute en priorité sur le serveur 1, il peut exécuter une commande de basculement, soit manuellement à un moment opportun, soit automatiquement par configuration.
Redondance au niveau de l'application
Dans ce type de solution, seules les données applicatives sont répliquées. Et seule l'application est redémarrée en cas de panne.
Avec cette solution, des scripts de redémarrage doivent être écrits pour redémarrer l'application.
Nous livrons des modules applicatifs pour mettre en œuvre la redondance au niveau applicatif. Ils sont préconfigurés pour des applications et des bases de données bien connues. Vous pouvez les personnaliser avec vos propres services, données à répliquer, checkers d'application. Et vous pouvez combiner les modules applicatifs pour construire des architectures avancées à plusieurs niveaux.
Cette solution est indépendante de la plate-forme et fonctionne avec des applications à l'intérieur de machines physiques, de machines virtuelles, dans le Cloud. Tout hyperviseur est supporté (VMware, Hyper-V...).
Redondance au niveau de machine virtuelle
Dans ce type de solution, la machine virtuelle (VM) complète est répliquée (Application + OS). Et la machine virtuelle complète est redémarrée en cas de panne.
L'avantage est qu'il n'y a pas de scripts de redémarrage à écrire par application et pas d'adresse IP virtuelle à définir. Si vous ne savez pas comment fonctionne l'application, c'est la meilleure solution.
Cette solution fonctionne avec Windows/Hyper-V et Linux/KVM mais pas avec VMware. Il s'agit d'une solution active/active avec plusieurs machines virtuelles répliquées et redémarrées entre deux nœuds.
- Solution pour une nouvelle application (pas de script de redémarrage à écrire) : Windows/Hyper-V, Linux/KVM
Pourquoi une réplication de quelques Tera-octets ?
Temps de resynchronisation après panne (étape 3)
- Réseau 1 Gb/s ≈ 3 heures pour 1 téraoctet.
- Réseau 10 Gb/s ≈ 1 heure pour 1 téraoctet ou moins en fonction des performances d'écriture disque.
Alternative
- Pour un grand volume de données, utilisez un stockage partagé externe.
- Plus cher, plus complexe.
Pourquoi une réplication < 1 000 000 fichiers ?
- Performance du temps de resynchronisation après panne (étape 3).
- Temps pour vérifier chaque fichier entre les deux nœuds.
Alternative
- Placez les nombreux fichiers à répliquer sur un disque dur virtuel / une machine virtuelle.
- Seuls les fichiers représentant le disque dur virtuel / la machine virtuelle seront répliqués et resynchronisés dans ce cas.
Pourquoi un basculement ≤ 32 VMs répliquées ?
- Chaque VM s'exécute dans un module miroir indépendant.
- Maximum de 32 modules miroir exécutés sur le même cluster.
Alternative
- Utilisez un stockage partagé externe et une autre solution de clustering de VMs.
- Plus cher, plus complexe.
Pourquoi un réseau LAN/VLAN entre sites distants ?
- Basculement automatique de l'adresse IP virtuelle avec 2 nœuds dans le même sous-réseau.
- Bonne bande passante pour la resynchronisation (étape 3) et bonne latence pour la réplication synchrone (typiquement un aller-retour de moins de 2 ms).
Alternative
- Utilisez un équilibreur de charge pour l'adresse IP virtuelle si les 2 nœuds sont dans 2 sous-réseaux (supporté par SafeKit, notamment dans le cloud).
- Utilisez des solutions de backup avec réplication asynchrone pour un réseau à latence élevée.
Prérequis
- Vous avez besoin de KVM installé sur 2 nœuds Linux.
- Vos applications critiques doivent être installées dans une ou plusieurs machines virtuelles.
Installation du package sous Linux
-
Installez la version gratuite de SafeKit sur 2 nœuds Linux.
Remarque : l'essai gratuit inclut toutes les fonctionnalités de SafeKit. À la fin de l'essai, vous pouvez activer des clés de licence permanentes sans désinstaller le package.
-
Après le téléchargement du package safekit_xx.bin, exécutez-le pour extraire le rpm et le script safekitinstall, puis exécutez le script safekitinstall
-
Répondez oui à la configuration automatique du pare-feu
-
Définissez le mot de passe pour la console Web et l'utilisateur par défaut admin.
- Utilisez des caractères alphanumériques pour le mot de passe (pas de caractères spéciaux).
- Le mot de passe doit être le même sur les deux nœuds.
Installation du module sous Linux
-
Téléchargez le module kvm.safe.
Le module est gratuit. Il contient les fichiers userconfig.xml et les scripts de redémarrage.
- Mettre kvm.safe sous /opt/safekit/Application_Modules/generic/.
La configuration KVM est présentée avec une machine virtuelle nommée VM1
et contenant l'application à redémarrer en cas de panne.
Vous devrez répéter cette configuration pour toutes les VM que vous souhaitez répliquer et redémarrer. SafeKit prend en charge jusqu'à 25 machines virtuelles.
1. Prérequis
L'image de la machine virtuelle vm1 se trouve dans le fichier /var/lib/libvirt/images/vm1.qcow2
. Avant la configuration de SafeKit, vous devez effectuer la configuration suivante pour placer la machine virtuelle dans un répertoire propre à vm1 qui sera répliqué par SafeKit.
Sur le nœud 1 :
- Arrêter vm1 :
virsh shutdown vm1
- Créez un répertoire
vm1/
:mkdir -p /var/lib/libvirt/images/vm1/
- Copiez l'image vm1 vers le nouvel emplacement :
cp -a /var/lib/libvirt/images/vm1.qcow2 /var/lib/libvirt/images/vm1/
L'image vm1 d'origine peut être supprimée dès que les tests avec le nouvel emplacement sont réussis.
- Modifiez le fichier de configuration vm1 :
EDITOR=vi virsh edit vm1
Et changez la ligne :
<source file='/var/lib/libvirt/images/vm1.qcow2'>
par :
<source file='/var/lib/libvirt/images/vm1/vm1.qcow2'>
- Définissez l'option cache sur 'none' dans le même fichier, pour l'intégrité des données en cas de crash :
<disk type='file' device='disk'> <driver name='qemu' type=’qcow2’ cache='none'/>
- Fermer le fichier de configuration vm1
- Désactiver le démarrage automatique de vm1 :</ p>
virsh autostart vm1 --disable
- Créez un fichier de configuration
vm1.xml
pour vm1 :virsh dumpxml vm1 > vm1.xml
Sur le nœud 2 :
- Copiez le fichier de configuration
vm1.xml
du nœud 1.Remarque : chaque fois que la configuration vm1 est modifiée sur le nœud 1, vous devez réappliquer la nouvelle configuration sur le nœud 2.
- Créez la machine virtuelle vm1 mais ne la démarrez pas :
virsh define vm1.xml
- Désactiver le démarrage automatique de vm1 :
virsh autostart vm1 --disable
- Créez le répertoire pour l'emplacement de l'image :
mkdir -p /var/lib/libvirt/images/vm1/
2. Lancez la console SafeKit
- Lancez la console Web dans un navigateur sur un nœud du cluster en vous connectant à
http://localhost:9010
. - Entrez
admin
comme nom d'utilisateur et le mot de passe défini lors de l'installation.
Vous pouvez également exécuter la console dans un navigateur sur un poste de travail externe au cluster.
La configuration de SafeKit se fait sur les deux nœuds à partir d'un seul navigateur.
Pour sécuriser la console Web, consultez 11. Sécurisation du service web de SafeKit dans le Guide de l'utilisateur.
3. Configurer les adresses des nœuds
- Entrez les adresses IP des nœuds et appuyez sur la touche Tabulation pour vérifier la connectivité et remplir le nom des nœuds.
- Ensuite, cliquez sur
Save and apply
pour enregistrer la configuration.
Si le nœud 1 ou le nœud 2 a une couleur rouge, vérifiez la connectivité du navigateur aux deux nœuds et vérifiez le pare-feu sur les deux nœuds pour résoudre le problème.
Si vous le souhaitez, vous pouvez ajouter un nouveau LAN pour un deuxième heartbeat et pour un réseau de réplication dédié.
Cette opération placera les adresses IP dans le fichier cluster.xml
sur les deux nœuds (plus d'informations dans le training avec les lignes de commande).
5. Configurer le module
- Choisissez un démarrage
Automatic
du module au boot sans délai. - Normalement, vous disposez d'un seul réseau
Heartbeat
sur lequel la réplication est effectuée. Mais vous pouvez définir un réseau privé si nécessaire (en ajoutant un LAN à l'étape 3). - Mettez dans
VM_PATH
, le chemin racine du répertoire répliqué (/var/lib/libvirt/images
). - Entrez dans
VM_NAME
, le nom de la machine virtuelle (vm1
).
Nous supposons que les fichiers de VM1 se trouvent dans /var/lib/libvirt/image/vm1/
(voir prérequis). Ce répertoire va être répliqué en temps réel par SafeKit.
Vous n'avez pas besoin de configurer une adresse IP virtuelle. La VM1 sera redémarrée sur le KVM secondaire avec son adresse IP physique, et cette adresse IP sera reroutée.
6. Modifier les scripts (facultatif)
- Ne modifiez pas les scripts.
10. Démarrez le nœud avec des données à jour
- Si le nœud 1 possède le répertoires répliqué
vm1/
à jour, sélectionnez-le et démarrez-le en tant que primaireAs primary
.
Lorsque le nœud 2 sera démarré, toutes les données seront copiées du nœud 1 vers le nœud 2.
Si vous faites le mauvais choix, vous courez le risque de synchroniser des données obsolètes sur les deux nœuds.
Il est également supposé que VM1
est arrêtée sur le nœud 1 afin que SafeKit installe les mécanismes de réplication puis démarre VM1
dans le script start_prim
.
Utilisez Start
pour les démarrages suivants : SafeKit retient le serveur le plus à jour. Le démarrage As primary
est un démarrage spécial la première fois ou lors d'opérations exceptionnelles.
11. Attendez le passage à ALONE (vert)
- Le nœud 1 doit atteindre l'état ALONE (vert), ce qui signifie que le script
start_prim
a été exécuté sur le nœud 1.
Si ALONE (vert) n’est pas atteint ou si VM1 n'est pas démarrée, analysez pourquoi avec le journal du module du nœud 1.
- cliquez sur l'icône « journal » de
node1
pour ouvrir le journal du module et recherchez des messages d'erreur tels qu'un checker détectant une erreur et arrêtant le module. - cliquez sur
start_prim
dans le journal : les messages de sortie du script sont affichés à droite et des erreurs peuvent être détectées comme VM1 mal démarrée.
Si le cluster est dans l'état WAIT (rouge) not uptodate, STOP (rouge) not upodate
, arrêtez le nœud WAIT et forcer son démarrage en tant que primaire.
12. Démarrer le nœud 2
- Démarrez le nœud 2 avec son menu contextuel.
- Attendez l'état SECOND (vert).
Le nœud 2 reste dans l'état SECOND (orange) lors de la resynchronisation des répertoires répliqués (copie du nœud 1 vers le nœud 2).
Cela peut prendre un certain temps en fonction de la taille des fichiers à resynchroniser dans les répertoires répliqués et de la bande passante du réseau.
Pour voir la progression de la copie, consultez le log du module et les ressources de réplication du nœud 2.
14. Tests
- Arrêtez le nœud PRIM en faisant défiler son menu contextuel et en cliquant sur
Stop
. - Vérifiez qu'il y a un basculement sur le nœud 2 qui doit devenir ALONE (vert).
- Vérifiez avec les outils KVM que VM1 s'exécute sur le nœud 2.
Si ALONE (vert) n’est pas atteint sur le nœud 2 ou si VM1 n'est pas démarrée, analysez pourquoi avec le journal du module du nœud 2.
- cliquez sur l'icône « journal » de
node2
pour ouvrir le journal du module et recherchez des messages d'erreur tels qu'un checker détectant une erreur et arrêtant le module. - cliquez sur
start_prim
dans le journal : les messages de sortie du script sont affichés à droite et des erreurs peuvent être détectées comme VM1 mal démarrée.
Si tout va bien, lancez un démarrage du noeud 1, qui resynchronisera les répertoires répliqués depuis le noeud 2.
Si les choses vont mal, arrêtez le noeud 2 et forcez le démarrage en tant que primaire du noeud 1, qui redémarrera avec ses données localement saines au moment de l'arrêt.
15. Réplication des snapshots
Le répertoire qui contient les fichiers xml des snapshots est :
/var/lib/libvirt/qemu/snapshot/%VM_NAME%
où VM_NAME
est le nom de la machine virtuelle (vm1).
Remarque : Si aucun snapshot n'a été créé, créez-en un pour générer le répertoire (sinon la configuration suivante de SafeKit échouera).
Pour le répliquer :
- Dans la configuration du module, cliquez sur
Advanced configuration
(voir image) pour éditeruserconfig.xml
. -
Insérez la ligne ci-dessous dans la section
<rfs>
de userconfig.xml :<replicated dir="/var/lib/libvirt/qemu/snapshot/%VM_NAME%" mode="read_only"> </replicated>
- Appliquez la configuration avec
Save and apply
pour redéployer le fichier userconfig.xml modifié sur les deux nœuds (le module doit être arrêté sur les deux nœuds à l'étapeSave and apply
). -
Créez des snapshots sur le nœud PRIM via virt-manager ou une ligne de commande :
virsh snapshot-create-as vm1 snapshot-name
Remarque : lors de la création d'un snapshot avec une ligne de commande, vous devez actualiser la vue des snapshots dans virt-manager.
Les snapshots créés sur le nœud PRIM sont opérationnels sur le nœud 2 après le basculement, mais ne sont pas listés sur le nœud 2.
-
Pour importer un snapshot sur le nœud 2, vous devez exécuter la commande :
virsh snapshot-create --redefine vm1 /var/lib/libvirt/qemu/snapshot/vm1/snapshot-name
-
La ligne de commande pour répertorier tous les snapshots de vm1 est :
virsh snapshot-list vm1
16. Support
- Pour obtenir du support, prenez deux
snapshots
SafeKit (deux fichiers .zip), un pour chaque nœud. - Si vous avez un compte sur https://support.evidian.com, téléchargez-les dans l'outil call desk.
17. Si nécessaire, configurez un checker splitbrain
- Voir ci-dessous "Quels sont les différents scénarios en cas d'isolement réseau dans un cluster ?" pour savoir si vous devez configurer un checker splitbrain.
- Allez dans la configuration du module et cliquez sur
Checkers / Splitbrain
(voir image) pour modifier les paramètres du splitbrain. Enregistrez et appliquez
la nouvelle configuration pour la redéployer sur les deux nœuds (le module doit être arrêté sur les deux nœuds pour enregistrer et appliquer).
Paramètres :
Resource name
identifie le témoin avec un nom de ressource :splitbrain.witness
. Vous pouvez modifier cette valeur pour identifier le témoin.Witness address
est l'argument du ping lorsqu'un nœud passe de PRIM à ALONE ou de SECOND à ALONE. Changez cette valeur avec l'IP du témoin (un élément robuste, typiquement un routeur).- Remarque : vous pouvez définir plusieurs adresses IP séparées par des espaces. Attention, les adresses IP doivent être accessibles depuis un nœud mais pas depuis l'autre en cas d'isolement du réseau.
Un seul réseau
Lorsqu'il y a un isolement réseau, le comportement par défaut est :
- comme les heartbeats sont perdus pour chaque nœud, chaque nœud passe en ALONE et exécute l'application avec son adresse IP virtuelle (double exécution de l'application modifiant ses données locales),
- lorsque l'isolement est réparé, un nœud ALONE est obligé de s'arrêter et de resynchroniser ses données depuis l'autre nœud,
- à la fin, le cluster est PRIM-SECOND (ou SECOND-PRIM selon la détection d'adresse IP virtuelle en double faite par Windows).
Deux réseaux avec un réseau de réplication dédié
Lorsqu'il y a un isolement réseau, le comportement avec un réseau de réplication dédié est :
- un réseau de réplication dédié est implémenté sur un réseau privé,
- les heartbeats sur le réseau de production sont perdus (réseau isolé),
- les heartbeats sur le réseau de réplication fonctionnent (réseau non isolé),
- le cluster reste à l'état PRIM/SECOND.
Un seul réseau et un checker split-brain
Lorsqu'il y a un isolement du réseau, le comportement avec un split-brain checker est :
- un split-brain checker a été configuré avec l'adresse IP d'un témoin (typiquement un routeur),
- le split-brain agit lorsqu'un serveur passe de PRIM à ALONE ou de SECOND à ALONE,
- en cas d'isolement du réseau, avant de passer en ALONE, les deux nœuds testent l'adresse IP,
- le nœud qui peut accéder à l'adresse IP passe à ALONE, l'autre passe à WAIT,
- lorsque l'isolement est réparé, le nœud WAIT resynchronise ses données et devient SECOND.
Remarque : Si le témoin est en panne ou déconnecté, les deux nœuds passent à WAIT et l'application n'est plus en cours d'exécution. C'est pourquoi vous devez choisir un témoin robuste comme un routeur.
Fichiers internes à SafeKit pour la haute disponibilité de KVM avec réplication temps réel synchrone et tolérance aux pannes
Allez dans le tab Advanced Configuration de la console pour modifier les fichiers ci-dessous.Fichiers internes au module Linux kvm.safe
userconfig.xml (description dans le guide de l'utilisateur)/p>
<!-- Mirror Architecture with Real Time File Replication and Failover for KVM -->
<!DOCTYPE safe>
<safe>
<!-- Set value to the path of the virtual machines repository -->
<macro name="VM_PATH" value="/var/lib/libvirt/images" />
<!-- Set value to the name of the virtual machine -->
<macro name="VM_NAME" value="vm1" />
<service mode="mirror" defaultprim="alone" maxloop="3" loop_interval="24" failover="on">
<!-- Heartbeat Configuration -->
<heart>
<heartbeat name="">
</heartbeat>
</heart>
<!-- File Mirroring Configuration -->
<rfs mountover="off" async="second" locktimeout="200" nbrei="3">
<replicated dir="%VM_PATH%/%VM_NAME%" mode="read_only">
</replicated>
<!-- Uncomment for replicating the directory that contains snapshot xml files of the virtual machine
<replicated dir="/var/lib/libvirt/qemu/snapshot/%VM_NAME%" mode="read_only">
</replicated>
-->
</rfs>
<!-- User scripts Configuration -->
<user>
<var name="VM_PATH" value="%VM_PATH%/%VM_NAME%" />
<var name="VM_NAME" value="%VM_NAME%" />
</user>
</service>
</safe>
start_prim
#!/bin/sh
# Script called on the primary server for starting application
# For logging into SafeKit log use:
# $SAFE/safekit printi | printe "message"
# stdout goes into Application log
echo "Running start_prim $*"
res=0
# Start VM_NAME
virsh start $VM_NAME
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
if ([ "x$state" == "x" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME not found"
else
let i=1
while ( [ $i -le 5 ] && [ "x$state" != "xrunning" ]); do
sleep 5
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
let i=i+1
done
if ([ "x$state" != "xrunning" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME start failed"
fi
fi
if [ $res -ne 0 ] ; then
$SAFE/safekit printe "start_prim failed"
# uncomment to stop SafeKit when critical
$SAFE/safekit stop -i "start_prim"
fi
stop_prim
#!/bin/sh
# Script called on the primary server for stopping application
# For logging into SafeKit log use:
# $SAFE/safekit printi | printe "message"
#----------------------------------------------------------
#
# 2 stop modes:
#
# - graceful stop
# call standard application stop
#
# - force stop ($1=force)
# kill application's processes
#
#----------------------------------------------------------
# stdout goes into Application log
echo "Running stop_prim $*"
# Stop VM_NAME
virsh shutdown $VM_NAME
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
if ([ "x$state" == "x" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME not found"
else
let i=1
while ( [ $i -le 5 ] && [ "x$state" == "xrunning" ]); do
# Stop VM_NAME
virsh shutdown $VM_NAME
sleep 5
state=$(virsh list --all | grep " $VM_NAME " | awk '{ print $3}')
let i=i+1
done
if ([ "x$state" == "xrunning" ]) ; then
res=1
$SAFE/safekit printe "$VM_NAME stop failed"
fi
fi
res=0
# default: no action on forcestop
[ "$1" = "force" ] && exit 0
# Fill with your application stop call
[ $res -ne 0 ] && $SAFE/safekit printe "stop_prim failed"
Partage de charge réseau et reprise sur panne |
|
Windows farm |
Linux farm |
Generic farm > | Generic farm > |
Microsoft IIS > | - |
NGINX > | |
Apache > | |
Amazon AWS farm > | |
Microsoft Azure farm > | |
Google GCP farm > | |
Other cloud > |
Architectures de clustering avancée
Plusieurs modules peuvent être déployés dans le même cluster. Ainsi, des architectures de clustering avancées peuvent être mises en œuvre :
- un cluster qui mixte ferme et miroir avec le déploiement d’un module ferme et d’un module miroir dans le même cluster,
- un cluster actif/actif avec réplication en déployant plusieurs modules miroirs sur 2 serveurs,
- un cluster Hyper-V ou un cluster KVM avec réplication temps réel et reprise de machines virtuelles complètes entre 2 hyperviseurs actifs,
- un cluster N-1 avec le déploiement de N modules miroirs sur N+1 serveurs.
Réplication de fichiers temps réel et reprise sur panne |
|||||||||||||||||||||||||||||||
Windows mirror |
Linux mirror |
||||||||||||||||||||||||||||||
Generic mirror > | Generic mirror > | ||||||||||||||||||||||||||||||
Microsoft SQL Server > | - | ||||||||||||||||||||||||||||||
Oracle > | |||||||||||||||||||||||||||||||
MariaDB > | |||||||||||||||||||||||||||||||
MySQL > | |||||||||||||||||||||||||||||||
PostgreSQL > | |||||||||||||||||||||||||||||||
Firebird > | |||||||||||||||||||||||||||||||
Windows Hyper-V > | Linux KVM > | ||||||||||||||||||||||||||||||
- | Docker > Podman > Kubernetes K3S > |
||||||||||||||||||||||||||||||
- | |||||||||||||||||||||||||||||||
- | Elasticsearch > | ||||||||||||||||||||||||||||||
Milestone XProtect > | - | ||||||||||||||||||||||||||||||
Genetec SQL Server > | - | ||||||||||||||||||||||||||||||
Hanwha Vision > Hanwha Wisenet > |
- | ||||||||||||||||||||||||||||||
Nedap AEOS > | - | ||||||||||||||||||||||||||||||
Siemens SIMATIC WinCC > Siemens SIMATIC PCS 7 > Siemens Desigo CC > Siemens Siveillance suite > Siemens Siveillance VMS > Siemens SiPass > Siemens SIPORT > |
- | ||||||||||||||||||||||||||||||
Bosch AMS > Bosch BIS > Bosch BVMS > |
- | ||||||||||||||||||||||||||||||
Amazon AWS mirror > | |||||||||||||||||||||||||||||||
Microsoft Azure mirror > | |||||||||||||||||||||||||||||||
Google GCP mirror > | |||||||||||||||||||||||||||||||
Other cloud > |
SafeKit avec le module Hyper-V ou le module KVM | Microsoft Hyper-V Cluster & VMware HA |
Pas de disque partagé - réplication temps réel synchrone à la place avec 0 perte de données | Disque partagé et baie de disques externe spécifique |
Sites distants = pas de SAN pour la réplication | Sites distants = baies de disques répliquées à travers un SAN |
Aucune compétence informatique spécifique pour configurer le système | Compétence informatique spécifique pour configurer le système |
Notez que les solutions Hyper-V/SafeKit et KVM/SafeKit sont limitées à la réplication et au basculement de 25 machines virtuelles.
HA de VMs avec le module Hyper-V ou KVM de SafeKit | HA d'application avec les modules applicatifs de SafeKit |
SafeKit dans 2 hyperviseurs Réplication et reprise de VM complète |
SafeKit dans 2 machines virtuelles ou physiques Réplication et reprise au niveau applicatif |
Réplique plus de données (App+OS) | Réplique seulement les données applicatives |
Reboot de la machine virtuelle sur l'hyperviseur 2 si l'hyperviseur 1 crash Temps de reprise dépendant du reboot de l'OS |
Temps de reprise rapide avec redémarrage de l'application sur OS2 en cas de panne du serveur 1 Autour d'1 mn ou moins (voir RTO/RPO ici) Checker applicatif et reprise sur panne logicielle |
Solution générique pour n'importe quelle application / OS | Scripts de redémarrage à écrire dans des modules applicatifs de haute disponibilité |
|
|
Cluster de type "shared nothing"" vs cluster à disque partagé |
|
|
|
|
|
Haute disponibilité vs tolérance aux fautes |
|
|
|
Réplication synchrone vs réplication asynchrone |
|
|
|
Réplication de fichiers au niveau octet vs réplication de disque au niveau du bloc |
|
|
|
Heartbeat, reprise sur panne et quorum pour éviter 2 serveurs maîtres |
|
|
|
|
|
Evidian SafeKit 8.2
Toutes les nouvelles fonctionnalités par rapport à la SafeKit 7.5 décrites dans le release notes
Packages
- Windows (with Microsoft Visual C++ Redistributable)
- Windows (without Microsoft Visual C++ Redistributable)
- Linux
- OS supportés et derniers fixes
Licence d'essai gratuit d'un mois
Documentation technique
Training
Information produit
Introduction
-
- Demonstration
- Examples of redundancy and high availability solution
- Evidian SafeKit sold in many different countries with Milestone
- 2 solutions: virtual machine or application cluster
- Distinctive advantages
- More information on the web site
- SafeKit training
-
- Cluster of virtual machines
- Mirror cluster
- Farm cluster
Installation, Console, CLI
- Install and setup / pptx
- Package installation
- Nodes setup
- Upgrade
- Web console / pptx
- Configuration of the cluster
- Configuration of a new module
- Advanced usage
- Securing the web console
- Command line / pptx
- Configure the SafeKit cluster
- Configure a SafeKit module
- Control and monitor
Advanced configuration
- Mirror module / pptx
- start_prim / stop_prim scripts
- userconfig.xml
- Heartbeat (<hearbeat>)
- Virtual IP address (<vip>)
- Real-time file replication (<rfs>)
- How real-time file replication works?
- Mirror's states in action
- Farm module / pptx
- start_both / stop_both scripts
- userconfig.xml
- Farm heartbeats (<farm>)
- Virtual IP address (<vip>)
- Farm's states in action
Troubleshooting
- Troubleshooting / pptx
- Analyze yourself the logs
- Take snapshots for support
- Boot / shutdown
- Web console / Command lines
- Mirror / Farm / Checkers
- Running an application without SafeKit
Support
- Evidian support / pptx
- Get permanent license key
- Register on support.evidian.com
- Call desk