インスタンス プール (プレビュー) を作成する - Azure SQL Managed Instance

適用対象:Azure SQL Managed Instance

この記事では、Azure SQL Managed Instanceインスタンス プールを作成する方法と、プール内またはプール外にインスタンスを移動する方法について説明します。

インスタンス プールを使用すると、共有リソースを持つ複数のインスタンスを 1 つの仮想マシンにデプロイできます。これにより、より小規模でコンピューティング負荷の少ないワークロードを大規模な SQL Managed Instance に統合することなく、複数の SQL Server インスタンスを移行するための便利でコスト効率の高いインフラストラクチャが提供されます。

Note

現在、Azure SQL Managed Instance 用インスタンス プールはプレビュー段階にあります。

前提条件

インスタンス プールを作成するには、次が必要です。

サブネット サイズの考慮事項

インスタンス プールを使用する予定の場合は、サブネットのサイズを慎重に計画してください。 サブネットのサイズ設定ガイドラインについては、「必要なサブネット サイズと範囲の決定」を参照してください。

複数の General Purpose インスタンスを含む 1 つのインスタンス プールで必要な IP アドレスの数を計算する場合は、次の式を使用します。

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

# of MIs は、プロビジョニングする予定の可能性のあるインスタンスの最大数を指します。 プール内のインスタンスの最大数は 40 です。

インスタンス プールを作成する

インスタンス プールは、PowerShell、または Azure CLI を使用して作成できます。 以下、具体例に沿って説明します。

  • 現在利用できるのは、Standard シリーズ (Gen5) またはプレミアム シリーズのハードウェアの General Purpose サービス レベルのみです。
  • プール名に使用できるのは、小文字、数字、ハイフンのみで、先頭をハイフンにすることはできません。
  • Azure ハイブリッド特典 は、インスタンス プール レベルで適用されます。 プールの作成時にライセンスの種類を設定し、プールの作成後にライセンスの種類を更新できます。

重要

インスタンス プールのデプロイは長期の操作であり、4.5 時間かかりる場合があります。

インスタンス プールを作成するには、New-AzSqlInstancePool を使用します。

以下、具体例に沿って説明します。

  • LicenseType の場合、Azure ハイブリッド特典 の BasePrice を使用し、Azure ハイブリッド特典割引に使用できる SQL Server ライセンスがない場合は、LicenseIncluded を使用します。
  • Get-AzLocation | select displayname, location を使用して、インスタンス プールが使用可能なリージョンの一覧を取得します。

次のサンプル スクリプトを実行して、Standard シリーズ (Gen5) ハードウェアに 8 個の仮想コアを持つ新しいインスタンス プールを作成します。

# 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>

プール内に新しいインスタンスを作成する

プールが作成されたら、PowerShell または Azure CLI を使用して、プール内に新しいインスタンスを作成できます。

プール パラメーターを識別するには、Get-AzSqlInstancePool を使用し、New-AzSqlInstance を使用して特定のプール内にインスタンスを作成します。

次のサンプル スクリプトを実行して、プールに新しいインスタンスを作成します。

$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 `

既存のインスタンスを移動する

次の場合は、PowerShell または Azure CLI を使用して、プールとの間で既存のインスタンスを移動できます。

  • プールと同じリソース グループにあります。
  • プールと同じ仮想ネットワークとサブネット上にあります。
  • これは、インスタンス プールのリソース制限に適合します。

既存のインスタンスがプールに移動されると、プール レベルの設定がインスタンス レベルの設定よりも優先されます。 たとえば、インスタンスは、プール レベルで設定されたライセンスの種類とメンテナンス期間を継承します。 インスタンスがプールから移動されると、そのインスタンスはプールから継承した設定を保持します。 唯一の例外は、インスタンスがインスタンス プールから削除されたときに既定で "LicenseIncluded" に戻るライセンスの種類で、インスタンスがプールから移動された後、Azure ハイブリッド特典ハイブリッド フェールオーバー権限の特典を手動で構成する必要があります。

インスタンスをプールに移動するには、Set-AzSqlInstance を使用するときにプール名を指定します。

$instance01 | Set-AzSqlInstance -InstancePoolName $instancePoolName

インスタンスをプールから移動するには、のプール名を指定します。

$instance01 | Set-AzSqlInstance -InstancePoolName ''

プール内のインスタンスに接続する

プール内のインスタンスに接続するには、まずインスタンスのパブリック エンドポイントを有効にしてから、ネットワーク セキュリティ グループでパブリック エンドポイント トラフィックを許可します

インスタンスのパブリック エンドポイントを有効にするには、Set-AzSqlInstance でインスタンスのプロパティを更新するときに -PublicDataEndpointEnabledtrue に設定します。

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

データベースの作成

プール内のインスタンスのデータベースの作成は、単一インスタンスのデータベースの作成と同じです。 新しいデータベースを作成するには、PowerShell または Azure CLI を使用します。

インスタンスの新しいデータベースを作成するには、New-AzSqlInstanceDatabase を使用します。

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

プールの使用状況を取得する

PowerShell を使用して、プール内でリソースがどのように使用されているかを判断できます。

プール内のインスタンスの一覧を取得するには、Get-AzSqlInstance を使用します。

$instancePool | Get-AzSqlInstance

プール リソース配分状況を取得するには、Get-AzSqlInstancePoolUsage を使用します。

$instancePool| Get-AzSqlInstancePoolUsage

ExpandChildren パラメーターを追加して、プールとその内部のインスタンスの詳細な概要を取得できます。

$instancePool | Get-AzSqlInstancePoolUsage –ExpandChildren

インスタンス内のデータベースを一覧表示するには、Get-AzSqlInstanceDatabase を使用します。

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

Note

プールにデプロイされたインスタンスとインスタンス プールあたりのデータベースの制限をチェックするには、リソースの制限を確認します。

インスタンス プールを更新する

PowerShell を使用して、インスタンス プールの制限を変更できます。

次のサンプル スクリプトでは、ライセンスの種類、仮想コアのサイズ、ハードウェアの種類を変更します。

ライセンスの種類を変更します。

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

使用可能なメンテナンス期間のスケジュールを決定することもできます。

# '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"}

その後、次のようなウィンドウ オプションを指定して、メンテナンス期間を変更できます。

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

プールされたインスタンスを更新する

プール リソースの制限を超えていない場合は、PowerShell または Azure CLI を使用して、プール内のインスタンスのリソース構成を変更できます。

プール内のインスタンスのリソース パラメーターを変更するには、Set-AzSqlInstance を使用します。

たとえば、次のスクリプトは仮想コアを 8 に更新し、Instance1 のストレージ サイズを 512 GB に変更します。

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

インスタンス プールを削除する

プール内のすべてのインスタンスが削除されたか、プールから移動されたら、PowerShell または Azure CLI を使用してインスタンス プールを削除できます。

インスタンス プールを削除するには、Remove-AzSqlInstancePool を使用します。

次のサンプル スクリプトは、空のインスタンス プールを削除します。

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

インスタンス プールの操作

次の表は、使用可能なインスタンス プール操作を示しています。

コマンド Azure portal PowerShell Azure CLI
インスタンス プールを作成する いいえ イエス はい
プールのプロパティの更新する いいえ イエス はい
プールの使用とプロパティを確認する はい イエス はい
インスタンス プールを削除する はい イエス はい
プール内に Managed Instance を作成する いいえ イエス はい
Managed Instance をプールに移動する いいえ イエス はい
プールから Managed Instance を削除する はい イエス はい
Managed Instance をプールから移動する いいえ イエス はい
プール内のインスタンスにデータベースを作成する はい イエス はい
SQL Managed Instance からデータベースを削除する はい イエス はい

Powershell を使用するには、最新バージョンの PowerShell Core をインストールし、指示に従って Azure PowerShell モジュールをインストールします。

使用可能な PowerShell コマンド

コマンドレット 説明
New-AzSqlInstancePool インスタンス プールを作成します。
Get-AzSqlInstancePool インスタンス プールに関する情報を返します。
Set-AzSqlInstancePool インスタンス プールのプロパティを設定します。
Remove-AzSqlInstancePool インスタンス プールを削除します。
Get-AzSqlInstancePoolUsage インスタンス プールの使用状況に関する情報を返します。

プール内のインスタンスと単一インスタンスの両方に関連する操作では、標準のマネージド インスタンス コマンドを使用しますが、プール内のインスタンスでこれらのコマンドを使用する場合は、"インスタンス プール名" プロパティを設定する必要があります。

制限事項

パブリック プレビュー中、プール内のインスタンスには次の制限があります。

  • プール名に使用できるのは、小文字、数字、ハイフンのみで、先頭をハイフンにすることはできません。
  • プール内のすべてのインスタンスは、同じライセンス モデルを使用します。 プールのライセンス モデルとは異なるインスタンスのライセンス モデルを指定すると、プールのライセンス モデルが使用されます。 インスタンスがプールから移動されると、完全な有料ライセンス (LicenseType = 'LicenseIncluded') に自動的に切り替わります。 ライセンス モデルを変更するには、Azure ハイブリッド特典またはハイブリッド フェールオーバー権限の特典を手動でアクティブ化します。
  • プールされたインスタンスは、同じサブネットとリソース グループに属している必要があります。 プールとの間でのインスタンスの移動は、プールのサブネットと同じリソース グループ内でのみ可能です。
  • General Purpose サービス レベルのみが、Standard シリーズ (Gen5) またはプレミアム シリーズのハードウェアで使用できます。 Next-gen General Purpose、Business Critical サービス レベルとプレミアム シリーズのメモリ最適化ハードウェアは使用できません。
  • プール内のインスタンスの最大数は 40 です。
  • インスタンス プールは、プール内のすべてのインスタンスが削除されるか、プールから移動された後にのみ削除できます。
  • Azure portal で次のことを行うことはできません。
    • インスタンス プールを構成します。 PowerShell または Azure CLI を使用してください。
    • プール内外にインスタンスを移動します。 PowerShell または Azure CLI を使用してください。
  • インスタンスがプール内にある場合、次の SQL Managed Instance 機能はサポートされません。

サポート リクエスト

Azure portal でインスタンス プールのサポート要求を作成および管理します。

インスタンスの作成または削除時に問題が発生している場合は、[問題のサブタイプ] フィールドで [インスタンス プール] を指定してください。

Azure portal のインスタンス プール サポート リクエストのスクリーンショット。

プール内で単一の Managed Instance またはデータベースに関連する問題が発生している場合は、Azure SQL Managed Instance の通常のサポート チケットを作成する必要があります。

インスタンス プールの有無にかかわらず、より大きな SQL Managed Instance のデプロイを作成するには、より大きなリージョン クォータを取得することが必要な場合があります。 詳細については、「Azure SQL Database のクォータの増加を要求する」を参照してください。 インスタンス プールのデプロイ ロジックによって "プール レベルでの" 仮想コアの合計消費量がご利用のクォータと比較され、そのクォータをさらに増やすことなく新しいリソースの作成を許可するかどうかが決定されます。