4. SQL : Quelles options aujourd’hui ? A demeure ou
dans le Cloud? IaaS ou PaaS ?
WA SQL Database Premium - PaaS
#JSS2013
WA SQL Database - PaaS
Délégation du contrôle
Ressources partagées
Coût moins élevé
Ressources dédiées
Coût plus élevé
• Contrôle total du matériel
• Gestion de votre solution de PRA
Contrôle direct
• 100% Compatible
• Rapidité de mise en service
SQL Server dans WA VM - IaaS
Machine virtuelle
SQL Server
Machine physique
• Service de base de données
• Peu d’administration technique
Base de données virtualisée
• Service de base de données
• Peu d’administration technique
Capacité réservée de ressources
Prévisibilité des performances
8. #JSS2013
Les raisons du choix Azure Sql Database
• Un service de base de données
présent sur l’ensemble des
régions sur lesquelles sont
implantés les DC Azure
• Haute disponibilité automatique
et redondance
– Les données SQL sont automatiquement
répliquées 3 fois avec conservation de
l’intégrité transactionnelle
• Outils et technologies de
développement connus maîtrisés
Une seule base
de données
logique
Plusieurs réplicas
physiques
Primaire
unique
Plusieurs cibles
secondaires
Réplica 3 Réplica 2 Réplica 1
10. #JSS2013
Azure Throttling et Transient Fault Handling
• Throttling
– Soft Throttling / Hard Throttling
• Services avec Throttling dans Azure
– Windows Azure Database, Caching Service, Service Bus, Storage
• Gérer le Sql Database Throttling
• Throttling: (e.g.: 40501) « the service is currently
busy. Retry the request after 10 secondes. Code %d. »
(allows to know the type of throttling (CPU,
DataReadIODelay, Database Size…)
12. Azure Sql Database Premium
• Le service SQL Database propose un modèle de base de données
Premium qui permet le choix de différentes configurations fondé
sur le niveau d'isolement souhaité pour un client.
• Ces paramètres permettent de ne payer que la capacité réservée et
#JSS2013
d’adapter cette capacité à la charge anticipée sur le serveur
Reservation
Size
CPU Cores
Worker
Threads
Active
Sessions
Disk IO
(IOPS)
Memory
(GB)
P1 1 200 2000 150 8
P2 2 400 4000 300 16
http://msdn.microsoft.com/en-us/library/windowsazure/dn369873.aspx
13. #JSS2013
Multi-Tenant Data Architecture
Schéma & Base partagés
TenantId StatusId Date
411 7 2013-12-02
56 5 2013-12-02
56 4 2013-12-02
TenantId LastName FirstName
411 Plée Julien
203 Goudeau Stéphane
16. #JSS2013
Azure Multi-Tenancy avec Sharding
SQL Azure Gateway
HelloTalent Application Instances
SQL Azure Gateway
TenantFederation on Tid
Root Db
Federation
1
Federation
X
Federation
2
Tid 0 - 100 Tid 101 - 200 Tid XXX - Max
19. #JSS2013
SQL Server dans Windows Azure
Services
d’infrastructure
Azure
Provisionning
SQL Server
dans Azure
Scalabilité Performances
Haute
Disponibilité
20. #JSS2013
Services d’infrastructure Azure
• Des services de stockage
• Des services de réseaux virtuels
– Avec en option la possibilité d’établir des liens VPN
• Des machines virtuelles persistantes dans le Cloud
– Des Images fournies avec la plateforme Azure
– Des Images personnalisées
– Choix de dimensionnement : jusqu’à 8 coeurs et 56GB de RAM et 16 Data
Disks (max 1TB, soit 16 TBs max)
• Hébergement sur du matériel de « commodité »
21. #JSS2013
SQL Server dans une VM Windows Azure
• Versions supportées :
– SQL Server 2012, 2008 R2, 2008
– Toutes les fonctionnalités supportées à l’exception du failover clustering
• Stockage :
– 2 possibilités avec SQL 2014
• Disques associés à des objets blob de stockage
• Fichiers de base de données SQL Server pointant directement sur des
objets blob de stockage : SQL XI (XStore Integration)
– Options de stockage fondées sur la taille de la VM
• Facturation à l’usage ou mobilité de licence via la Software
Assurance
22. #JSS2013
Création à partir de la galerie d’images
• Beaucoup plus rapide qu’une installation complète
• Multiples éditions SQL Server :
– Enterprise Edition
– Standard Edition
– Web Edition
• Facturation à l’usage
• Services de BI installés par défaut
– SQL Server Analysis Services
– SQL Server Reporting Services
• Stockage :
– Disque C : 127GB
– Média d’installation de SQL Server sur le disque C:
23. Création d’images personnalisées
• Machines virtuelles construites à demeure (ou obtenue à
#JSS2013
partir de machines physiques – P2V)
– Sysprep si l’on souhaite créer plusieurs VM à partir d’une image
• http://msdn.microsoft.com/en-us/library/ee210754.aspx
– Sysprep non requis pour une instance unique
• Machines virtuelles construites dans le Cloud
– A partir de la galerie d’images
– Installation en se basant sur une image OS
• Mobilité des licences
24. Dimensionnement des VMs IaaS SQL Server
#JSS2013
Size
CPU
cores
Memory
Disk sizes –
virtual machine
Max. data
disks
(1 TB each)
Max. IOPS
(500 per disk)
Bandwidth
ExtraSmall Shared 768 MB OS = 127 GB Temporary = 20 GB 1 1x500 5 (Mb/s)
Small 1 1.75 GB OS = 127 GB Temp = 70 GB 2 2x500 100 (Mb/s)
Medium 2 3.5 GB OS = 127 GB Temp = 135 GB 4 4x500 200 (Mb/s)
Large 4 7 GB OS = 127 GB Temporary = 285 GB 8 8x500 400 (Mb/s)
ExtraLarge 8 14 GB OS = 127 GB Temporary = 605 GB 16 16x500 800 (Mb/s)
A5 2 14 GB OS = 127 GB Temporary = 135 GB 4 4X500 400
A6 4 28 GB OS = 127 GB Temporary = 285 GB 8 8x500 800
A7 8 56 GB OS = 127 GB Temporary = 605 GB 16 16x500
http://msdn.microsoft.com/en-us/library/windowsazure/dn197896.aspx
25. #JSS2013
Scale-up, Scale-down Serveur SQL IaaS
• « Scale-up » ou « scale-down » en
modifiant directement la taille de la
machine virtuelle hébergeant le
serveur SQL :
– Soit depuis le portail Azure
– Soit avec la Cmdlet Set-AzureVMSize + Update-
AzureVM.
– http://msdn.microsoft.com/en-us/
library/windowsazure/jj152814.aspx
• Renouvellement du déploiement (et de
l’adresse IP) et dans le cas d’un serveur
SQL standalone, interruption de
service.
• Impact positif de l’intégration du
XStore
26. #JSS2013
Performances de SQL Server dans une VM Azure
• Localisation des fichiers
• Utilisation de disques de données :
– 1 disque Data par base
– Distribution des fichiers de données en filegroups
• Disque d’installation des binaires SQL
• Cache Settings
• Warmup Effects : les prendre en compte si
tests de charge…
• Compression de données
• Impact positif de l’intégration du XStore
• Performance Guidance for SQL Server in Windows Azure Virtual
Machines
▪ http://download.microsoft.com/download/D/2/0/D20E1C5F-72EA-4505-9F26-
FEF9550EFD44/Performance%20Guidance%20for%20SQL%20Server%20in%20Windows%
20Azure%20Virtual%20Machines.docx
27. #JSS2013
SQL Server Data Warehousing dans Azure
• Images de la galerie
– http://msdn.microsoft.com/en-us/library/dn387396.aspx
– Avec finalisation (manuelle) du setup
– http://msdn.microsoft.com/en-us/library/dn387397.aspx
• Script de déploiement automatisé
– http://gallery.technet.microsoft.com/scriptcenter/Deploy-a-SQL-Server-Data-584e88d5
.New-AzureSqlDwIaasVM.ps1 -PublishSettingsFile C:stephgou.publishsettings -InstanceSize A6 ----
SqlVersion SQL2014 -AzureAffinityGroup DwAffinityGrp1 -StorageAccountName StorageAccount1 ---
VMName A6-SQL2014 -ServiceName A6-SQL2014 -AdminAccount sa -AdminPassword xxx ----------
Location " West Europe"
• Deep-dive on New Azure FastTrack VM image
– http://blogs.msdn.com/b/igorpag/archive/2013/10/11/deep-dive-on-new-azure-fasttrack-vm-image-ftdw.
aspx
28. #JSS2013
SQL Server Data Warehousing dans Azure
• Post-configuration (SQL Server inclus) dans
la VM via un le Task Scheduler et un script
PowerShell
• Power Shell configuration script:
– C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -
ExecutionPolicy Bypass -File "C:Program FilesMicrosoft SQL
ServerDwIaasConfigDwIaaSVM.ps1"
• SQL Server Setup command line (default
instance installation):
– C:Program FilesMicrosoft SQL Server110Setup
BootstrapSQLServer2012setup.exe /ACTION=CONFIGUREIMAGE
/IACCEPTSQLSERVERLICENSETERMS
/INSTANCENAME="MSSQLSERVER" /Q
30. #JSS2013
Haute disponibilité de SQL Server dans Azure
• LogShipping, Mirroring, AlwaysOn
• AlwaysOn requiert SQL Entreprise
– Repose sur un cluster WSFC (Windows
Server Failover Clustering)
– 8 secondaires (SQL 2014) :
• 2 Synchrones, 6 Asynchrones
– Secondaires actifs pour :
• Backup, reporting….
– Niveau de protection :
• Base ou groupe de bases
– Notion de « Listener » :
• Redirection automatique
High Availability and Disaster Recovery for SQL
Server in Windows Azure Virtual Machines
31. #JSS2013
Automatisation d’une configuration AlwaysOn
• Deploy a SQL Server AlwaysOn Availability Group
in Windows Azure
– http://gallery.technet.microsoft.com/scriptcenter/Deploy-a-
SQL-Server-794bc810
• Create WSFC Cluster for AlwaysOn Availability
Groups in Windows Azure VM
– http://gallery.technet.microsoft.com/scriptcenter/Create-
WSFC-Cluster-for-7c207d3a
• Create Availability Group Listener in Windows
Azure VMs (Cloud-Only)
– http://gallery.technet.microsoft.com/scriptcenter/Create-
Availability-Group-fff94cd5
• SharePoint 2013 Automated Deployment Master
Scripts
– https://github.com/windowsazure/azure-sdk-tools-samples
34. #JSS2013
SQL Server IaaS vs Azure SQL Database
• Critères à prendre en compte :
– Taille de la base, scalabilité, performance, coût, disponibilité, gestion
opérationnelle
• Windows Azure SQL Database :
– Optimisé pour réduire les coûts.
– Mise à disposition simple et rapide d’une infrastructure hautement disponible.
• SQL Server IaaS :
– La solution à privilégier pour la reprise de l’existant et pour les applications
hybrides.
– Un contrôle total d’une instance dédiée SQL Server.
– http://blogs.msdn.com/b/windowsazure/archive/2012/06/26/data-series-sql-server-
in-windows-azure-virtual-machine-vs-sql-database.aspx
Not only can Cloud OS help you optimize your database applications, but it can also support all of your deployment environments from Traditional (non-virtualized) to Private and Public cloud weather it is on-premise, Microsoft cloud or Service provider cloud. Our enterprise customers have shared consistently some rationale as to why they will have a mixed or Hybrid deployment environment for the applications. Given the how powerful hyper-visors have become for example WS 2012 Hyper-V can now support 64 vCPUs per VM and provide you 1 TB of memory per VM, customers are looking to gain the economic benefits of a Private Cloud for even their mission critical applications, not just Tier 2 and Tier 3 apps.
Still customers see many of their legacy applications remaining in a Traditional environment either due to complexity or lack of skilled resources to modify the application.
The public cloud takes the economic benefits of a Private Cloud, but at an even greater scale via economies of scale (e.g. a public cloud vendor may buy 100,000 servers for global datacenters, which further brings down pricing of compute, network and storage). Other key value props include rapid development to platform as a service offers such as SQL Database service where both the infrastructure and the platform are fully managed so you can simply develop applications quickly.
Les lectures sont réalisées par le serveur primaire
Les écritures sont dupliquées sur un quorum de serveurs secondaires
Slide Objectives:
Understand the key differentiators of SQL Azure
Understand where a user has control and where the cloud runs things
Speaking Points:
SQL Azure provides highly available SQL Server.
Appears to be a SQL Server to the client.
In reality is 3 transitionally consistent copies of the database that are fronted by a Gateway that appears to be a SQL server
Simple to provision- create a logical server in the Portal, execute a create DB Command to create a new database
Can add and remove DBs easily from application to scale up and down
Customers look after logical optimizations like indexes
SQL Azure manages the physical database
No need to install or patch software or other physical administration
Automatic high availability and fault tolerance
Simple provisioning and deployment of multiple databases
Scale databases up or down based on business needs
Multi-tenant
Integration with SQL Server and tooling including Visual Studio
Support for T-SQL based familiar relational database model
Now let’s take a closer look at some of the key capabilities of SQL Database. One of the unique features of Windows Azure SQL Database is its built-in high availability backed by a 99.9% database uptime SLA. Built-in means you don’t have to code this into your application. It just works.
It works by having one primary node with a single logical database and two online replicas. Writes to the database are synchronously replicated to online secondaries. This means your data is constantly replicated across multiple physical replicas. The result is no database downtime, even as Windows Azure systems are patched and upgraded.
BetOnSoft develops and manages over 100 online casino games played everyday by thousands of players worldwide. With their core gaming systems on-premises, BetOnSoft needed a way to scale parts of their business to the cloud. Their error monitoring and reporting application collects statistics on the quality of connections to the company’s games and sends alerts. For this, they required the system to be online and available at all times and found it made more sense to have this application reside outside their datacenters.
Throttling in windows azure:
Azure is a multi-tenant environment
Our services reside on same machines as others
Resources might become unavailable
Services which throttle
Sql Database (notre cas du jour)
Windows Azure Storage
Service Bus
Caching
Throttling in Sql Database
Throttle the busiest DBs first (soft throttle)
Throttle every DB if necessary (hard throttle) (not predictible)
Throttling shown as specific connection error (e.g.: 40501) « the service is currently busy. Retry the request after 10 secondes. Code %d. » (allows to know the type of throttling (CPU, DataReadIODelay, Database Size…)
Throttling in windows azure:
Azure is a multi-tenant environment
Our services reside on same machines as others
Resources might become unavailable
Services which throttle
Sql Database (notre cas du jour)
Windows Azure Storage
Service Bus
Caching
Throttling in Sql Database
Throttle the busiest DBs first (soft throttle)
Throttle every DB if necessary (hard throttle) (not predictible)
Throttling shown as specific connection error (e.g.: 40501) « the service is currently busy. Retry the request after 10 secondes. Code %d. » (allows to know the type of throttling (CPU, DataReadIODelay, Database Size…)
Ajout d’une colonne TenantId pour faire la distinction
Chaque schéma est un tenant
Chaque base de données est un tenant
Support des images SQL Server images dans Azure
Permet un provisionning en mode IaaS de SQL Server
La configuration de SQL Server devient une part intégrante du mécanisme de provisionning
Beaucoup plus rapide qu’une installation complète
Supprime les limitations actuelles
Fonctionnalité longtemps demandée par nos clients
Microsoft does not support using Sysprep with SQL Server 2008 Express and several other products : you can use Sysprep to clone the Windows Operating system as long as you verify that no non-supported roles are enabled prior to cloning.
For Server 2008R2 only certain roles of the operating system support using Sysprep.
MSDN article explaining how to install SQL on a Sysprep'd image
http://msdn.microsoft.com/en-us/library/ee210754.aspx
http://everythingsharepoint.blogspot.fr/2011/11/microsoft-sysprep-which.html
Le changement des dimensions de la machine virtuelle entraîne le renouvellement de son deploiement et dans le cas d’un serveur SQL standalone, une interruption de service.
Il est très probable que la machine nouvellement provisionnée prenne alors une nouvelle adresse IP.
Si la ou les bases de données sont localisées sur un disque attaché, ce disque sera lié à la nouvelle instance et les bases de données seront donc remontées sans difficulté sur la nouvelle instance de machine virtuelle.
1 compte de stockage par disque
?
Utilisez la compression de page pour vos données. Cela est conforme à la spécification Fast Track pour les entrepôts de données pouvant atteindre 400 Go.
Utilisez un seul fichier par groupe de fichiers pour empêcher l'agrégation par bandes à plusieurs niveaux qui peut avoir des effets négatifs sur le débit.
Utilisez des pools de stockage Windows Server pour exposer plusieurs disques de données à SQL Server comme seul point de montage c:\Mount\Data. Pour utiliser le point de montage, stockez les bases de données sous c:\Mount\Data qui est également l'emplacement par défaut de vos objets de base de données.
Pour la majorité des bases de données d'une taille inférieure à 1 To, utilisez un groupe de fichiers et enregistrez-le sous c:\Mount\Data. Il s'agit de l'emplacement du fichier par défaut. Pour utiliser un autre emplacement, vous devez attacher un autre disque ou créer un fichier sur le lecteur c: ou d:.
Pour bénéficier d'avantages supplémentaires, explorez à l'aide de plusieurs groupes de fichiers :
Chargez les données plus rapidement en chargeant plusieurs tables ou partitions en même temps. Le fait de placer ces tables dans des groupes de fichiers distincts empêche la fragmentation pendant les charges parallèles.Utilisez la technique de fenêtre glissante pour archiver des partitions de données.Enregistrez les données mises en lots séparément des données de production. Enregistrez les données qui évoluent rapidement et celles qui évoluent lentement dans différents emplacements.
Bonnes pratiques de configuration de SQL serveur, sur du materiel pré testé, pré configuré et optimisé pour SQL server
Fast Rack
The script is specifically designed for quickly spinning up a starting infrastructure for *Data Warehousing* workloads in Windows
# Use locally saved publish settings file to deploy a VM of size A6 running SQL server 2012 DW optimized image, at affinity group named DwAffinityGroup1, using storage account StorageAccount1, VM name is A6-SQL2012-01, service name A6-SQL2012
The Power Shell script is really nice, since it will take care of (almost) everything:
Import Windows Azure module (needed to use Windows Azure PowerShell cmdlet)
Import Azure publish settings (user account info etc.)
Create Azure Affinity Group
Create Azure storage account with geo-replication check
Set Azure Subscription
Get the latest (and correct SQL image)
Create New Azure VM with additional empty Azure disks (and caching disabled)
Since the script will not do it automatically, if you use Power Shell instead of the Azure Portal, remember to:
Create an endpoint for incoming SQL traffic;
Create an Azure Virtual Network and join the VM to it, if required;
Create an Azure Availability Set and join the VM to it, if required for multi-VM high availability;
This script allows a user to create a Data Warehousing optimized VM on Azure running SQL Server 2012 or SQL Server 2014, script will also attach empty disks to the VM to be used for Sql server data and log files.
Attached disks are 1023GB each, size is not configurable, Azure subscriber will only get billed for used capacity.
New-AzureSqlDwIaasVM.ps1 implements the following:
Import Windows Azure module (Needed to use Windows Azure PowerShell cmdlets)
Import Azure publish settings (User account info etc.)
Create Azure affinity group
Create Azure storage account
Set Azure subscription
Create New Azure VM with additional empty Azure disks
For more details on SQL Server DW IaaS (also known as SQL Server Data Warehouse in Windows Azure Virtual Machines), please check:
http://go.microsoft.com/fwlink/?LinkId=320440
http://go.microsoft.com/fwlink/?LinkId=320441
For more information about this script, please check https://github.com/WindowsAzure/azure-sdk-tools-samples/blob/master/solutions/infrastructure/_New-AzureSqlDwIaasVM.md
Avec AlwaysOn, il est donc possible de déployer un ou plusieurs base(s) de données secondaire(s), ce qui non seulement améliore la disponibilité des serveurs SQL, mais optimise leur usage en permettant de les décharger des tâches de reporting BI et de sauvegardes.
Cette nouveauté requiert le déploiement d'un correctif de Windows Server 2012, qu’il faut installer à l'intérieur de chaque VM Azure hébergeant un réplica de groupe de disponibilité dans le Cluster. Ce hotfix modifie le fichier CLUSRES.DLL et peut être téléchargé depuis l'adresse suivante : http://support.microsoft.com/kb/2854082
Grâce à ce correctif, le Cluster de serveurs Windows modifié la logique de la ressource « adresse IP », afin de répondre aux sondes personnalisées (custom probes) du Load Balancer Azure puis de rediriger le trafic entrant uniquement vers la VM correspondant au nœud actif hébergeant le réplica primaire du groupe de disponibilité de la base de données.
SQL Server AlwaysOn within Windows Azure Virtual Machines to achieve high availability and global business continuity. As part of this support you can now deploy one or more readable database secondaries – which not only improves availability of your SQL Servers but also improves efficiency by allowing you to offload BI reporting tasks and backups to the secondary machines.
Today’s Windows Azure release includes changes to better support SQL Server AlwaysOn functionality with our Windows Azure Network Load Balancers. With today’s update you can now connect to your SQL Server deployment with a single client connection string using the Availability Group Listener endpoint. This will automatically route database connections to the primary replica node – and our network load balancer will automatically update to route requests to a secondary replica node in the event of an automatic or manual failover scenario:
This new SQL Server Availability Group Listener support enables you to easily deploy SQL Databases in Windows Azure Virtual Machines in a high-availability configuration, and take full advantage of the full SQL Server feature-set. It can also be used to ensure no downtime during upgrade operations or when patching the virtual machines.
High Availability and Disaster Recovery for SQL Server in Windows Azure Virtual Machines
Mirroring : 2 scénarios
SQL Standard rend possible le mirroring mais uniquement en mode synchrone (« Safety Full Only » pour la standard) : l’opération de redo n'est faite que sur un seul thread
http://social.msdn.microsoft.com/Forums/en-US/sqldatabasemirroring/thread/a5b58253-cf4a-4dd6-9472-c484347d39ab/
http://social.msdn.microsoft.com/Forums/en-US/sqlreplication/thread/d591a375-8a2f-4f2e-b6cf-9c02e60d3b8b/
SQL Entreprise
Dans les 2 cas, il est possible d’utiliser SQL Express en witness : http://msdn.microsoft.com/en-us/library/cc645993.aspx