Créer un pool d'instances (Aperçu) : Azure SQL Managed Instance

S’applique à :Azure SQL Managed Instance

Cet article explique comment créer un pool d'instances pour Azure SQL Managed Instance. Il explique en outre comment déplacer des instances dans et hors du pool.

Les pools d'instances permettent de déployer plusieurs instances avec des ressources partagées sur une seule machine virtuelle, ce qui fournit une infrastructure pratique et rentable pour migrer plusieurs instances SQL Server sans avoir à consolider des charges de travail plus petites et moins exigeantes en termes de calcul sur une SQL Managed Instance plus grande.

Remarque

Les pools d'instances pour Azure SQL Managed Instance sont actuellement en Aperçu.

Prérequis

Pour créer un pool d'instances, vous devez disposer des éléments suivants :

Considérations sur la taille du sous-réseau

Planifiez judicieusement la taille de votre sous-réseau si vous prévoyez d'utiliser un pool d'instances. Reportez-vous à Déterminer la taille de sous-réseau requise et la plage pour les instructions de dimensionnement de sous-réseau.

Utilisez la formule suivante pour calculer le nombre d'adresses IP requises par un pool d'instances contenant plusieurs instances Usage général :

2 * (5 + (3 * # of MIs)) + 5

# of MIs fait référence au nombre potentiel maximum d'instances que vous prévoyez d'approvisionner. Le nombre maximum possible d'instances dans le pool est de 40.

Créer un pool d’instances

Vous pouvez créer un pool d'instances à l'aide de PowerShell ou d'Azure CLI. Tenez compte des éléments suivants :

  • Seul le niveau de service Usage général sur la série standard (Gen5) ou le matériel de la série Premium est actuellement disponible.
  • Le nom du pool ne peut contenir que des lettres minuscules, des chiffres et des traits d’union, et ne peut pas commencer par un trait d’union.
  • La solution Azure Hybrid Benefit s'applique au niveau du pool d'instances. Vous pouvez définir le type de licence lors de la création du pool et le mettre à jour après la création du pool.

Important

Le déploiement d'un pool d'instances est une opération de longue haleine qui peut prendre jusqu'à 4,5 heures.

Pour créer votre pool d'instances, utilisez New-AzSqlInstancePool.

Tenez compte des éléments suivants :

  • Pour LicenseType, utilisez BasePrice pour Azure Hybrid Benefit ou LicenseIncluded si vous n'avez pas de licence SQL Server qui peut être utilisée pour la remise Azure Hybrid Benefit.
  • Utilisez Get-AzLocation | select displayname, location pour obtenir une liste des régions où des pools d'instances sont disponibles.

Créez un nouveau pool d'instances avec 8 vCores sur du matériel de série standard (Gen5) en exécutant l'exemple de script suivant :

# Identify the SubnetId
$virtualNetwork = Get-AzVirtualNetwork -Name <vnet name> -ResourceGroupName <resource group name>
$miSubnet = Get-AzVirtualNetworkSubnetConfig -Name <subnet name> -VirtualNetwork $virtualNetwork
$miSubnetConfigId = $miSubnet.Id

# Create the instance
$instancePool = New-AzSqlInstancePool `
    -ResourceGroupName  <resource group name> `
    -Name <instance pool name> `
    -SubnetId $miSubnetConfigId `
    -LicenseType LicenseIncluded `
    -VCore 8 `
    -Edition GeneralPurpose `
    -ComputeGeneration Gen5 `
    -Location <region>

Créer une instance à l'intérieur du pool

Une fois votre pool créé, vous pouvez créer une instance dans le pool à l'aide de PowerShell ou d'Azure CLI.

Pour identifier les paramètres du pool, utilisez Get-AzSqlInstancePool, puis créez votre instance dans le pool spécifique avec New-AzSqlInstance.

Créez une nouvelle instance dans votre pool en exécutant l'exemple de script suivant :

$adminCredential = Get-Credential
$instancePool = Get-AzSqlInstancePool -ResourceGroupName <resource group name> -Name <instance pool name>

$instance01 = $instancePool | New-AzSqlInstance `
    -Name $instance01`
    -VCore 2 `
    -StorageSizeInGB 32 `
    -AdministratorCredential $adminCredential `

Déplacer une instance existante

Vous pouvez déplacer une instance existante dans et hors d'un pool à l'aide de PowerShell ou d'Azure CLI si :

  • elle se trouve dans le même groupe de ressources que le pool.
  • Elle se trouve sur le même réseau virtuel et sous-réseau que le pool.
  • Elle correspond aux limites de ressources du pool d'instances.

Lorsqu'une instance existante est déplacée dans un pool, les paramètres au niveau du pool sont prioritaires sur les paramètres au niveau de l'instance. Par exemple, l'instance hérite du type de licence et de la fenêtre de maintenance définies au niveau du pool. Lorsqu'une instance est déplacée hors du pool, elle conserve les paramètres hérités du pool. La seule exception concerne le type de licence, qui revient par défaut à « LicenseIncluded » lorsqu'une instance est supprimée du pool d'instances : Azure Hybrid Benefit et l'avantage des droits de basculement hybride doit être configuré manuellement après qu'une instance a été déplacée hors d'un pool.

Pour déplacer une instance dans un pool, indiquez le nom du pool lorsque vous utilisez Set-AzSqlInstance :

$instance01 | Set-AzSqlInstance -InstancePoolName $instancePoolName

Pour déplacer une instance hors d'un pool, fournissez un nom de pool vide :

$instance01 | Set-AzSqlInstance -InstancePoolName ''

Se connecter à une instance dans un pool

Pour vous connecter à une instance dans un pool, activez d'abord le point de terminaison public de l'instance, puis autorisez le trafic de point de terminaison public sur le groupe de sécurité réseau.

Pour activer le point de terminaison public pour une instance, définissez -PublicDataEndpointEnabled sur true lorsque vous mettez à jour les propriétés de l'instance avec Set-AzSqlInstance :

$instance01 | Set-AzSqlInstance -InstancePoolName $instancePoolName -PublicDataEndpointEnabled $true

Création d'une base de données

La création d'une base de données pour une instance à l'intérieur d'un pool est identique à celle d'une base de données pour une instance unique. Vous pouvez créer une nouvelle base de données à l'aide de PowerShell ou d'Azure CLI.

Pour créer une nouvelle base de données pour votre instance, utilisez New-AzSqlInstanceDatabase :

New-AzSqlInstanceDatabase -Name <database name> -InstanceName <instance name> -ResourceGroupName <resource group> 

Obtenir l’utilisation du pool

Vous pouvez utiliser PowerShell pour déterminer comment les ressources sont utilisées à l'intérieur d'un pool.

Pour obtenir la liste des instances à l'intérieur d'un pool, utilisez Get-AzSqlInstance :

$instancePool | Get-AzSqlInstance

Pour obtenir l'utilisation des ressources du pool, utilisez Get-AzSqlInstancePoolUsage :

$instancePool| Get-AzSqlInstancePoolUsage

Vous pouvez ajouter le paramètre -ExpandChildren pour obtenir une vue d'ensemble détaillée du pool et des instances qu'il contient :

$instancePool | Get-AzSqlInstancePoolUsage –ExpandChildren

Pour répertorier les bases de données d'une instance, utilisez Get-AzSqlInstanceDatabase :

$databases = Get-AzSqlInstanceDatabase -InstanceName $instance01Name  -ResourceGroupName $resourceGroupName

Remarque

Pour vérifier les limites des instances déployées dans un pool et des bases de données par pool d'instances, consultez les limites de ressources.

Mettre à jour un pool d’instances

Vous pouvez utiliser PowerShell pour modifier les limites du pool d'instances.

L'exemple de script suivant modifie le type de licence, la taille vCore et le type de matériel :

Changer de type de licence :

$instancePool | Set-AzSqlInstancePool -LicenseType BasePrice -VCores 16 -ComputeGeneration Gen8

Vous pouvez également déterminer les planifications de fenêtre de maintenance disponibles :

# 'Available maintenance schedules in $location'
$configurations = Get-AzMaintenancePublicConfiguration
$configurations | ?{ $_.Location -eq $location -and $_.MaintenanceScope -eq "SQLManagedInstance"} 
$maintenanceWindowOptions = $configurations | ?{ $_.Location -eq $location -and $_.MaintenanceScope -eq "SQLManagedInstance"}

Vous pouvez ensuite modifier la fenêtre de maintenance en spécifiant une option de fenêtre, par exemple :

$instancePool | Set-AzSqlInstancePool -MaintenanceConfigurationId $maintenanceWindowOptions[1].Id

Mettre à jour un pool d’instances

Si les limites de ressources du pool n'ont pas été dépassées, vous pouvez modifier les configurations de ressources pour une instance à l'intérieur d'un pool à l'aide de PowerShell ou d'Azure CLI,

Pour modifier les paramètres de ressource d'une instance à l'intérieur d'un pool, utilisez Set-AzSqlInstance.

Par exemple, le script suivant met à jour les vCores sur 8 et remplace la taille de stockage par 512 Go pour Instance1 :

$instance1name | Set-AzSqlInstance -VCore 8 -StorageSizeInGB 512 -InstancePoolName $instancePoolName

Supprimer un pool d’instances

Vous pouvez supprimer un pool d'instances à l'aide de PowerShell ou d'Azure CLI, une fois toutes les instances du pool supprimées ou déplacées hors du pool.

Pour supprimer un pool d'instances, utilisez Remove-AzSqlInstancePool.

L'exemple de script suivant supprime un pool d'instances vide :

Remove-AzSqlInstancePool -ResourceGroupName <resource group name -Name <instance pool name>

Opérations des pools d’instances

Le tableau suivant présente les opérations de pool d'instances disponibles :

Commande Portail Azure PowerShell Azure CLI
Créer un pool d’instances Non Oui Oui
Mettre à jour les propriétés du pool Non Oui Oui
Vérifier l'utilisation et les propriétés du pool Oui Oui Oui
Supprimer un pool d’instances Oui Oui Oui
Créer une Managed Instance à l'intérieur du pool Non Oui Oui
Déplacer une Managed Instance dans un pool Non Oui Oui
Supprimer Managed Instance du pool Oui Oui Oui
Déplacer une Managed Instance hors d'un pool Non Oui Oui
Créer une base de données dans une instance à l'intérieur d'un pool Oui Oui Oui
Supprimer une base de données de SQL Managed Instance Oui Oui Oui

Pour utiliser PowerShell, installez la dernière version de PowerShell Core et suivez les instructions pour installer le module Azure PowerShell.

Commandes PowerShell disponibles :

Applet de commande Description
New-AzSqlInstancePool Crée un pool d'instances.
Get-AzSqlInstancePool Retourne des informations sur un pool d’instances.
Set-AzSqlInstancePool Définit les propriétés d'un pool d'instances.
Remove-AzSqlInstancePool Supprime un pool d'instances.
Get-AzSqlInstancePoolUsage Retourne des informations sur l'utilisation du pool d'instances.

Pour les opérations liées aux instances à la fois dans les pools et les instances uniques, utilisez les commandes de l’instance managée standard, mais la propriété de nom du pool d’instances doit être remplie lors de l’utilisation de ces commandes pour une instance d’un pool.

Limites

Pendant l'aperçu public, les instances d'un pool ont les limitations suivantes :

  • Le nom du pool ne peut contenir que des lettres minuscules, des chiffres et des traits d’union, et ne peut pas commencer par un trait d’union.
  • Toutes les instances du pool utilisent le même modèle de gestion des licences. Lorsque vous spécifiez un modèle de licence pour une instance qui est différent du modèle de licence pour le pool, ce dernier est utilisé. Lorsque l'instance est déplacée hors du pool, elle bascule automatiquement vers une licence payante complète (LicenseType = « LicenseIncluded »). Activez manuellement Azure Hybrid Benefit ou l'avantage des droits de basculement hybride pour modifier le modèle de gestion des licences.
  • Les instances groupées doivent appartenir au même sous-réseau et au même groupe de ressources. Le déplacement d'une instance dans et hors du pool n'est possible que dans le sous-réseau du pool et du même groupe de ressources.
  • Seul le niveau de service Usage général est disponible sur le matériel de série standard (Gen5) ou premium. Les niveaux de service Usage général nouvelle génération et Critique pour l’entreprise, ainsi que le matériel à mémoire optimisée de la série Premium ne sont pas disponibles.
  • Le nombre maximum possible d'instances dans le pool est de 40.
  • Un pool d'instances ne peut être supprimé qu'une fois toutes les instances du pool supprimées ou déplacées hors du pool.
  • Vous ne pouvez pas utiliser le portail Azure pour :
    • Configurer le pool d'instances. Utiliser PowerShell ou Azure CLI à la place.
    • Déplacer les instances dans et hors du pool. Utiliser PowerShell ou Azure CLI à la place.
  • Les fonctionnalités SQL Managed Instance suivantes ne sont pas prises en charge lorsque les instances se trouvent dans un pool :

Demandes de support

Créez et gérez les demandes de support pour les pools d’instances dans le portail Azure.

Si vous rencontrez des problèmes lors de la création ou de la suppression d'une instance, veillez à indiquer Pools d'instances dans le champ Sous-type de problème.

Capture d’écran de la Demande de support pour les pools d’instances dans le Portail Azure.

Si vous rencontrez des problèmes liés à une instance managée unique ou à une base de données au sein d'un pool, vous devez créer un ticket de support standard pour Azure SQL Managed Instance.

Pour créer des déploiements SQL Managed Instance plus grands (avec ou sans pools d'instances), vous devrez peut-être obtenir un quota régional plus grand. Pour plus d’informations, consultez Demander des augmentations de quota pour Azure SQL Database. La logique de déploiement des pools d'instance compare la consommation totale de vCores au niveau du pool à votre quota pour déterminer si vous êtes autorisé à créer des ressources sans augmenter davantage votre quota.