Hanwha SSM (Samsung Security Manager) : le cluster de haute disponibilité le plus simple avec réplication synchrone et tolérance aux pannes

Hanwha SSM : le cluster de haute disponibilité le plus simple avec réplication synchrone et tolérance aux pannes

Evidian SafeKit apporte la haute disponibilité à Hanwha SSM, le système de vidéosurveillance. Cet article explique comment mettre en œuvre rapidement un cluster Hanwha SSM sans disque partagé et sans compétences spécifiques. Le module de haute disponibilité hanwha_ssm.safe et un essai gratuit sont offerts dans la section installation.

Notez que vous pouvez mettre en œuvre avec le même produit la réplication en temps réel et le basculement d'autres applications (base de données ou autre) : voir d'autres exemples de modules miroirs ici.

Cette solution de clustering est reconnue comme la plus simple à mettre en œuvre par nos clients et partenaires. C'est également une solution complète qui 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 le passage d'update serveur par serveur et les erreurs humaines (40% des problèmes) grâce à sa simplicité d'administration.

Comment le logiciel Evidian SafeKit met en œuvre simplement la haute disponibilité de Hanwha SSM avec réplication synchrone temps réel et tolérance aux pannes sans disque partagé

Comment Evidian SafeKit met en œuvre la haute disponibilité de Milestone XProtect avec réplication temps réel et tolérance aux pannes

Sur la figure précédente, le serveur 1 / PRIM exécute les services Hanwha SSM. Les utilisateurs sont connectés à l'adresse IP virtuelle du cluster miroir. SafeKit réplique les fichiers ouverts par les services Hanwha SSM en temps réel. Seules les modifications apportées aux fichiers sont répliquées sur le réseau, limitant ainsi le trafic (réplication de fichiers au niveau octet). Les noms des répertoires de fichiers contenant les données des services Hanwha SSM sont simplement configurés dans SafeKit. Il n'existe pas de pré-requis sur l'organisation des disques entre les deux serveurs. Les répertoires à répliquer peuvent se trouver dans le disque système. SafeKit met en œuvre une réplication synchrone sans perte de données en cas de panne, contrairement à une réplication asynchrone.

En cas de défaillance du serveur 1, il y a un basculement automatique sur le serveur 2 avec redémarrage des services Hanwha SSM. Ensuite, lorsque le serveur 1 est redémarré, SafeKit met en œuvre son retour automatique dans le cluster avec la réintégration des données sans arrêter les services Hanwha SSM sur le serveur 2. Enfin, le système retourne à la réplication synchrone entre le serveur 2 et le serveur 1. L'administrateur peut décider d'échanger le rôle du primaire et du secondaire pour revenir à un serveur 1 qui exécute les services Hanwha SSM. Ce changement de rôle peut également être fait automatiquement par configuration.

Démonstration d'un module miroir

Cette démonstration montre la configuration d'un module miroir générique mirror.safe avec Micorosft SQL Server mais la configuration est la même avec d'autres applications. Notez qu'avec le module hanwha_ssm.safe à la place du module générique, les scripts de redémarrage sont préconfigurés pour Hanwha SSM.

Clients

Différenciateurs clés de la solution de réplication et de haute disponibilité Hanwha SSM avec le cluster miroir d'Evidian SafeKit

Cluster miroir d'Evidian SafeKit avec réplication de fichiers temps réel et reprise sur panne

Toutes les fonctionnalités de clustering All clustering features

Like  La solution inclut toutes les fonctionnalités de clustering: surveillance de la défaillance des serveurs, surveillance de la défaillance réseau, surveillance de la défaillance logicielle, redémarrage automatique de Hanwha SSM avec un temps de reprise rapide, une adresse IP virtuelle basculée en cas de panne pour rerouter automatiquement les clients

Dislike  Ce n'est pas le cas avec les solutions de réplication pure comme la réplication au niveau base de données

Dislike  Un redémarrage rapide de Hanwha SSM n'est pas assuré avec une réplication complète de machines virtuelles. En cas de panne d'un hyperviseur, une machine virtuelle doit être rebootée sur un nouvel hyperviseur avec un temps de redémarrage inconnu

Like   La configuration du cluster est très simple et réalisée au moyen d'un module de haute disponibilité applicatif. Il n'y a pas de contrôleur de domaine ou d'Active Directory à configurer sur Windows. La solution fonctionne sur Windows et Linux

Like   D'autres services et d'autres répertoires répliqués peuvent être ajoutés au module pour compléter la solution de haute disponibilité SafeKit / Hanwha SSM

Réplication synchrone Synchronous replication

Like  La réplication en temps réel est synchrone sans perte de données en cas de panne

Dislike  Ce n'est pas le cas avec une réplication asynchrone

Retour d'un serveur tombé en panne totalement automatisé (failback) Automatic failback

Like  Suite à une panne lorsqu'un serveur reboot, le retour du serveur tombé en panne se fait de manière totalement automatique dans le cluster avec une resynchronisation de ses données et sans arrêter Hanwha SSM sur le seul serveur restant

Dislike  Ce n'est pas le cas avec la plupart des solutions de réplication particulièrement celles avec une réplication au niveau base de données. Des opérations manuelles sont requises pour resynchroniser le serveur défaillant. Il peut être même nécessaire d'arrêter Hanwha SSM sur le seul serveur restant

Réplication de n'importe quel type de données

Like  La réplication fonctionne pour Hanwha SSM mais aussi pour n'importe quel fichier qui doit-être répliqué

Dislike  Ce n'est pas le cas pour la réplication au niveau base de données

Réplication de fichiers vs réplication de disque File replication vs disk replication

Like  La réplication est basée sur des répertoires de fichiers qui peuvent être localisés n'importe où (même dans le disque système)

Disike  Ce n'est pas le cas avec la réplication de disque où une configuration spéciale de Hanwha SSM est nécessaire pour placer les données applicatives dans un disque spécial

Réplication de fichiers vs disque partagé File replication vs shared disk

Like  Les serveurs peuvent être placés dans deux sites distants

Dislike  Ce n'est pas le cas avec les solutions à disque partagé

Sites distants Remote sites

Like  Toutes les fonctionnalités de clustering SafeKit fonctionnent pour 2 serveurs sur des sites distants. Les performances de la réplication dépendent de la latence d'interconnexion pour la réplication synchrone en temps réel et de la bande passante pour la resynchronisation des données sur un serveur défaillant.

Like   Si les deux serveurs sont connectés au même réseau IP via un réseau local étendu entre deux sites distants, l'adresse IP virtuelle de SafeKit fonctionne avec une redirection au niveau 2

Like   Si les deux serveurs sont connectés à deux réseaux IP différents entre deux sites distants, l'adresse IP virtuelle peut être configurée au niveau d'un load balancer. SafeKit propose un "health check": le load balancer est configuré avec une URL gérée par SafeKit qui renvoie OK sur le serveur primaire et NOT FOUND sinon. Cette solution est implémentée pour SafeKit dans le Cloud, mais elle peut être également mise en œuvre avec un load balancer sur site

Quorum Quorum

Like   Avec des sites distants, la solution fonctionne avec seulement 2 serveurs et pour le quorum (isolation réseau), un simple split brain checker vers un routeur est offert pour supporter une seule exécution

Dislike  Ce n'est pas le cas pour la plupart des solutions de clustering où un 3ième serveur est nécessaire pour le quorum

Solution de haute disponibilité uniforme Uniform high availability solution

Like  SafeKit implémente un cluster miroir avec une réplication et une reprise sur panne. Mais il implémente aussi un cluster ferme avec load balancing et reprise sur panne. Ainsi une architecture N-tiers peut-être rendue hautement disponible et load balancée avec la même solution sur Windows et Linux (même installation, configuration, administration avec la console SafeKit ou les commandes en ligne). Ceci est unique sur le marché

Dislike  Ce n'est pas le cas avec une architecture mixant des technologies différentes pour le load balancing, la réplication et la reprise sur panne

FAQ sur Evidian SafeKit [+]

Installation de SafeKit pour la haute disponibilité de Hanwha SSM avec réplication synchrone et basculement

Installation du package sur Windows

Sur les deux serveurs Windows

Instructions de configuration

La configuration est présentée avec la console web connectée à 2 serveurs Windows.

Important : toute la configuration est réalisée à partir d'un seul navigateur.

Lancez la console Web dans un navigateur en vous connectant à http://localhost:9010 (image suivante)

Démarrer la console Web SafeKit pour configurer Hanwha SSM

Entrez l'adresse IP du premier nœud et cliquez sur Confirm (image suivante)

Console Web SafeKit - premier nœud dans le cluster Hanwha SSM

Cliquez sur New node et entrez l'adresse IP du deuxième nœud (image suivante)

Console Web SafeKit - second nœud dans le cluster Hanwha SSM

Cliquez sur la disquette rouge pour sauvegarder la configuration (image précédente)

Dans l'onglet Configuration, cliquez sur hanwha_ssm.safe (xxx.safe dans l'image suivante) puis entrez hanwha_ssm comme nom du module et cliquez sur Confirm (la console trouve hanwha_ssm.safe dans le répertoire demo/ que vous avez précédemment rempli)

Console Web SafeKit - démarrer la configuration des services Hanwha SSM  console Web SafeKit - entrez le nom du module Hanwha SSM

Cliquez sur Validate (image suivante)

Console Web SafeKit - entrez les nœuds du module Hanwha SSM

Modifiez le chemin des répertoires répliqués uniquement si nécessaire (image suivante) et entrez une adresse IP virtuelle. Une adresse IP virtuelle est une nouvelle adresse IP inutilisée dans le même réseau IP que les adresses IP des deux nœuds. L'adresse IP virtuelle bascule automatiquement en cas de panne.

Console Web SafeKit - entrer les paramètres du module Hanwha SSM

Pour information:

Cliquez sur Validate (image précédente)

Console Web SafeKit - arrêtez le module Hanwha SSM avant la configuration

Cliquez sur Configure (image précédente)

Console Web SafeKit - vérifier le message succès vert de la configuration du module Hanwha SSM

Vérifiez le message succès vert sur les deux serveurs et cliquez sur Next (image précédente).

Console Web SafeKit - sélectionnez le nœud Hanwha SSM avec les données à jour

Sélectionnez le nœud avec les répertoires répliqués les plus récents et cliquez sur Start it pour effectuer la première resynchronisation dans la bonne direction (image précédente). Avant cette opération, nous vous suggérons de faire une copie des répertoires répliqués avant de démarrer le cluster pour éviter toute erreur.

Console Web SafeKit - le premier nœud Hanwha SSM démarre en tant que primaire et est seul

Démarrer le deuxième nœud (image précédente) qui devient SECOND vert (image suivante) après la resynchronisation de tous les répertoires répliqués (copie binaire du nœud 1 vers le nœud 2).

console Web SafeKit - le second nœud Hanwha SSM démmarre en tant que SECOND

Le cluster est opérationnel avec les services Hanwha SSM s'exécutant sur le nœud PRIM et ne s'exécutant pas sur le nœud SECOND (image précédente). Seules les modifications à l'intérieur des fichiers sont répliquées en temps réel dans cet état.

Attention, les composants qui sont clients des services Hanwha SSM doivent être configurés avec l'adresse IP virtuelle. La configuration peut être effectuée avec un nom DNS (si un nom DNS a été créé et associé à l'adresse IP virtuelle).

Tests

Vérifiez avec la console Microsoft Management Console (MMC) que les services Hanwha SSM ont été démarrés sur le serveur primaire par le script start_prim et arrêtés sur le serveur secondaire par le script stop_prim.

Arrêtez le nœud PRIM en faisant défiler le menu du nœud primaire et en cliquant sur Stop. Vérifiez qu'il y a un basculement sur le nœud SECOND. Et avec la console Microsoft Management Console (MMC), vérifiez le basculement des services Hanwha SSM (arrêtés et démarrés dans les scripts stop_prim et start_prim) .

Journaux d'évènements du module et de l'application

Pour voir le journal du module sur le serveur primaire qui contient les évènements dans le cluster (image suivante):

Console Web SafeKit - Journal du module du serveur Hanwha SSM PRIM

Pour voir le journal applicatif du serveur primaire qui contient les messages de sortie des scripts de redémarrage stat_prim et stop_prim (image suivante) :

Console Web SafeKit - Application log du serveur Hanwha SSM PRIM

Pour voir les journaux du serveur secondaire (image précédente), cliquez à gauche sur W12R2server75/SECOND (il deviendra bleu) et répétez les mêmes opérations. Vous trouverez dans le log du module secondaire le volume et le temps de réintégration des données répliquées.

Configuration avancée

Dans l'onglet Advanced Configuration (image suivante), vous pouvez modifier les fichiers internes au module : bin/start_prim et bin/stop_prim et conf/userconfig.xml (image suivante sur le côté gauche). Si vous faites des changements dans les fichiers internes ici, vous devez appliquer la nouvelle configuration par un clic droit sur l'icône bleue/xxx sur le côté gauche (image suivante) : l'interface vous permettra de redéployer les fichiers modifiés sur les deux serveurs.

Console Web SafeKit - Configuration avancée du module Hanwha SSM

Configure boot start (image suivante sur le côté droit) configure le démarrage automatique du module au boot du serveur. Effectuez cette configuration sur les deux serveurs une fois que la solution de haute disponibilité fonctionne correctement.

Console Web SafeKit - Démarrage automatique au boot du module Hanwha SSM

Support

Pour obtenir de l'aide sur le centre d'appel de https://support.evidian.com, prenez 2 Snaphots (2 fichiers .zip), un pour chaque serveur et téléchargez-les dans l'outil du centre d'appel (image suivante).

Console Web SafeKit - Snaphots du module Hanwha SSM pour le support

Fichiers internes au module Windows hanwha_ssm.safe

userconfig.xml

<!DOCTYPE safe>
<safe>
<service mode="mirror" defaultprim="alone" maxloop="3" loop_interval="24" failover="on">
  <!-- Heartbeat Configuration -->
  <!-- Names or IP addresses on the default network are set during initialization in the console -->
  <heart pulse="700" timeout="30000">
    <heartbeat name="default" ident="flow">
    </heartbeat>
  </heart>
  <!-- Virtual IP Configuration -->
  <!-- Replace
     * VIRTUAL_TO_BE_DEFINED by the name of your virtual server 
  -->
  <vip>
    <interface_list>
        <interface check="on" arpreroute="on"> 
	      <real_interface>
               <virtual_addr addr="VIRTUAL_TO_BE_DEFINED" where="one_side_alias" />
          </real_interface>
        </interface>
    </interface_list>
  </vip>
  <!-- Software Error Detection Configuration -->
  <errd polltimer="10">
    <!-- Samsung SSM process -->
         <proc name="pg_ctl.exe" atleast="1" action="restart" class="prim" />
         <proc name="ServiceManager.exe" atleast="1" action="restart"class="prim" />
		<!--         
			<proc name="HAServerService.exe" atleast="1" action="restart" class="prim"/>
		-->
  </errd>
  <!-- File Replication Configuration -->
  <!-- Adapt with the directory of your PostgreSQL database and logs
  -->
  <rfs async="second" acl="off" nbrei="3">
     <replicated dir="C:\PostgreSQL\9.1\data" mode="read_only">
        <notreplicated path="pg_log"/>
        <notreplicated path="postmaster.pid"/>
     </replicated>
     <replicated dir="C:\Program Files (x86)\Samsung\SSM\SystemManager\MapFile" mode="read_only"/>
  </rfs>
  <!-- User scripts activation -->
  <user nicestoptimeout="300" forcestoptimeout="300" logging="userlog" />
</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 "postgresql-9.1 - PostgreSQL Server 9.1"
if not %errorlevel% == 0 (
  %SAFE%\safekit printi "PostgreSQL (postgresql-9.1 - PostgreSQL Server 9.1) start failed"
  goto stop
) else (
  %SAFE%\safekit printi "PostgreSQL (postgresql-9.1 - PostgreSQL Server 9.1) started"
)

net start "SSM System Manager"
if not %errorlevel% == 0 (
  %SAFE%\safekit printi "SSM System Manager start failed") 
  goto stop
) else (
  %SAFE%\safekit printi "SSM System Manager started"
)

net start "SSM Watch Services Manager"
if not %errorlevel% == 0 (
  %SAFE%\safekit printi "SSM Watch Services Manager start failed"
  goto stop
) else (
  %SAFE%\safekit printi "SSM Watch Services Manager started"
)

rem net start "HA Server Service"
rem if not %errorlevel% == 0 (
rem  %SAFE%\safekit printi "HA Server Service start failed"
rem  goto stop
rem ) else (
rem  %SAFE%\safekit printi "HA Server Service started"
rem )

if %res% == 0 goto end

:stop
set res=%errorlevel%
"%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 action on force stop
if "%1" == "force" (
  %SAFE%\safekit printi "Force stop: kill processes of Samsung SSM application" 
  %SAFE%\safekit kill -name="watchservices.exe" -level="terminate"
  %SAFE%\safekit kill -name="java.exe" -argregex=".*systemmanager.*" -level="terminate"
  %SAFE%\safekit kill -name="pg_ctl.exe" -level="terminate"
  %SAFE%\safekit kill -name="postgres.exe" -level="terminate"
  %SAFE%\safekit kill -name="HAServerService.exe" -level="terminate"
  %SAFE%\safekit kill -name="systemanager.exe" -level="terminate"
  goto end
)

rem %SAFE%\safekit printi "Stopping HA Server Service"
rem net stop "HA Server Service"

%SAFE%\safekit printi "Stopping SSM Watch Services Manager"
net stop "SSM Watch Services Manager"

%SAFE%\safekit printi "Stopping SSM System Manager"
net stop "SSM System Manager"

%SAFE%\safekit printi "Stopping PostgreSQL (postgresql-9.1 - PostgreSQL Server 9.1)"
net stop "postgresql-9.1 - PostgreSQL Server 9.1"
del C:\PostgreSQL\9.1\data\postmaster.pid

rem Wait a little for the real stop of services
"%SAFEBIN%\sleep" 10

if %res% == 0 goto end

"%SAFE%\safekit" printe "stop_prim failed"

:end