Haute disponibilité SQL Server avec réplication synchrone et tolérance aux pannes

Evidian SafeKit apporte la haute disponibilité à Microsoft SQL Server. Cet article explique comment implémenter rapidement un cluster Microsoft SQL Server sans disque partagé et sans compétences spécifiques. Un essai gratuit est offert.

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

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

Sur la figure précédente, le serveur 1 / PRIM (Windows) exécute Microsoft SQL Server (n'importe quelle édition). Les utilisateurs sont connectés à l'adresse IP virtuelle du cluster miroir. SafeKit réplique les fichiers ouverts par SQL Server 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 la base de données SQL Server 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 de SQL Server. Ensuite, lorsque le serveur 1 est redémarré, SafeKit met en œuvre son retour dans le cluster avec la réintégration de la base de données SQL Server sans arrêter SQL Server 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 SQL Server. Ce changement de rôle peut également être fait automatiquement par configuration.

Vue générale sur la configuration de la haute disponibilité SQL Server avec réplication synchrone et tolérance aux pannes

Avec SafeKit, on peut configurer soit un module applicatif ferme, soit un module applicatif miroir suivant l'architecture de haute disponibilité adaptée à l'application critique à sécuriser. Pour la haute disponibilité SQL Server avec réplication synchrone et tolérance aux pannes, le bon module est le module miroir.

Vue générale sur la configuration de la haute disponibilité SQL Server avec réplication et tolérance aux pannes

Les fichiers de configuration pour la haute disponibilité SQL Server sont donnés pour Windows ici. Ils comprennent :

1. les scripts d'arrêt et de démarrage de SQL Server,

2. le fichier de configuration userconfig.xml qui contient :

Le déploiement de la haute disponibilité de Microsoft SQL Server avec réplication synchrone et tolérance aux pannes ne nécessite aucune compétence informatique spécifique :

Fichiers de configuration SafeKit sur Windows pour la haute disponibilité SQL Server avec réplication synchrone et tolérance aux pannes

Instructions d'installation

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">
    <!-- SQL Server process -->
    <proc name="sqlservr.exe" atleast="1" action="restart" class="prim" />
    <proc name="sqlagent.exe" atleast="1" action="restart" class="prim" />
    <proc name="sqlwriter.exe" atleast="1" action="restart" class="prim" />
  </errd>
  <!-- File Replication Configuration -->
  <!-- Replace
     * YOUR_INSTANCE to set the directory of your SQL Server database and logs
  -->
  <rfs async="second" acl="off" nbrei="3">
	<replicated dir="C:\Program Files\Microsoft SQL Server\YOUR_INSTANCE\MSSQL\DATA" mode="read_only" />
	<replicated dir="C:\Program Files\Microsoft SQL Server\YOUR_INSTANCE\MSSQL\Log" 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

net start "MSSQLServer" > nul
if not %errorlevel% == 0 (
  %SAFE%\safekit printi "MSSQLServer start failed"
) else (
  %SAFE%\safekit printi "MSSQLServer started"
)

net start "SQLServerAgent" > nul
if not %errorlevel% == 0 (
  %SAFE%\safekit printi "SQLServerAgent start failed"
) else (
  %SAFE%\safekit printi "SQLServerAgent started"
)

net start "SQLWriter" > nul
if not %errorlevel% == 0 (
  %SAFE%\safekit printi "SQLWriter start failed"
) else (
  %SAFE%\safekit printi "SQLWriter started"
)

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 ----------------------------------------------------------
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 For logging into SafeKit log use:
rem "%SAFE%\safekit" printi | printe "message"

rem stdout goes into Application log
echo "Running stop_prim %*" 

set res=0

rem default: no action on forcestop
if "%1" == "force" goto end

%SAFE%\safekit printi "Stopping SQLServerAgent..."
net stop "SQLServerAgent" > nul

%SAFE%\safekit printi "Stopping MSSQLServer..."
net stop "MSSQLServer" > nul

%SAFE%\safekit printi "Stopping SQLWriter..."
net stop "SQLWriter" > nul

rem wait a little for a real stop of services
%SAFEBIN%\sleep 10

:end

Démonstration

Cette démonstration est réalisée avec Microsoft SQL Server Express.

Plus d'information sur SafeKit

Autres exemples de modules de haute disponibilité :

Modules miroirs

Windows

Linux

Microsoft SQL Servermodule Windows-
Oraclemodule Windowsmodule Linux
MySQLmodule Windowsmodule Linux
PostgreSQLmodule Windowsmodule Linux
Firebirdmodule Windowsmodule Linux
Hyper-Vmodule Windows-
Milestone XProtect (basé sur Microsoft SQL Server)module Windows-
Hanwha SSM (basé sur PostgreSQL Server)module Windows-
Module génériquemodule Windowsmodule Linux

Modules fermes

Windows

Linux

Module IISmodule Windows-
Module Apachemodule Windowsmodule Linux
Module génériquemodule Windowsmodule Linux

contact
CONTACT
Démonstration

Evidian SafeKit Prix





Livres blancs

NEWS

Pour recevoir des informations d'Evidian, veuillez remplir le formulaire suivant.