Milestone XProtect : le cluster de haute disponibilité le plus simple entre deux serveurs redondants
Avec la réplication temps réel et le basculement automatique fournis par Evidian SafeKit
La solution pour Milestone XProtect
Evidian SafeKit apporte la haute disponibilité à Milestone XProtect, le système de vidéosurveillance, entre deux serveurs redondants.
Cet article explique comment mettre en place rapidement un cluster Milestone avec réplication en temps réel et basculement automatique des services de management et de la base de données SQL. Les services de management et SQL peuvent être répartis sur plusieurs clusters.
Notez que la haute disponibilité des serveurs d'enregistrement est déjà gérée par la solution intégrée à Milestone (sans réplication temps réel).
Un produit générique idéal pour un partenaire
Notez que SafeKit est un produit générique sous Windows et Linux.
Vous pouvez implémenter avec SafeKit la réplication en temps réel et le basculement de n'importe quel répertoire de fichiers et service, base de données, machines virtuelles Hyper-V ou KVM complètes, applications Docker, Podman, K3S, Cloud (voir la liste des modules).
Une solution complète
SafeKit résout :
- les pannes matérielles (20% des problèmes), incluant la panne complète d'une salle informatique,
- les défaillances logicielles (40% des problèmes), incluant la relance de processus critiques,
- et les erreurs humaines (40% des problèmes) grâce à sa simplicité d'utilisation et sa console Web.
Redondance et haute disponibilité 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 reprise doivent être écrits pour redémarrer l'application. 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...).
Exemples
- Gestion vidéo : Milestone (Management, SQL, Log, Event)/SafeKit
- Gestion vidéo : Genetec (SQL)/SafeKit
- Contrôle d'accès : Nedap (AEOS , SQL)/SafeKit
- Nouvelle application (scripts de reprise à écrire): Windows, Linux
Redondance et haute disponibilité au niveau machine virtuelle
Dans ce type de solution, le logiciel est placé dans une machine virtuelle. La machine virtuelle (VM) complète est répliquée et redémarrée (Application + OS).
L'avantage de cette solution est qu'il n'y a pas de scripts de reprise à écrire par application. Cette solution est générique pour tous les logiciels . Elle fonctionne avec les hyperviseurs 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.
Exemples
- Gestion des bâtiments : Siemens Desigo CC/SafeKit
- Gestion vidéo et contrôle d'accès : Siemens Siveillance suite/SafeKit
- Nouvelle application (pas de script de reprise à écrire) : Windows/Hyper-V, Linux/KVM
Milestone a choisi
SafeKit
SafeKit est déployé dans plus de 30 pays avec le logiciel de gestion vidéo de Milestone.
SafeKit est validé par Milestone pour la redondance et la haute disponibilité du serveur de management.
SafeKit est la meilleure solution car elle est purement logicielle, totalement indépendante du matériel.
Solution préférée par Siemens
SafeKit est disponible dans le marketplace Siemens avec la suite Siveillance (vidéo et contrôle d'accès) et avec ses logiciels SCADA : Desigo CC (gestion technique du bâtiment), SIMATIC WinCC, SIMATIC PCS 7.
SafeKit est déployé par Siemens en Australie, en France, aux Pays-Bas, au Qatar, en Suisse, aux Émirats arabes unis, au Royaume-Uni et aux États-Unis.
SafeKit recommandé par Nedap
Nedap, un acteur clé du contrôle d'accès physique, recommande SafeKit pour la redondance et la haute disponibilité de son application AEOS.
La solution Nedap/SafeKit est disponible avec un essai gratuit et un guide d'installation rapide.
TIL Technologies a choisi SafeKit
SafeKit est déployé dans plus de 100 sites clients par TIL Technologies pour le contrôle d'accès et la gestion des bâtiments.
SafeKit est l'option de haute disponibilité de MICROSESAME.
Prix de l'innovation dans les logiciels de gestion vidéo
Les lecteurs de Benchmark Magazine (spécialisé dans les systèmes de sécurité physique pour revendeurs & SI) ont voté pour SafeKit comme une innovation dans les logiciels de gestion vidéo.
Ce prix montre l'importance de la redondance dans les offres de sécurité.
Réplication Hyper-V intégrée
- Réplication asynchrone => perte de données
- Basculement manuel (pas de basculement automatique)
- Ce n'est une solution de haute disponibilité
Clustering Microsoft (idem avec VMware HA)
- Nécessite un disque partagé
- Prix du disque partagé et de son installation (SAN, iSCSI)
- Complexité de la configuration de Windows failover cluster (AD…)
- Sites distants = stockage répliqué
Evidian SafeKit
- Simple et économique
- Réplication synchrone => pas de perte de données
- Basculement et réintégration automatiques
- Aucun disque partagé
- Essai gratuit et guide d'installation rapide
Prérequis
- Vous avez besoin de Milestone XProtect et SQL installés sur 2 nœuds (machines virtuelles ou serveurs physiques).
SQL Server peut être externe, voir la note ci-dessous.
- Sous Windows, avec le gestionnaire de services Windows, placez Milestone XProtect et les services SQL avec Type de démarrage de démarrage = Manuel sur les deux nœuds.
SafeKit contrôle le démarrage des services Milestone XProtect et SQL dans start_prim. Editez start_prim lors de la configuration pour vérifier si vous avez mis tous les services en démarrage manuel, y compris les nouveaux que vous pouvez ajouter.
Note : SQL Server peut être externe. Dans ce cas, à l'étape 4 lors de la configuration étape par étape :
- supprimer la réplication des dossiers SQL Data\ et Log\,
- supprimer le checker de processus sur sqlservr.exe,
- supprimer le démarrage et l'arrêt du service MSSQLServer dans les scripts start_prim et stop_prim.
Vous pouvez implémenter la redondance du serveur SQL externe avec SafeKit et le module sqlserver.safe.
Dans ce cas sur les 2 nœuds de management, configurez la connexion de Milestone Management à SQL avec l'adresse IP virtuelle du module sqlserver.safe (vérifiez la configuration avec la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\VideoOS\Server\ConnectionString).
Note : Le serveur d'événements peut être externe au serveur de management.
Dans ce cas, vous disposez de 2 clusters avec 2 installations de milestone.safe : une pour le cluster de management, l'autre pour le cluster d'événements.
Pour le cluster de management, à l'étape 4 lors de la configuration étape par étape de milestone.safe :
- supprimez le démarrage et l'arrêt de "MilestoneEventServerService" dans les scripts start_prim et stop_prim.
Et pour le cluster d'événements, à l'étape 4 lors de la configuration étape par étape de milestone.safe :
- supprimez le démarrage et l'arrêt de "Milestone XProtect Management Server" et de "Milestone XProtect Log Server" dans les scripts start_prim et stop_prim,
- supprimer le démarrage et l'arrêt du service MSSQLServer dans les scripts start_prim et stop_prim,
- supprimer la réplication des dossiers SQL Data\ et Log\,
- supprimer le checker de processus sur sqlservr.exe,
- lors de la configuration étape par étape, enregistrer le serveur d'événements avec l'adresse IP virtuelle du cluster de management (ou installer le serveur d'événements depuis le Download Manager et définissez l'adresse IP virtuelle du cluster de management lors de l'installation),
- dans le Milestone management client, définissez le serveur d'événements avec l'adresse IP virtuelle du cluster d'événements dans les Registered Services.
En cas de migration de Milestone de la version N vers la version N+1 dans un cluster SafeKit, lisez cet article : Milestone Management Migration with SafeKit
Installation du package sous Windows
-
Téléchargez la version gratuite de SafeKit sur 2 nœuds Windows.
Remarque : la version gratuite 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.
-
Pour ouvrir le pare-feu Windows, sur les deux nœuds démarrez un powershell en tant qu'administrateur et tapez
c:/safekit/private/bin/firewallcfg add
-
Pour initialiser le mot de passe de l'utilisateur admin par défaut de la console, sur les deux nœuds démarrez un powershell en tant qu'administrateur et tapez
c:/safekit/private/bin/webservercfg.ps1 -passwd mdp
- Utilisez des caractères alphanumériques pour le mot de passe (pas de caractères spéciaux).
- mdp doit être le même sur les deux nœuds.
-
Exclure des analyses antivirus C:\safekit\ (le répertoire d'installation par défaut) et tous les dossiers répliqués que vous allez définir.
Les antivirus peuvent rencontrer des problèmes de détection avec SafeKit en raison de son intégration étroite avec le système d'exploitation, de ses mécanismes d'IP virtuelle, de sa réplication en temps réel et du redémarrage de services critiques.
Installation du module sous Windows
-
Téléchargez le module milestone.safe.
Le module est gratuit. Il contient les fichiers userconfig.xml et les scripts de redémarrage.
- Mettez milestone.safe sous C:\safekit\Application_Modules\generic\.
Cette configuration nécessite au moins Milestone XProtect 2023 R3. Pour les versions précédentes, veuillez voir cet article.
1. 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.
2. 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).
4. 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 2). - Saisissez une
Virtual IP address
. Une adresse IP virtuelle est une adresse IP standard dans le même réseau IP (même sous-réseau) que les adresses IP des deux nœuds.
Les clients de l'application doivent être configurés avec l'adresse IP virtuelle (ou le nom DNS associé à l'adresse IP virtuelle).
L'adresse IP virtuelle est automatiquement basculée en cas de panne. - Vérifiez que les
Replicated directories
sont installés sur les deux nœuds et contiennent les données de l'application.
La réplication des données et des journaux est essentielle pour une base de données.
Vous pouvez créer des répertoires répliqués supplémentaires selon vos besoins. - Notez que si un nom de processus est affiché dans
Monitored processes/services
, il sera surveillé avec une action de redémarrage en cas de panne. La configuration d'un mauvais nom de processus entraînera l'arrêt du module juste après son démarrage.
- Les bases de données système de SQL (comme master.mdf et mastlog.ldf) doivent être situées dans les mêmes répertoires sur les deux nœuds. Les répertoires doivent être configurés comme répliqués.
- SQL doit également être installé au même emplacement dans le système de fichiers sur les deux nœuds car la base de données de ressources de SQL se trouve dans le binaire et est requise pour le basculement sur panne. Cette base de données n'a pas besoin d'être répliquée.
- Les bases de données SQL de Milestone (.mdf et .ldf) doivent se trouver dans les mêmes répertoires sur les deux nœuds. Les répertoires doivent être configurés comme répliqués. Les bases de données Milestone sont les suivantes selon cet article .
Si SQL est sur les serveurs de management :
Si vous cliquez sur Advanced configuration
, le fichier userconfig.xml
s'affiche (exemple avec Microsoft SQL Server).
5. Modifier les scripts (facultatif)
start_prim
etstop_prim
doivent contenir le démarrage et l'arrêt de l'application Milestone XProtect et SQL (exemple fourni pour Microsoft SQL Server à droite).- Vous pouvez ajouter de nouveaux services dans ces scripts.
- Vérifiez que les noms des services démarrés dans ces scripts sont ceux installés sur les deux nœuds, sinon modifiez-les dans les scripts.
- Sous Windows et sur les deux nœuds, avec le gestionnaire de services Windows, définissez
Boot Startup Type = Manual
pour tous les services démarrés dansstart_prim
(SafeKit contrôle le démarrage des services dansstart_prim
).
8. Vérifier que la configuration a réussi
- Vérifiez le message
Success
(vert) sur les deux nœuds et cliquez surMonitor modules
.
Sous Linux, vous pouvez obtenir une erreur à cette étape si les répertoires répliqués sont des points de montage. Consultez cet article pour résoudre le problème.
9. Démarrez le nœud avec des données à jour
- Si le nœud 1 possède les répertoires répliqués à jour, sélectionnez-le et démarrez-le en tant que primaire
As 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 l'application Milestone XProtect et SQL est arrêtée sur le nœud 1 afin que SafeKit installe les mécanismes de réplication puis démarre l'application 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.
10. Attendez le passage à ALONE (vert)
- Le nœud 1 doit atteindre l'état ALONE (vert), ce qui signifie que l'adresse IP virtuelle est définie et que le script
start_prim
a été exécuté sur le nœud 1.
Si ALONE (vert) n’est pas atteint, analysez pourquoi avec le log du module du nœud 1.
- cliquez sur
node1
pour afficher le journal du module. - exemple de journal de module SQL Server où le nom du service dans
start_prim
n'est pas valide. Le processus sqlserver.exe est surveillé mais comme il n'est pas démarré, à la fin le module s'arrête.
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.
11. Dans le bureau du nœud 1, arrêtez, puis enregistrez sur l'adresse IP virtuelle et redémarrez le Milestone Management Server
Exécutez les points suivants sur le nœud 1 suivant l'image :
- Cliquez avec le bouton droit sur l'icône Milestone Management Server dans la barre de tâches.
- Stop Management Server Service
- Choisissez ensuite Server Configurator... et enregistrez l'adresse IP virtuelle.
- Start Management Server Service
Cette procédure enregistre le Management Server du nœud 1 dans la base de données SQL (exécutée sur le nœud 1) via une connexion à l'adresse virtuelle.
12. Résoudre le problème d'authentification Windows lors du basculement
Lorsque vous démarrez Milestone XProtect Management Client, vous devez vous authentifier soit avec la "Windows authentication" soit avec la "Basic authentication" (cliquez ici pour voir la capture d'écran).
Si l'authentification Windows de Milestone a été configurée avec un Active Directory, l'utilisateur/mot de passe sera récupéré dans l'AD externe sur le nœud secondaire après un basculement, il n'y a donc pas de configuration particulière.
Ouvrez Milestone XProtect Management Client et dans Security / Roles (voir image)
- Définissez le groupe Windows BUILTIN\Administrators.
En définissant le groupe BUILTIN\Administrators, vous pourrez vous authentifier sur le nœud secondaire avec un administrateur Windows local.
Sinon aucune authentification ne sera possible avec un compte Windows local sur le secondaire après un basculement.
C'est parce que le groupe BUILTIN\Administrators a le même SID sur les deux nœuds. Pour les autres groupes locaux ou utilisateurs locaux, l'authentification ne sera pas possible sur le secondaire car les SID sont différents entre les deux nœuds même s'ils portent le même nom.
- Créez un utilisateur avec une "Basic authentication" (Admin dans l'image) pour être sûr de vous ré-authentifier sur le nœud secondaire après un basculement. Pour la "Basic authentication", l'utilisateur/mot de passe est stocké dans la base de données SQL et sera récupéré sur le nœud secondaire après un basculement.
13. Dans le bureau du nœud 2, enregistrez le serveur de gestion sur l'adresse IP virtuelle
- Choisissez Server Configurator dans la barre des tâches du nœud 2 et enregistrez-le sur l'adresse IP virtuelle (voir image).
- Puis arrêtez les services avec Stop Management Server Service.
Le compte de l'utilisateur exécutant l'enregistrement sur le nœud 2 doit avoir le rôle d'administrateur dans Milestone sur le nœud 1.
Si c'est l'administrateur local sur le nœud 2 qui effectue l'enregistrement, le groupe Windows BUILTIN\Administrators
doit avoir été défini dans Management Client / Security / Roles à l'étape 12. Sinon, l'enregistrement ne fonctionnera pas.
Cette procédure enregistre le serveur de gestion du nœud 2 dans la base de données SQL (exécutée sur le nœud 1) via une connexion à l'adresse virtuelle.
14. 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.
15. Vérifiez que le cluster est opérationnel
- Vérifiez que le cluster est vert/vert avec les services Milestone XProtect et SQL exécutés sur le nœud PRIM et ne s'exécutant pas sur le nœud SECOND.
- Seules les modifications à l'intérieur des fichiers sont répliquées en temps réel dans cet état.
- Enregistrez les serveurs d'enregistrement avec l'adresse IP virtuelle.
- Connectez Milestone Management Client et Milestone Smart Client sur l'adresse IP virtuelle.
Les composants qui sont clients des services Milestone XProtect et SQL doivent être configurés avec l'adresse IP virtuelle. La configuration peut se faire avec un nom DNS (si un nom DNS a été créé et associé à l'adresse IP virtuelle).
16. 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).
- Et avec Microsoft Management Console (MMC) sous Windows ou avec des lignes de commande sous Linux, vérifiez le basculement des services Milestone XProtect et SQL (arrêtés sur le nœud 1 dans le script
stop_prim
et démarrés sur le nœud 2 dans le scriptstart_prim
).
Si ALONE (vert) n’est pas atteint sur le nœud 2, analysez pourquoi avec le log du module du nœud 2.
- cliquez sur
node2
pour afficher le journal du module. - exemple de journal de module SQL Server où le nom du service dans
start_prim
n'est pas valide. Le processus sqlserver.exe est surveillé mais comme il n'est pas démarré, à la fin le module s'arrête.
Si tout va bien, lancez un démarrage du nœud 1, qui resynchronisera les répertoires répliqués depuis le nœud 2.
Si les choses vont mal, arrêtez le nœud 2 et forcez le démarrage en tant que primaire du nœud 1, qui redémarrera avec ses données localement saines au moment de l'arrêt.
17. 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.
18. 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.
- Dans la configuration du module, cliquez sur
Advanced configuration
(voir image) pour modifieruserconfig.xml
. - Déclarez le checker splitbrain en ajoutant dans la section
<check>
deuserconfig.xml
:<service> ... <check> ... <splitbrain ident="witness" exec="ping" arg="IP du witness"/> </check>
- 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
).
Paramètres :
ident="witness"
identifie le témoin (witness) avec un nom de ressource :splitbrain.witness
. Vous pouvez modifier cette valeur pour identifier le témoin.exec="ping"
fait référence au code ping à exécuter. Ne modifiez pas cette valeur.arg="witness IP"
est un argument pour le ping. Changez cette valeur avec l'IP du témoin (un élément robuste, typiquement un routeur).
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 Milestone XProtect 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 dans le module milestone.safe
userconfig.xml (description dans le guide de l'utilisateur)
<!DOCTYPE safe>
<safe>
<service mode="mirror" failover="on" defaultprim="alone" loop_interval="24" maxloop="3">
<!-- Heartbeat Configuration -->
<!-- Names or IP addresses on the default network are set during initialization in the console -->
<heart timeout="30000" pulse="700">
<heartbeat name="default" ident="flow">
</heartbeat>
</heart>
<!-- Virtual IP Configuration -->
<!-- Define the name or IP address of your virtual server
-->
<vip>
<interface_list>
<interface check="on" arpreroute="on">
<real_interface>
<virtual_addr addr="VIRTUAL-IP-ADDRESS" where="one_side_alias" />
</real_interface>
</interface>
</interface_list>
</vip>
<!-- Software Error Detection Configuration -->
<errd polltimer="10">
<!-- SQL Server process -->
<proc name="sqlservr.exe" atleast="1" class="prim" action="restart" />
</errd>
<!-- File Replication Configuration -->
<!-- Adapt with the directory of your SQL Server database and logs
-->
<rfs async="second" acl="off" nbrei="3" roflags="0x10">
<replicated dir="C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA" mode="read_only" />
<replicated dir="C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Log" mode="read_only" />
</rfs>
<!-- User scripts activation -->
<user logging="userlog" forcestoptimeout="300" nicestoptimeout="300" />
</service>
</safe>
start_prim.cmd
@echo off
rem Script called on the primary server for starting application services
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem stdout goes into Application log
echo "Running start_prim %*"
set res=0
rem TODO: set to manual the start of services when the system boots
net start "W3SVC"
net start "MSSQLServer"
if not %errorlevel% == 0 (
%SAFE%\safekit printi "SQL Server (MSSQLServer) start failed"
) else (
%SAFE%\safekit printi "SQL Server (MSSQLServer) started"
)
"%SAFEBIN%\sleep" 10
net start "Milestone XProtect Management Server"
if not %errorlevel% == 0 (
%SAFE%\safekit printi "Milestone XProtect Management Server start failed"
) else (
%SAFE%\safekit printi "Milestone XProtect Management Server started"
)
"%SAFEBIN%\sleep" 10
net start "Milestone XProtect Log Server"
if not %errorlevel% == 0 (
%SAFE%\safekit printi "Milestone XProtect Log Server start failed"
) else (
%SAFE%\safekit printi "Milestone XProtect Log Server started"
)
net start "MilestoneEventServerService"
if not %errorlevel% == 0 (
%SAFE%\safekit printi "MilestoneEventServerService start failed"
) else (
%SAFE%\safekit printi "MilestoneEventServerService started"
)
net start "Milestone XProtect Data Collector Server"
if not %errorlevel% == 0 (
%SAFE%\safekit printi "Milestone XProtect Data Collector Server start failed"
) else (
%SAFE%\safekit printi "Milestone XProtect Data Collector Server started"
)
set res=%errorlevel%
if %res% == 0 goto end
:stop
"%SAFE%\safekit" printe "start_prim failed"
rem uncomment to stop SafeKit when critical
rem "%SAFE%\safekit" stop -i "start_prim"
:end
stop_prim.cmd
@echo off
rem Script called on the primary server for stopping application services
rem For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"
rem ----------------------------------------------------------
rem
rem 2 stop modes:
rem
rem - graceful stop
rem call standard application stop with net stop
rem
rem - force stop (%1=force)
rem kill application's processes
rem
rem ----------------------------------------------------------
rem stdout goes into Application log
echo "Running stop_prim %*"
set res=0
rem default: check mssql stopped on forcestop
if "%1" == "force" goto check
%SAFE%\safekit printi "Stopping Milestone XProtect Corporate Data Collector Server"
net stop "Milestone XProtect Data Collector Server" /Y
%SAFE%\safekit printi "Stopping Milestone Event Server Service"
net stop "MilestoneEventServerService" /Y
%SAFE%\safekit printi "Stopping Milestone Log Server Service"
net stop "Milestone XProtect Log Server" /Y
%SAFE%\safekit printi "Stopping Milestone XProtect Corporate Management Server"
net stop "Milestone XProtect Management Server" /Y
%SAFE%\safekit printi "Stopping SQL Server (MSSQLSERVER)"
net stop "MSSQLSERVER" /Y
"%SAFEBIN%\sleep" 10
net stop "W3SVC" /Y
rem Wait a little for the real stop of services
"%SAFEBIN%\sleep" 10
if %res% == 0 goto end
"%SAFE%\safekit" printe "stop_prim failed"
goto end
:check
call :checksrv "MSSQLSERVER"
goto end
:checksrv
set SERVICE=%1
net stop %SERVICE% /Y
if NOT ERRORLEVEL 1 goto end
sc query state= inactive | findstr %SERVICE%
if NOT ERRORLEVEL 1 goto end
"%SAFE%\safekit" stop -i "stop_prim: service not stopped"
exit
:end
Etape 1. Réplication en temps réel
Le serveur 1 (PRIM) exécute l'application Milestone XProtect et SQL. Les utilisateurs sont connectés à une adresse IP virtuelle. Seules les modifications faites par l'application à 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 les noms des répertoires à répliquer dans SafeKit. Il n'y a pas de pré-requis sur l'organisation du disque. Les répertoires peuvent se trouver sur le disque système.
Etape 2. Basculement automatique
Lorsque le serveur 1 est défaillant, SafeKit bascule l'adresse IP virtuelle sur le serveur 2 et redémarre automatiquement l'application Milestone XProtect et SQL. L'application retrouve les fichiers répliqués à jour sur le serveur 2.
L'application poursuit son exécution sur le serveur 2 en modifiant localement ses fichiers qui ne sont plus répliqués vers le serveur 1.
Le temps de basculement est égal au temps de détection de la panne (30 secondes par défaut) et au temps de relance de l'application.
Etape 3. Réintégration après panne
A la reprise après panne du serveur 1 (réintégration du serveur 1), SafeKit resynchronise automatiquement les fichiers de ce serveur à partir de l'autre serveur.
Seuls les fichiers modifiés sur le serveur 2 pendant l'inactivité du serveur 1 sont resynchronisés.
La réintégration du serveur 1 se fait sans arrêter l'exécution de l'application Milestone XProtect et SQL sur le serveur 2.
Etape 4. Retour à la normale
Après la réintégration, les fichiers sont à nouveau en mode miroir comme à l'étape 1. Le système est en haute disponibilité avec l'application Milestone XProtect et SQL qui s'exécute sur le serveur 2 et avec réplication temps réel des modifications vers 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.
Plus d'information sur une coupure de courant et un isolement du réseau dans un cluster.
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.
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...
Logiciel de gestion des bâtiments (BMS)
Logiciel de gestion vidéo (VMS)
Contrôle d'accès électroniques (EACS)
Logiciels SCADA (Industrie)
- Demonstration
- Examples of redundancy and high availability solution
- Evidian SafeKit sold in many different countries with Milestone
- 2 solutions: virtual machine cluster or application cluster
- Distinctive advantages
- More information on the web site
Cluster miroir d'Evidian SafeKit avec réplication de fichiers temps réel et reprise sur panne |
|
Économisez avec 3 produits en 1 |
|
Configuration très simple |
|
Réplication synchrone |
|
Retour d'un serveur tombé en panne totalement automatisé (failback) |
|
Réplication de n'importe quel type de données |
|
Réplication de fichiers vs réplication de disque |
|
Réplication de fichiers vs disque partagé |
|
Sites distants et adresse IP virtuelle |
|
Split brain et quorum En savoir plus > |
|
Cluster actif/actif |
|
Solution de haute disponibilité uniforme |
|
|
|
Cluster ferme d'Evidian SafeKit avec load balancing et reprise sur panne |
|
Pas de load balancer, ni de serveur proxy dédié, ni d'adresse Ethernet multicast spéciale En savoir plus > |
|
Toutes les fonctionnalités de clustering En savoir plus > |
|
Sites distants et adresse IP virtuelle En savoir plus > |
|
Solution de haute disponibilité uniforme En savoir plus > |
|
|
|
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 |
|
|
|
|
|
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 > |
Evidian SafeKit 8.2
Toutes les nouvelles fonctionnalités par rapport à la 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
Information produit
Training
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