インスタンス プール (プレビュー) を作成する - Azure SQL Managed Instance
適用対象: Azure SQL Managed Instance
この記事では、Azure portal、PowerShell または Azure CLI を使用して Azure SQL Managed Instance 用インスタンス プールを作成する方法および、PowerShell または Azure CLI を使用してプール間でインスタンスを移動する方法を説明します。
インスタンス プールを使用すると、共有リソースを持つ複数のインスタンスを 1 つの仮想マシンにデプロイできます。これにより、より小規模でコンピューティング負荷の少ないワークロードを大規模な SQL Managed Instance に統合することなく、複数の SQL Server インスタンスを移行するための便利でコスト効率の高いインフラストラクチャが提供されます。
Note
現在、Azure SQL Managed Instance 用インスタンス プールはプレビュー段階にあります。
前提条件
インスタンス プールを作成するには、次が必要です。
- 適切なサイズのサブネット範囲を持つ既存の仮想ネットワーク。
- PowerShell の現在のバージョンまたは最新バージョンの Azure CLI の最新の Az.SQL モジュール。
- インスタンスとプールのプロパティを確認しました。
サブネット サイズの考慮事項
インスタンス プールを使用する場合は、サブネットのサイズを慎重に計画してください。 サブネットのサイズ設定ガイドラインについては、「必要なサブネット サイズと範囲の決定」を参照してください。
複数の General Purpose インスタンスを含む 1 つのインスタンス プールで必要な IP アドレスの数を計算する場合は、次の式を使用します。
2 * (5 + (3 * # of MIs)) + 5
# of MIs
は、プロビジョニングする予定の可能性のあるインスタンスの最大数を指します。 プール内のインスタンスの最大数は 40 です。
インスタンス プールを作成する
インスタンス プールは、Azure portal、PowerShell、または Azure CLI を使用して作成できます。 次の点について検討してください。
- 現在利用できるのは、Standard シリーズ (Gen5) またはプレミアム シリーズのハードウェアの General Purpose サービス レベルのみです。
- プール名に使用できるのは、小文字、数字、ハイフンのみで、先頭をハイフンにすることはできません。
- Azure ハイブリッド特典 は、インスタンス プール レベルで適用されます。 プールの作成時にライセンスの種類を設定し、プールの作成後にライセンスの種類を更新できます。
重要
インスタンス プールのデプロイは長期の操作であり、4.5 時間かかりる場合があります。
Azure Portal でインスタンス プールを作成するには、次の手順を実行します。
Azure portal でインスタンス プールを検索し、インスタンス プール サービスを選択して [インスタンス プール] ページを開きます。
[インスタンス プール] ページで [+ 作成] を選択し、[Azure SQL Managed Instance プールの作成] ページを開きます。
[Azure SQL Managed Instance プールの作成] で次のことを行います。
- [基本] タブで、プロジェクトとインスタンスの詳細を入力します。
- [コンピューティング + ストレージ] で [インスタンス プールの構成] を使用して [コンピューティング + ストレージ] ページを開き、プールで使用するサービス レベル、コンピューティング ハードウェア、SQL Server ライセンスを選択します。 [適用] を選択してコンピューティング設定を保存し、[Azure SQL Managed Instance プールの作成] ページに戻ります。
- 既存の仮想ネットワークを選択するか、[ネットワーク] タブで新しい仮想ネットワークを構成します。
- (省略可能) [追加設定] タブで、プールの既定以外のメンテナンス期間を構成します。
- [確認と作成] タブで構成を確認し、[作成] を選択してインスタンス プールを作成します。
プールのデプロイは [通知] から監視できます。
インスタンス プールが作成されたら、Azure portal を使用してプールに新しいインスタンスを作成するか、PowerShell または Azure CLI を使用して既存のインスタンスをプールに移動します。
プール内に新しいインスタンスを作成する
プールが作成されたら、Azure portal、PowerShell または Azure CLI を使用して、プール内に新しいインスタンスを作成できます。
次の点について検討してください。
- 新しいインスタンスのライセンスの種類を指定し、プールのライセンスの種類と一致させる必要があります。
Azure portal を使用してプール内に新しいインスタンスを作成するには、次の手順を実行します。
Azure portal の [Azure SQL] ページに移動します。
[Azure SQL] ページで [+ 作成] を選び、[SQL デプロイ オプションの選択] を開きます。
[SQL マネージド インスタンス] タイルで、リソースの種類にはドロップダウンから [単一インスタンス] を選択し、[作成] を選択して [Azure SQL Managed Instance の作成] ページを開きます。
[Azure SQL Managed Instance の作成] ページの [基本] タブで、以下を実行します。
- 既存のインスタンス プールを含むリソース グループを選択します。
- インスタンス プール内に新しいインスタンスを作成するには、[マネージド インスタンスの詳細] の [インスタンス プールに所属] で [はい] を選択します。
- [インスタンス プール] ドロップダウン リストからプールを選択します。
[Azure SQL Managed Instance の作成] ページで残りの詳細を入力し、プール内にインスタンスを作成します。 詳細については、「Azure SQL Managed Instance の作成」を確認してください。
[確認と作成] を選択して新しいインスタンスの設定をレビューしたら、[作成] を選択して選択したプール内にインスタンスをデプロイします。
既存のインスタンスを移動する
次の場合は、PowerShell または Azure CLI を使用して、プールとの間で既存のインスタンスを移動できます。
- プールと同じリソース グループにあります。
- プールと同じ仮想ネットワークとサブネット上にあります。
- これは、インスタンス プールのリソース制限に適合します。
既存のインスタンスがプールに移動されると、プール レベルの設定がインスタンス レベルの設定よりも優先されます。 たとえば、インスタンスは、プール レベルで設定されたライセンスの種類とメンテナンス期間を継承します。 インスタンスがプールから移動されると、そのインスタンスはプールから継承した設定を保持します。 唯一の例外は、インスタンスがインスタンス プールから削除されたときに既定で "LicenseIncluded" に戻るライセンスの種類で、インスタンスがプールから移動された後、Azure ハイブリッド特典とハイブリッド フェールオーバー権限の特典を手動で構成する必要があります。
現在、Azure portal を使用したプール内の既存のインスタンスの移動はサポートされていません。
PowerShell でインスタンスをプールに移動するには、Set-AzSqlInstance を使用するときにプール名を指定します。
$instance01 | Set-AzSqlInstance -InstancePoolName $instancePoolName
インスタンスをプールから移動するには、空のプール名を指定します。
$instance01 | Set-AzSqlInstance -InstancePoolName ''
プール内のインスタンスに接続する
プライベート エンドポイントまたはパブリック エンドポイントを使用して、プール内のインスタンスに接続することができます。 プライベート エンドポイントを使用するには、Azure Private Link を使用する必要があります。
パブリック エンドポイント でプール内のインスタンスに接続するには、エンドポイントを有効化した後、ネットワーク セキュリティ グループでパブリック エンドポイント トラフィックを許可します。
データベースの作成
プール内のインスタンスのデータベースの作成は、単一インスタンスのデータベースの作成と同じです。 Azure Portal、PowerShell、または Azure CLI を使用して新しいデータベースを作成できます。
Azure portal を使用して既存の SQL マネージド インスタンスに新しいデータベースを作成するには、次の手順を実行します。
- Azure Portal で、[SQL Managed Instance] に移動します。
- [概要] ウィンドウで コマンド バーから [+ 新しいデータベース] を選んで、[Azure SQL マネージド データベースを作成する] ページを開きます。
- 新しいデータベースの詳細を指定します。
- [確認と作成] を選択して新しいデータベース構成をレビューしたら、[作成] を選択してデータベースをデプロイします。
プールの使用状況を取得する
PowerShell を使用して、プール内でリソースがどのように使用されているかを判断できます。
プール内のインスタンスの一覧を取得するには、Get-AzSqlInstance を使用します。
$instancePool | Get-AzSqlInstance
プール リソース配分状況を取得するには、Get-AzSqlInstancePoolUsage を使用します。
$instancePool| Get-AzSqlInstancePoolUsage
ExpandChildren パラメーターを追加して、プールとその内部のインスタンスの詳細な概要を取得できます。
$instancePool | Get-AzSqlInstancePoolUsage –ExpandChildren
インスタンス内のデータベースを一覧表示するには、Get-AzSqlInstanceDatabase を使用します。
$databaseParams = @{
InstanceName = $instance01Name
ResourceGroupName = $resourceGroupName
}
$databases = Get-AzSqlInstanceDatabase @databaseParams
Note
プールにデプロイされたインスタンスとインスタンス プールあたりのデータベースの制限をチェックするには、リソースの制限を確認します。
インスタンス プールを更新する
PowerShell または Azure CLI を使用して、既存のインスタンス プールの設定を更新できます。
PowerShell を使用して、インスタンス プールの制限を変更できます。
次のサンプル スクリプトでは、ライセンスの種類、仮想コアのサイズ、ハードウェアの種類を変更します。
ライセンスの種類を変更します。
$instancePoolParams = @{
LicenseType = "BasePrice"
VCores = 16
ComputeGeneration = "Gen8"
}
$instancePool | Set-AzSqlInstancePool @instancePoolParams
使用可能なメンテナンス期間のスケジュールを決定することもできます。
$parameters = @{
Location = $location
MaintenanceScope = "SQLManagedInstance"
}
$configurations = Get-AzMaintenancePublicConfiguration @parameters
$maintenanceWindowOptions = $configurations | Where-Object { $_.Location -eq $location -and $_.MaintenanceScope -eq "SQLManagedInstance" }
その後、期間オプションを指定してメンテナンス期間を変更できます。例を次に示します。
$instancePoolParams = @{
MaintenanceConfigurationId = $maintenanceWindowOptions[1].Id
}
$instancePool | Set-AzSqlInstancePool @instancePoolParams
プールされたインスタンスを更新する
プール リソースの制限を超えていない場合は、PowerShell または Azure CLI を使用して、プール内のインスタンスのリソース構成を変更できます。
プール内のインスタンスのリソース パラメーターを変更するには、Set-AzSqlInstance を使用します。
次のサンプルでは、仮想コアを 8 に更新し、Instance1 のストレージ サイズを 512 GB に変更します。
$instancePoolParams = @{
VCore = 8
StorageSizeInGB = 512
InstancePoolName = $instancePoolName
}
$instance1name | Set-AzSqlInstance @instancePoolParams
インスタンス プールを削除する
プール内のすべてのインスタンスが削除されたか、プールから移動されたら、PowerShell または Azure CLI を使用してインスタンス プールを削除できます。
インスタンス プールを削除するには、Remove-AzSqlInstancePool を使用します。
次のサンプル スクリプトは、空のインスタンス プールを削除します。
$params = @{
ResourceGroupName = "<resource group name>"
Name = "<instance pool name>"
}
Remove-AzSqlInstancePool @params
インスタンス プールの操作
次の表は、使用可能なインスタンス プール操作を示しています。
command | Azure portal | PowerShell | Azure CLI |
---|---|---|---|
インスタンス プールを作成する | はい | イエス | はい |
プールのプロパティの更新する | いいえ | イエス | はい |
プールの使用とプロパティを確認する | はい | イエス | はい |
インスタンス プールを削除する | はい | イエス | はい |
プール内に新しいマネージド インスタンスを作成する | はい | イエス | はい |
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 で新しいサポート リクエストを作成するには、次の手順に従います。
Azure portal で [新規サポート リクエスト] ページを開きます。
[新規サポート リクエスト] に次の情報を入力します。
- [問題の種類] には
Technical
を選択します。 - ドロップダウン リストから適切なサブスクリプションを選択します。
- [サービスの種類] には
SQL Managed Instance
を選択します。 - [リソース] で、SQL Managed Instance が存在する場合は名前を指定します。または、プール内にインスタンスをデプロイできない場合は [一般的な質問] を選択します。
- [概要] に
instance pools
と入力します。 - [問題の種類] で
Create, Scale, Stop, Start, or Delete Resources
を選択します。 - [問題のサブタイプ] で
Instance Pools
を選択します。
- [問題の種類] には
サポート リクエストを [作成] できるようになるまで、続きのページで [次へ] を選択します。
インスタンス プールの有無にかかわらず、より大きな SQL Managed Instance のデプロイを作成するには、より大きなリージョン クォータを取得することが必要な場合があります。 詳細については、「Azure SQL Database のクォータの増加を要求する」を参照してください。 インスタンス プールのデプロイ ロジックによって "プール レベルでの" 仮想コアの合計消費量がご利用のクォータと比較され、そのクォータをさらに増やすことなく新しいリソースの作成を許可するかどうかが決定されます。