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 24 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.
-
Pour synchroniser SafeKit au démarrage et à l'arrêt, sur les deux nœuds démarrez un powershell en tant qu'administrateur et tapez une seule fois
c:/safekit/private/bin/addStartupShutdown
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\demo (créez le répertoire de démonstration s'il n'existe pas).
Attention, certaines étapes spécifiques sont nécessaires pour configurer Milestone XProtect et SQL sur l'adresse IP virtuelle sinon le basculement ne fonctionne pas.
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 durant 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 depuis un seul navigateur.
Pour sécuriser la console Web, consultez 11. Sécurisation de la console Web SafeKit dans le Guide de l'utilisateur.
2. Configurez les adresses des nœuds
- Saisissez les adresses IP des nœuds.
- Ensuite, cliquez sur
Apply
pour enregistrer la configuration.
Si la couleur d'arrière-plan du nœud 1 ou du nœud 2 est 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.
Cette opération placera les adresses IP dans le fichier cluster.xml
sur les deux nœuds (plus d'information dans la formation avec la ligne de commande).
4. Configurez le module
- Choisissez un démarrage automatique 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.
- Vérifiez que les répertoires répliqués sont installés sur les deux nœuds et contiennent les données de l'application.
La réplication des données ainsi que des journaux est requise pour une base de données.
Vous pouvez ajouter de nouveaux répertoires répliqués si nécessaire. - Entrez une adresse IP virtuelle. 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. start_prim
etstop_prim
doivent contenir le démarrage et l'arrêt de l'application Milestone XProtect et SQL.
Vous pouvez ajouter de nouveaux services dans ces scripts.
Vérifiez que les noms des services dans ces scripts sont ceux installés sur les deux nœuds, sinon modifiez-les dans les scripts.- Arrêtez les services configurés dans
start_prim
sur les deux nœuds. - Sous Windows et sur les deux nœuds, avec le gestionnaire de services Windows, définissez
Boot Startup Type = Manual
pour tous les services enregistrés dansstart_prim
(SafeKit contrôle le démarrage des services dansstart_prim
).
Notez que si un nom de processus est affiché dans Process Checker, il sera surveillé avec une action de redémarrage en cas de panne. La configuration d'un nom de processus erroné entraînera l'arrêt du module juste après son démarrage.
Cette opération reportera la configuration dans les fichiers userconfig.xml
, start_prim
, stop_prim
sur les deux nœuds (plus d'informations dans le training avec la ligne de commande).
7. Accédez au bureau du nœud 1 et définissez l'adresse IP virtuelle dans les fichiers Milestone internes
Depuis Milestone 2022 R3, cette étape n'est plus utile et sera effectuée automatiquement avec "Server Configurator - Registering servers - http://virtual-IP" dans une prochaine étape.
Dans une ligne de commande Powershell en tant qu'administrateur, exécutez sur le nœud 1 ce script :
c:/safekit/modules/milestone/bin/UpdateAuthServerUri.ps1
Ce script définit l'adresse IP virtuelle dans 2 fichiers Milestone internes :
C:\ProgramData\Milestone\XProtect Management Server\ServerConfig.xml
<AuthorizationServerUri>http://<virtual-ip>/IDP</AuthorizationServerUri>
C:\Program Files\Milestone\XProtect Management Server\IIS\IDP\appsettings.json
"Authority": "http://<virtual-ip>/IDP"
Nous supposons à cette étape que l'adresse IP virtuelle a été correctement configurée dans les étapes précédentes (le script utilise l'adresse IP virtuelle saisie dans la console SafeKit et stockée dans userconfig.xml
).
Notez que la même procédure est requise lorsque Milestone est exécuté avec Microsoft Cluster, sinon il y a un problème de reconnexion des serveurs d'enregistrement : https://developer.milestonesys.com/s/article/RS-goes-offline-mode-after-switching-the-Management-Server-cluster-node.
8. Démarrez le nœud 1 en tant que nœud primaire dans la console, le nœud avec des données à jour
Nous supposons depuis l'étape 7 que le nœud 1 a les répertoires répliqués à jour.
Forcez le démarrage du nœud 1 en tant que nœud primaire. Lorsque le nœud 2 sera démarré, toutes les données du nœud 1 seront copiées 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.
On suppose également que l'application Milestone XProtect et SQL est stoppée sur le noeud 1 afin que SafeKit installe les mécanismes de réplication puis lance l'application dans le script start_prim
.
9. 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 le statut est ALONE (vert) et que l'application n'est pas démarrée, vérifiez les messages de sortie de start_prim
dans l'Application Log du nœud 1.
Si le nœud 1 n'atteint pas l'état ALONE (vert), analysez pourquoi avec le Module Log du nœud 1.
Si le cluster est dans l'état WAIT (rouge) not uptodate, STOP (rouge) not uptodate
, arrêtez le nœud WAIT et forcez son démarrage en tant que primaire.
10. 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.
Avant Milestone 2022 R3, l'enregistrement peut avoir supprimé la configuration de l'adresse IP virtuelle dans les fichiers internes de Milestone. Dans ce cas, répétez l'étape 7.
Remarque : Pour enregistrer une version antérieure à Milestone 2020 R2, utilisez Change encryption settings...
11. Dans le bureau du nœud 1 avec Milestone Management Client, définissez l'adresse IP virtuelle dans les URL pour les services et le réseau
Depuis Milestone 2022 R3, cette étape n'est plus utile et a été faite automatiquement avec "Server Configurator - Registering servers - http://virtual-IP".
Selon l'image :
- Démarrez Milestone XProtect Management Client sur le nœud 1.
- Dans le menu Tools, sélectionnez Registered Services.
- Dans la fenêtre Add/Remove Registered Services, sélectionnez un service dans la liste et cliquez sur Edit.
- Dans la fenêtre Edit Registered Service, modifiez l'adresse URL du service avec la même adresse URL mais contenant l'adresse IP virtuelle.
- Répétez ces étapes pour tous les services répertoriés dans la fenêtre.
- Dans la même fenêtre, cliquez sur Network.
- Dans la fenêtre Network Configuration, modifiez l'adresse URL du serveur avec la même adresse URL mais contenant l'adresse IP virtuelle.
12. Dans le bureau du nœud 1 avec Milestone Management Client, définissez les rôles d'administrateur pour assurer un basculement correct
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.
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).
Ouvrez Milestone XProtect Management Client et dans Security / Roles (voir image)
- Définissez le groupe Windows BUILTIN\Administrators. Ainsi, suite à un basculement, un utilisateur administrateur pourra se connecter à Milestone sur le nœud secondaire avec la "Windows authentication".
- 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.
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.
13. Accédez au bureau du nœud 2 et définissez l'adresse IP virtuelle dans les fichiers Milestone internes
Depuis Milestone 2022 R3, cette étape n'est plus utile et sera effectuée automatiquement avec "Server Configurator - Registering servers - http://virtual-IP" dans une prochaine étape.
Dans une ligne de commande Powershell en tant qu'administrateur, exécutez sur le nœud 2 ce script :
c:/safekit/modules/milestone/bin/UpdateAuthServerUri.ps1
Ce script définit l'adresse IP virtuelle dans 2 fichiers Milestone internes :
C:\ProgramData\Milestone\XProtect Management Server\ServerConfig.xml
<AuthorizationServerUri>http://<virtual-ip>/IDP</AuthorizationServerUri>
C:\Program Files\Milestone\XProtect Management Server\IIS\IDP\appsettings.json
"Authority": "http://<virtual-ip>/IDP"
14. 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.
Avec une version de Milestone inféreure à 2022 R3, l'enregistrement peut avoir supprimé la configuration de l'adresse IP virtuelle dans les fichiers internes de Milestone. Dans ce cas, répétez l'étape 13.
15. Démarrez le nœud 2
- Démarrer le nœud 2 avec son menu contextuel.
- Attendre l'état SECOND (vert).
Le nœud 2 reste dans l'état SECOND (magenta) pendant 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 Module Log du nœud 2 avec l'option verbose sans oubliez de rafraichir la fenêtre.
16. 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.
Les composants 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).
17. Configurez l'adresse IP virtuelle dans les serveurs d'enregistrement
- Soit installez les serveurs d'enregistrement, en spécifiant l'adresse IP virtuelle dans l'URL d'installation.
- Ou, côté serveurs d'enregistrement, définissez l'adresse IP virtuelle dans les champs du fichier suivant :
C:\ProgramData\Milestone\XProtect Recording Server\RecorderConfig.xml
<server><address>
<server><authorizationserveraddress>
- Connectez le "Milestone Management Client" et le "Milestone Smart Client" à l'adresse IP virtuelle.
18. Testez
- 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 SECOND qui doit devenir ALONE (vert).
- Et avec la 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 l'application Milestone XProtect et SQL n'est pas démarrée sur le nœud 2 alors que l'état est ALONE (vert ), vérifiez les messages de sortie du script start_prim
dans l'Application Log du nœud 2.
Si ALONE (vert) n'est pas atteint, analysez pourquoi avec le Module Log du nœud 2.
Journal du module
- Lisez le journal du module pour comprendre les raisons d'un basculement, d'un état d'attente etc...
Pour voir le journal du module du nœud 1 (image) :
- cliquez sur l'onglet Control
- cliquez sur node 1/PRIM sur le côté gauche pour sélectionner le serveur (il devient bleu)
- cliquez sur Module log
- cliquez sur l'icône Actualiser (flèches vertes) pour mettre à jour la console
- cliquez sur la disquette pour enregistrer le journal du module dans un fichier .txt et l'analyser dans un éditeur de texte
Cliquez sur node2 pour voir le journal du module du serveur secondaire.
Journal applicatif
- Lisez le journal applicatif pour voir les messages de sortie des scripts de redémarrage start_prim et stop_prim.
Pour voir le journal applicatif du nœud 1 (image) :
- cliquez sur l'onglet Control
- cliquez sur node 1/PRIM sur le côté gauche pour sélectionner le serveur (il devient bleu)
- cliquez sur Application Log pour voir les messages lors du démarrage et de l'arrêt des services Milestone XProtect et SQL
- cliquez sur l'icône Actualiser (flèches vertes) pour mettre à jour la console
- cliquez sur la disquette pour enregistrer le journal applicatif dans un fichier .txt et l'analyser dans un éditeur de texte
Cliquez sur le nœud 2 pour voir le journal applicatif du serveur secondaire.
Configuration avancée
- Dans l'onglet Advanced Configuration, vous pouvez modifier les fichiers internes du module : bin/start_prim et bin/stop_prim et conf/userconfig.xml.
Si vous apportez des modifications dans les fichiers internes, vous devez appliquer la nouvelle configuration par un clic droit sur l'icône/xxx sur le côté gauche (voir image) : l'interface vous permettra de redéployer les fichiers sur les deux serveurs.
Support
- Pour obtenir de l'aide, prenez 2 Snapshots SafeKit (2 fichiers .zip), un pour chaque serveur.
Si vous avez un compte sur https://support.evidian.com, téléchargez-les dans l'outil call desk.
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
Démonstration d'un cluster Milestone XProtect avec Evidian SafeKit entre deux serveurs redondants
Cette vidéo présente la section de configuration étape par étape. Certaines étapes peuvent être légèrement différentes ou manquantes dans la vidéo. Veuillez donc privilégier la section de configuration étape par étape pour une implémentation.
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 < 25 VMs répliquées ?
- Chaque VM s'exécute dans un module miroir indépendant.
- Maximum de 25 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 (quelques 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)
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 Wisenet Wave > Hanwha Wisenet SSM > |
- | ||||||||||||||||||||||||||||||
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 > |
Guide de l'utilisateur
Modules applicatifs
Release Notes
Documentation d'avant vente
Introduction
-
- Demonstration
- Examples of redundancy and high availability solution
- Evidian SafeKit sold in many different countries with Milestone
- Distinctive advantages
- More information on the web site
-
- Cluster of virtual machines
- Mirror cluster
- Farm cluster
Installation, Console, CLI
- Install and setup / pptx
- Package installation
- Nodes setup
- Upgrade
- Web console / pptx
- Cluster configuration
- Configuration tab
- Control tab
- Monitor tab
- Advanced Configuration tab
- Troubleshooting
- Command line / pptx
- Cluster administration
- Module administration
- Control commands
- Troubleshooting
Advanced configuration
- Mirror module / pptx
- Mirror's states in action
- start_prim / stop_prim scripts
- userconfig.xml
- Heartbeat (<hearbeat>)
- Virtual IP address (<vip>)
- Real-time file replication (<rfs>)
- How real-time file replication works?
- Troubleshooting
- Farm module / pptx
- Farm's states in action
- start_both / stop_both scripts
- userconfig.xml
- Farm heartbeats (<farm>)
- Virtual IP address (<vip>)
- Troubleshooting
Advanced configuration
- Checkers / pptx
- Checkers in action
- userconfig.xml
- errd checker
- intf and ip checkers
- custom checker
- splitbrain checker for a mirror module
- tcp, ping, module checkers
- Troubleshooting
Support
- Support tools / pptx
- How to analyze snapshots?
- Best practises
- Evidian support / pptx
- Get permanent license key
- Register on support.evidian.com
- Call desk