Vous êtes sur la page 1sur 16

1

AlwaysOn Availability (AAG)


Groups sous SQL Server 2012
(v5.13)

Tutorial conu et rdig par Michel de CREVOISIER Fvrier 2013









2

SOURCES




AAG Overview :
https://www.simple-talk.com/sql/database-administration/sql-server-2012-alwayson/
http://blogs.msdn.com/b/saponsqlserver/archive/2012/02/07/sql-server-2012-alwayson-what-is-
it.aspx
http://technet.microsoft.com/en-us/library/ff877884.aspx
http://technet.microsoft.com/en-us/library/hh510230.aspx

AAG Prrequis :
http://technet.microsoft.com/en-us/library/ff878487.aspx

AAG Listener :
http://technet.microsoft.com/en-us/library/hh213080.aspx
http://technet.microsoft.com/en-us/library/hh213417.aspx

WSFC with AAG :
http://msdn.microsoft.com/fr-fr/library/hh270278.aspx
http://technet.microsoft.com/en-us/library/dn466519.aspx

Questions et rcapitulatif :
http://blogs.msdn.com/b/srgolla/archive/2012/09/17/sql-server-2012-always-on-faqs.aspx
http://blogs.msdn.com/b/arvindsh/archive/2012/09/13/alwayson-connectivity-cheat-sheet.aspx

Troubleshooting :
http://technet.microsoft.com/en-us/library/ff878308.aspx
http://blogs.msdn.com/b/clustering/archive/2013/12/13/9067582.aspx



AAG sur Azure

AAG on Azure :
http://blogs.msdn.com/b/sqlalwayson/archive/2013/01/23/test-lab-create-an-alwayson-availability-
group-in-windows-azure-end-to-end.aspx
http://msdn.microsoft.com/en-us/library/dn249504.aspx
http://msdn.microsoft.com/en-us/library/jj870959.aspx

AAG listener on Azure :
http://blogs.msdn.com/b/igorpag/archive/2013/09/02/sql-server-2012-alwayson-availability-group-
and-listener-in-azure-vms-notes-details-and-recommendations.aspx
http://msdn.microsoft.com/en-us/library/windowsazure/dn376546.aspx




3

INDEX


SOURCES .............................................................................................................................................................. 2
INDEX ................................................................................................................................................................... 3
1. AlwaysOn Availability Groups (AAG) ......................................................................................................... 4
1.1 Prsentation ........................................................................................................................................ 4
1.2 Fonctionnement .................................................................................................................................. 4
1.3 Licence ................................................................................................................................................. 5
1.4 Synoptique ........................................................................................................................................... 5
2. Installation de SQL Server 2012.................................................................................................................. 7
2.1 Prrequis.............................................................................................................................................. 7
2.2 Installation et configuration ................................................................................................................ 7
2.3 Autorisations ....................................................................................................................................... 7
3. Installation du cluster WSFC ................................................................................................................. 7
4. Mise en place de SQL AlwaysOn Availability Groups (AAG) ..................................................................... 8
4.1 Activation dAAG ................................................................................................................................. 8
4.2 Prparation des bases de donnes ..................................................................................................... 8
4.3 Rgle de pare-feu AAG ........................................................................................................................ 9
4.4 Groupe de disponibilit ....................................................................................................................... 9
4.5 Cration dun listener .................................................................................................................. 13
5. Gestion et supervision .............................................................................................................................. 14
5.1 Tableau de bord ................................................................................................................................. 14
5.2 Connexion via Management Studio .................................................................................................. 14
5.3 Gestion via la console WSFC .............................................................................................................. 15
6. Erreurs ....................................................................................................................................................... 16
6.1 Conflict name..................................................................................................................................... 16
6.2 Creating availability group failed [] ................................................................................................. 16


4

1. AlwaysOn Availability Groups (AAG)

1.1 Prsentation

Apparue avec SQL Server 2012, la technologie AAG a pour objectifs de minimiser les temps
dinterruption (RTO) et de rcupration des donnes (RPO). Pour cela, AAG offre la possibilit de mise
en place dinfrastructures granulaires et hautement disponibles. Par ailleurs, il se veut comme le
remplaant de la technologie mirroring apparue avec SQL Server 2005 et largement utilise durant
ces dernires annes.

Dune faon plus gnrale, AAG supprime la complexit de mise en place des solutions de haute-
disponibilit telles que le log shipping , la rplication ou le mirroring en offrant une solution
de redondance purement logicielle. De la mme faon, elle vient corriger les diffrents SPOF
prsents dans la fonctionnalit mirroring tout en tenant compte des diffrents retours
utilisateurs. A savoir :
Disposer de plus dun serveur miroir
Possibilit de consulter en temps rel un miroir
Excuter des sauvegardes depuis un serveur miroir
Ajout de plusieurs bases de donnes au sein du processus de mirroring
Jongler entre des rplications synchrones et asynchrones entre les diffrents serveurs
Acclrer le temps de bascule
Etendre les capacits de rplication des donnes
Impossibilit dutiliser des subnets diffrents

Tous ces retours ont bien t pris en compte et voici donc les apports principaux dAAG :
Disposer de quatre serveurs miroirs secondaires
Deux des miroirs peuvent fonctionner en synchrone et les deux autres en asynchrone
Il est possible de possible de consulter en temps rel un miroir
Plusieurs bases de donnes peuvent tre incorpores au processus de rplication
Support du multi-subnet
Le point de basculement du cluster nest plus situ au niveau de linstance sinon au niveau de
la base de donnes
Excution de la sauvegarde depuis un miroir

1.2 Fonctionnement

Dun point de vue technique, AAG repose sur le systme de clustering WSFC . Aprs avoir joint
lensemble des serveurs au cluster, vous serez en mesure de lancer le processus de rplication
permettant de synchroniser automatiquement vos diffrentes bases de donnes sur lensemble des
serveurs. Par ailleurs, vous disposerez dun point dentre unique ( listener ) permettant de vous y
connecter sans avoir vous soucier de ltat de vos serveurs.


5

1.3 Licence

Vous devrez vous acquitter des licences suivantes selon le rle de chaque serveur :
Serveur actif (primaire) : licence requise (12 licence core )
Serveur passif (secondaire) : pas besoin de licence si un seul serveur passif
Autre serveurs secondaires : licence requise
Guide de rfrence officiel

1.4 Synoptique

Le schma de la page suivante rsume une architecture type dans le cadre de la mise en place
dAAG au sein dune infrastructure hautement redondante :

6

Storage
SQL Servers
Datacenters
Primary
SQL 1
Synchronous
Asynchronous
Secondary
SQL 2
Asynchronous
AAG
Listener
Reporting
Paris
London Berlin
SAN 1
High speed
SAN 3
Spare
SAN 4
Backup
SAN 2
High speed
SAN replication
Replica
SQL 3
Read-only
SQL 4
Witness
AD

7

2. Installation de SQL Server 2012

2.1 Prrequis

En ce qui concerne les prrequis de SQL Server 2012, rfrez-vous au point 3 de mon tuto concernant
linstallation de SQL Server. Pour les comptes de service, il est recommand den crer un par
serveur/instance dans votre Active Directory (SVC-SQL01, ). Veillez ne surtout pas utiliser de
comptes de type VSA ou MSA (dtails au point 4.2 de mon tuto concernant la scurit de SQL Server).

Note : il est galement envisageable dutiliser des comptes MSA (Managed Service Account) ou des
gMSA pour lexcution des instances. Rfrez-vous mon tuto pour plus dinformations.

2.2 Installation et configuration

Pour les tapes dinstallation et de configuration de SQL Server sur chacun des nuds, suivez
respectivement les points 4 et 6 (instance statique) de mon tuto. Pensez placer les dossiers de
base de donnes sur des disques spars portant la mme lettre et ayant le mme chemin.

Une fois ces points effectus, pensez appliquer le Service Pack 1 ainsi que le dernier CU en date
pour SQL Server 2012. Important : si vous utilisez des serveurs SQL sous Azure, ne changez surtout
pas le port des instances, au risque de rencontrer lerreur du point 6.2.

2.3 Autorisations

Excuter cette requte PowerShell depuis votre serveur dadministration. Celle-ci permettra
dajouter les droits adquats pour le compte NT AUTHORITY sur lensemble de vos serveurs
SQL (point 11 de lapart Initialize SQL Server VM , source) :
$Session=New-PsSession ComputerName 'SQL01','SQL02','SQL03'
Invoke-Command Session $Session ScriptBlock {Invoke-SqlCmd -Query "CREATE LOGIN [NT
AUTHORITY\SYSTEM] FROM WINDOWS" -ServerInstance "."}
Invoke-Command Session $Session ScriptBlock {Invoke-SqlCmd -Query "GRANT ALTER ANY AVAILABILITY
GROUP TO [NT AUTHORITY\SYSTEM] AS SA" -ServerInstance "." }
Invoke-Command Session $Session ScriptBlock {Invoke-SqlCmd -Query "GRANT CONNECT SQL TO [NT
AUTHORITY\SYSTEM] AS SA" -ServerInstance "." }
Invoke-Command Session $Session ScriptBlock {Invoke-SqlCmd -Query "GRANT VIEW SERVER STATE TO [NT
AUTHORITY\SYSTEM] AS SA" -ServerInstance "." }


3. Installation du cluster WSFC

La technologie AAG requiert que lensemble de vos serveurs SQL soit mis en cluster au travers de la
fonctionnalit WSFC . Pour cela, suivez la procdure dcrite au sein de mon tutoriel. Si vous mettez
en place AAG sur Azure, utilisez le script fourni par Microsoft.
8

4. Mise en place de SQL AlwaysOn Availability Groups (AAG)

Maintenant que le cluster et SQL Server sont paramtrs, vous allez pouvoir passer aux tapes
dactivation et de configuration de la fonctionnalit AAG. Assurez-vous toutefois que les points
suivants ont bien t valids :
Tous les serveurs SQL sont membres du mme cluster WSFC
SQL Server 2012 est install et oprationnel sur chacun des nuds
Chaque instance SQL sexcute avec un compte de service

4.1 Activation dAAG

4.1.1 Via GUI

Pour activer AAG, clic droit sur le service de votre instance et cochez la case indique :

Redmarrez ensuite le service de linstance et rptez ces tapes sur lensemble des serveurs SQL.

4.1.2 En Power Shell

$SQL_InstanceName='MSSQLSERVER'
$server=gc env:computername
Enable-SqlAlwaysOn -Path SQLSERVER:\SQL\$server\Default -Force
Restart-Service $SQL_InstanceName

4.2 Prparation des bases de donnes

4.2.1 Cration et sauvegarde

Pour commencer, crez ou importez vos bases de donnes sur votre serveur principal. Effectuez
ensuite une sauvegarde de celles-ci (obligatoire) : clic droit sur votre base > Tasks > Backup

4.2.2 Partage du dossier (PowerShell)

Il vous faut ensuite partager le dossier o se trouvent les bases de donnes afin deffectuer la 1
re

rplication. Pour cela, attribuez les droits de chacun des comptes de service SQL sur le dossier :

New-smbshare -name $ShareName -path $SQL_DB_Dir -fullaccess ($SQLSvcAccountUsername)
icacls.exe "$SQL_DB_Dir" /grant:r ("$SQLSvcAccountUsername" + ":(OI)(CI)F")

9

4.2.3 Partage du dossier (GUI)

Permissions de partage du dossier contenant les bases de donnes synchroniser :
Compte de service de chaque instance SQL : Full control
Compte/groupe administrateur : requis pour lassistant AAG

Droits NTFS du dossier contenant les bases de donnes synchroniser :
Compte de service de chaque instance SQL : Full control

Note : un groupe contenant lensemble des comptes de service peut tre utilis afin de simplifier
lattribution des droits sur le dossier

4.3 Rgle de pare-feu AAG

En plus de la rgle de pare-feu correspondant au port de linstance statique, il est ncessaire de crer
deux rgles supplmentaires pour le service AAG sur chacun des serveurs SQL. Ces ports devront bien
sr tre renseigns durant lassistant de cration du groupe de disponibilit :
Endpoint : port TCP 5022 par dfaut (configuration au point 4.4.3)
Listener : port TCP de votre choix (configuration au point 4.5)

Pour crer ces rgles rapidement sur lensemble de vos serveurs SQL :
$SQL_AAG_listener = <port X>
$SQL_AAG_endpoint = <port Y>
New-NetFirewallRule -DisplayName "SQL AAG Listener" -Direction Inbound -LocalPort
$SQL_AAG_listener_port -Protocol TCP -Action Allow -group "SQL Server" | out-null
New-NetFirewallRule -DisplayName "SQL AAG Endpoint" -Direction Inbound -LocalPort
$SQL_AAG_endpoint_port -Protocol TCP -Action Allow -group "SQL Server" | out-null

4.4 Groupe de disponibilit

4.4.1 Cration du groupe

Pour lancer lassistant de cration dun groupe de disponibilit, effectuez un clic droit sur AlwaysOn
High Availability > New Availability group Wizard :


10

Indiquez un nom pour le groupe :

Indiquez les bases de donnes inclure dans le processus de rplication AAG :

4.4.2 Configuration des rplicas

Ajoutez les serveurs souhaits et dfinissez leur type (synchrone ou asynchrone):

4.4.3 Configuration des endpoints

Dans lapart Endpoints, indiquez le port souhait. Pour les rgles de pare-feu associes, rfrez-
vous au point 4.3 :


11

4.4.4 Configuration des backups

Indiquez vos prfrences en termes de backup :

4.4.5 Configuration de la rplication initiale

Indiquez le mode de synchronisation initiale souhait. Dans notre cas nous opterons pour une
rplication automatique des bases de donnes partir de lemplacement partag au point 4.2.2 :

4.4.6 Validation des paramtres

Pour terminer, et avant dactiver dfinitivement le mcanisme de rplication AAG, assurez-
vous davoir :
Plac les dossiers de base de donnes dans des disques diffrents du systme et davoir utilis
les mmes chemins et noms de dossier
Partag le dossier contenant vos bases de donnes avec les bons droits (point 4.2.2)

12


Une fois tous les prrequis valids, lancez la configuration du groupe de disponibilit :



13

4.5 Cration dun listener

Pour crer un listener, clic droit sur votre groupe > Add Listener :

Vous aurez alors le choix entre lui attribuer une IP statique ou dynamique. La dernire solution peut
savrer intressante si jamais votre groupe devait changer de Datacenter et donc changer de sous-
rseau. Attention, le port devra tre celui cr au point 4.3 et il ne peut exister quun seul listener
par groupe :

Note : une entre DNS sera automatiquement cre la fin de lassistant



14

5. Gestion et supervision

5.1 Tableau de bord

Pour accder au tableau de bord AAG, connectez-vous une instance dun serveur > AlwaysOn High
Availability > Show dashboard.

5.2 Connexion via Management Studio

Pour vous connecter au groupe de disponibilit via SQL Server Management Studio, utilisez le nom
et le port du listener renseigns au point 4.5 sous la forme <listener>,<port> . Ces lments seront
galement intgrer par vos dveloppeurs dans les connexion string de vos applicatifs mtiers.

Vous obtiendrez ainsi un accs direct pour vos applications :


15

5.3 Gestion via la console WSFC

Vous pouvez galement consulter les informations concernant ltat du groupe de disponibilits ainsi
que ses ressources associes en consultant lapart Roles de la console WSFC :


16

6. Erreurs

6.1 Conflict name

Cette erreur apparait lors de la cration dun listener. Elle est due un conflit de noms avec le VCO
(Virtual Computer Object). Des solutions sont disponibles ici et ici.

6.2 Creating availability group failed []

Cette erreur sest produit dans mon cas sur Azure lorsque je modifiais le groupe de disponibilit en
ayant pralablement altr la configuration de linstance SQL par dfaut :




Nhsitez pas menvoyer vos commentaires ou retours ladresse suivante :
m.decrevoisier A-R-0-B-A-5 outlook . com

Soyez-en dores et dj remerci