Session des Journées SQL Server 2014 - Franck Mercier
---
Mise en place d’une solution de haute disponibilité (AlwaysON) dans Azure sur plusieurs régions (ex: Europe et US)
2. #JSS2014
Les journées
SQL Server 2014
Un événement organisé par GUSS
Groupe de disponibilité dans Azure
Laurent Marzouk
Franck Mercier
3. #JSS2014
Agenda
• Présentation Cloud Azure et d’AlwaysON
• Présentation des scénarios AlwaysON AG
– Sur site, hybride (Site + Azure), dans une région Azure,
dans 2 régions Azure
• SQL Server AlwaysON AG « OnDemand »
5. #JSS2014
Qui est responsable de quoi ? Qui contrôle quoi ?
Sur site
Storage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Data
Runtime
ServiceInformatique
IaaS public
Storage
Servers
Networking
O/S
Middleware
Virtualization
Applications
Data
Runtime
FournisseurdeCloud
Clientduservice
PaaS public
FournisseurdeCloud
Clientduservice
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Runtime
Applications
SaaS public
FournisseurdeCloud
Storage
Servers
Networking
O/S
Middleware
Virtualization
Data
Runtime
Applications
6. #JSS2014
Le Continuum du Cloud Computing
Vous avez le choix dans l’évolution de votre SI !!! Cloud
hybride
Datacenter
traditionnel
Datacenter
virtualisé
Cloud
public
Cloud
privé
9. #JSS2014
SQL Server AlwaysON
• SQL Server AlwaysON Failover Cluster Instance
(AlwaysON FCI)
– Protection au niveau de l’instance (similaire au clustering)
• SQL Server AlwayON Availability Group (AlwaysON AG)
– Protection au niveau d’une ou plusieurs bases de données
– Nouveauté apportée par SQL Server 2012 et étendue avec SQL
Server 2014
– Disponible dans la version Entreprise
10. #JSS2014
SQL Server : AlwaysON Availability Group (AG)
• Repose sur WSFC* cluster.
• Plusieurs secondaires :
– 2012 : 2 synchrones, 2 asynchrones
– 2014 : 2 synchrones, 6 asynchrones
• Secondaires actifs pour :
– Déporter l’accès en lecture
– Backup, reporting….
• Niveau de protection :
– Base ou groupe de bases
• Notion de « Listener » :
– Redirection automatique
• Nouveauté 2014 :
– Indépendance des secondaires
*Windows Server Failover Clustering
13. #JSS2014
AlwaysON Availability Group hybride (sur site + IaaS)
• VPN site à site obligatoire.
• SQL AlwaysON AG
configuration :
– Un groupe de disponibilité avec 1
serveurs SQL synchrone sur site
et 1 serveur asynchrone dans
Windows Azure (IaaS).
• Paramétrage complet :
– http://msdn.microsoft.com/en-
us/library/windowsazure/jj87095
9.aspx
15. #JSS2014
AlwaysON Availability Group dans Azure (IaaS)
• Solution dans 2 régions
Azure
– Solution de haute disponibilité
répartie sur 2 Datacenter Azure
– Le nœud du second Datacenter
fait office de PRA*
– Autre cas d’usage :
• Création d’un point de
proximité (lecture seule)
*Plan de reprise d’activité
17. #JSS2014
• Création de l’infrastructure dans Azure
• Création des machines virtuelles
• Configuration du Failover Cluster
• Création du groupe de disponibilité
• Création du listener
Les grandes étapes de mise en place
18. #JSS2014
• Création de l’infrastructure dans Azure
• Création des machines virtuelles
• Configuration du Failover Cluster
• Création du groupe de disponibilité
• Création du listener
Les grandes étapes de mise en place
19. #JSS2014
• Création du service de Cloud
– Attention à la région Azure choisie
– Toutes les machines virtuelles de cette région seront
rattachées à ce service de Cloud
• Création du réseau virtuel
– Pensez à prévoir une adresse IP pour le listener
• Création d’un compte de stockage
– Attention à la région Azure choisie
– Pour stocker les « vhds » des machines virtuelles
Création de l’infrastructure dans Azure
20. #JSS2014
• Création des machines virtuelles
– DC*, File Share Witness, n machines
SQL
– Créer les machines dans le même
service de Cloud
– Créer un groupe de haute disponibilité
Azure.
Création de l’infrastructure dans Azure
*Domain Controler
21. #JSS2014
• Création de l’infrastructure dans Azure
• Création des machines virtuelles
• Configuration du Failover Cluster
• Création du groupe de disponibilité
• Création du listener
Les grandes étapes de mise en place
22. #JSS2014
• Dans les machines virtuelles :
– Création d’un Domaine Contrôleur (DC)
– Création des comptes Active Directory (AD)
• Via le portail Azure :
– Configuration du DNS du réseau virtuel Azure
• Prendre l’adresse IP de la machine virtuelle hébergeant le DC
• Dans les machines virtuelles :
– Joindre les autres machines virtuelles au domaine
– Définir les règles du firewall pour les ports SQL
Création de l’infrastructure Virtuelle
23. #JSS2014
• Création de l’infrastructure dans Azure
• Création des machines virtuelles
• Configuration du Failover Cluster
• Création du groupe de disponibilité
• Création du listener
Les grandes étapes de mise en place
24. #JSS2014
• Sur toutes les machines participant au cluster
– Installer la fonctionnalité « Failover Clustering »
• Création du cluster :
– Créer un cluster avec la première machine
– Définir une adresse IP fixe au cluster
– Mettre le cluster en ligne
– Rajouter les autres nœuds
Configuration du Failover Cluster
25. #JSS2014
• Création de l’infrastructure dans Azure
• Création des machines virtuelles
• Configuration du Failover Cluster
• Création du groupe de disponibilité
• Création du listener
Les grandes étapes de mise en place
26. #JSS2014
• Configuration des comptes SQL
– SSIS login task
– Base self contained DB (user + password)
• Configuration du service SQL
Création du groupe de disponibilité et du listener
27. #JSS2014
• Création du groupe de disponibilité
– Options pour l’initialisation via l’assistant:
• Réalisation des « backups / restore » manuels
• Réalisation des « backups / restore » automatique
– Si en mode manuel
• Faire les restaurations en mode NO-REVOVERY
– Possibilité d’automatiser l’opération via script
Création du groupe de disponibilité et du listener
28. #JSS2014
• Création de l’infrastructure dans Azure
• Création des machines virtuelles
• Configuration du Failover Cluster
• Création du groupe de disponibilité
• Création du listener (public ou interne)
Les grandes étapes de mise en place
29. #JSS2014
Création du listener (load balancing public)
• Création d’un « load balancer Azure » externe
– Ouverture des points de terminaison via PowerShell
# Création des points de terminaison
$AGNodes = "A-FranmerSQL1","A-FranmerSQL2","A-FranmerSQL3","A-FranmerSQL4“
$ServiceName = "demosqlao" # Nom du service de Cloud
$EndpointName = "SQLAOEndpoint" # Nom du point de terminaison
$EndpointPort = "55569" # Port public du point de terminaison
# Configuration d’un point de terminaison “load balancé” pour chaque noeud SQL
ForEach ($node in $AGNodes)
{
Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name $EndpointName -Protocol "TCP"
-PublicPort $EndpointPort -LocalPort $EndpointPort -LBSetName "$EndpointName-LB" -ProbePort 59999
-ProbeProtocol "TCP" -DirectServerReturn $true | Update-AzureVM
30. #JSS2014
• Au niveau du cluster
– Ajout d’une ressource « Client Access Point » (Listener)
– Définition de l’adresse IP du listener via PowerShell
– Définition du port du listener via SSMS*
Création du listener (load balancing public)
$ClusterNetworkName = "FranmerCluster" # Nom réseau du cluster
$IPResourceName = "FranmerNetwork" # Nom de la resource de l’adresse IP
$CloudServiceIP = "23.100.52.115" # Adresse IP du service de Cloud
Import-Module FailoverClusters
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple
@{"Address"="$CloudServiceIP";"ProbePort"="59999";SubnetMask="255.255.255.255";
"Network"="$ClusterNetworkName";"OverrideAddressMatch"=1;"EnableDhcp" =0}
* SQL Server Management Studio
32. #JSS2014
Création du listener (load balancing interne)
• Nouveauté
• Création d’un « load balancer Azure » interne
– Via PowerShell
$AGNodes = "<VM1>","<VM2>","<VM3>" # all availability group nodes containing replicas should be included, separated by commas
$ServiceName = "<MyCloudService>" # the name of the cloud service that contains the availability group nodes
$EndpointName = "<MyEndpoint>" # name of the endpoint
$EndpointPort = "1433" # public port to use for the endpoint
$ILBName = "<MyInternalLoadBalancer>" # chosen name for the new ILB
$SubnetName = "<MySubnetName>" # subnet name that the replicas use in the VNet
$ILBStaticIP = "<MyILBStaticIPAddress>" # static IP address for the ILB in the subnet
Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ILBName -SubnetName $SubnetName -ServiceName $ServiceName -
StaticVNetIPAddress $ILBStaticIP
# Configure a load balanced endpoint for each node in $AGNodes using ILB
ForEach ($node in $AGNodes)
{
Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name $EndpointName -LBSetName "$EndpointName-LB" -Protocol tcp
-LocalPort $EndpointPort -PublicPort $EndpointPort -ProbePort 59999 -ProbeProtocol tcp
-ProbeIntervalInSeconds 10 -InternalLoadBalancerName $ILBName | Update-AzureVM
}
34. #JSS2014
• Solution de haute disponibilité répartie entre DC
local et 1 région Azure
– Option: Améliorer la résilience
locale à l’aide d’un réplica
secondaire en mode synchrone
sur site
– Le replica asynchrone dans
Azure fait office de « Disaster
recovery » en cas de crahs site
SQL Server AlwaysON AG en mode hybride
35. #JSS2014
• Création de l’infrastructure sur site
• Création des machines virtuelles
• Création du réseau virtuel privé (VPN)
• Configuration du Failover Cluster
• Création du groupe de disponibilité
• Création du listener
Les grandes étapes de mise en place
36. #JSS2014
• Création d’un réseau virtuel personnalisé
– Nom (ex. AZURE-VNET)
– Emplacement (ex. Europe de l’Ouest)
– Option: Saisir l’IP du serveur DNS de la
plate-forme
– Cocher la case Configurer un réseau
VPN de site à site
– Sélectionner « Spécifier un nouveau
réseau local » dans le menu réseau local
Création VPN Site 2 Site (OnSite – Azure)
37. #JSS2014
• Configuration de la connectivité Site à Site
– Saisir le nom du réseau
sur site (ex. ONSITE-VNET)
– Saisir l’IP publique du routeur
– Saisir les IP de la plate-forme
sur site (ex. 10.116.x.y)
Création VPN Site 2 Site (OnSite – Azure) -suite
38. #JSS2014
• Espace d’adresse du réseau virtuel
– Saisir les IP du projet pour
Azure (ex. 10.117.x.y)
– Créer autant de subnet que
nécessaire pour la plate-forme
– Ajouter un sous-réseau de
passerelle (Tip: penser à utiliser
les IP de fin de subnet)
Création VPN Site 2 Site (OnSite – Azure) -suite
39. #JSS2014
• Création d’une passerelle
– Une fois le réseau crée, il
faut créer une passerelle
(gateway)
Cliquer sur le réseau
que vous venez de crée et
aller dans Tableau de bord
– Cliquer sur Créer une
Passerelle(en bas de la
fenêtre
– Sélectionner route Statique
et Oui (cette action prend
plusieurs minutes)
Création VPN Site 2 Site (OnSite – Azure) -suite
40. #JSS2014
• Récupération des infos
de configuration du
VPN sur le routeur
– IP Publique
– Pre-shared Key
Création VPN Site 2 Site (OnSite – Azure) -suite
42. #JSS2014
Configuration du routeur
• Configuration d’une interface tunnel
– Assigner une IP dans le même subnet que défini sur Azure Gateway Subnet
• Création d’une gateway IKE/IPSec sur le routeur, à l’aide des
pramètres suivants (dépendant du routeur, ex. pour Palo Alto):
– Interface = interface publique avec l’IP que l’on a attribuée dans Azure
– Local IP = IP donnée lors de l’étape précédente dans Azure
– Peer Type : Static
– Peer IP Address = IP publique de la gateway azure
– Pre-shared Key = la clé donnée dans azure
• Créer une route statique entre l’interface tunnel et le réseau
Azure
Création VPN Site 2 Site (OnSite – Azure) -suite
44. #JSS2014
• Pour une solution Azure de :
– Haute disponibilité
– « Disaster recovery »
SQL Server AlwaysON AG dans 2 régions Azure
45. #JSS2014
• Dans la seconde région Azure :
– Création d’un service de Cloud
– Création d’un compte de stockage
– Création d’un réseau virtuel
– Création d’une machine virtuelle associée au service
de Cloud de la seconde région
AlwaysON AG sur 2 régions Azure
46. #JSS2014
• Pour les réseaux virtuelles des 2 régions :
– Création d’un réseau local
– Définir une adresse « bidon » du périphérique VPN
• Association des réseaux virtuels avec les
réseaux locaux:
– Réseau virtuel région 1 avec réseau local région 2
– Réseau virtuel région 2 avec réseau local région 1
Paramétrage des réseaux
52. #JSS2014
• A partir du nouveau portail Azure
– https://portal.azure.com
• Création d’une solution AlwayON AG
– En moins d’1 heure
– Environnement complètement configuré
• 2 DC, 1 file share, 2 SQL Server
Création « On demand »