Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
こんにちは、Azure サポートチームの高橋です。
本日は、ARM 環境にて可用性セットに参加していない既存の VM を、既存の可用性セットに追加する手順をご案内します。
新しく可用性セットを作成し、 VM を追加する場合には、以下のブログ記事にて手順をご紹介しておりますので、
ご参考いただけますと幸いです。
リソース マネージャー (ARM) 環境で既存の VM を新規作成の可用性セットに追加する方法
https://blogs.technet.microsoft.com/jpaztech/2016/06/07/addnewavsetvmarm/
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
※ 2016/10/6 ”注意事項” の内容につきまして、追記いたしました。
※ 2017/12/7 "注意事項"の内容につきまして、追記いたしました。
制限事項
リソース マネージャー (ARM) 環境の場合、既存の VM を新規の可用性セットに追加する為には、以下の制限がございます。
- 既存の VM を停止 / 削除して、再度 VM を展開する必要があります。
- クラシック環境 (ASM) と違い、PowerShell を使用する必要があります。
注意事項
- 以下にご案内するスクリプトを実行いただきますと、VM が一度削除され、既存の可用性セット内に VM が再展開されます。
VHD のデータが削除されるわけではございませんが、手順の中に VM の削除が伴いますので、検証環境にて充分お試しいただきますようお願いいたします。 - VM 名や VHD ファイルなどが変更されることはございません。
- 2016/6/7 時点では、以下の手順で VM を展開した場合、ポータル上の VM のコンピューター名が [ – ] と表示されますが、VMの挙動に影響はありません。(これは、既存の VHD を元に VM を展開した際に発生しますが、今後改善される予定となっております。)
- 拡張機能が一律、無効状態と認識されている可能性があります。事前の構成を把握していただき、適宜有効・無効を切り替えていただければと存じます。既に有効な拡張機能を、上から有効化しても問題はありません。
- VM は、元々使用していたリソースを使い再展開されます。そのため、Azure 上のリソースに関しては、再度設定を行っていただく必要はございません。
10/6 変更箇所
- 仮想マシン内部の設定につきましても、再設定していただく必要はなく、基本的には再作成する前の状態でお使いいただけます。
- Azure としては、再作成前と同等の構成で再作成を行っておりますが、テンポラリー領域のご使用方法や、仮想マシン内の OS やアプリケーションの構成によっては、仮想マシン再作成後に設定が必要となる場合があります。VM の再作成後は、同等の構成にて再展開が行われていること、当該 VM がホストする各サービスが正常に動作していることをご確認ください。
2017/12/7 追記
- スクリプト内の以下の行は、仮想マシン名とOSディスク名とが同じ際のみ必要です。そうでない場合はコメントアウトしてください。
$vm.StorageProfile.OSDisk.Name = $vmName
作業の流れ
本記事では、例として以下の環境にて、サンプルの仮想マシン 名称 : [SetVmB] を既存の可用性セット 名称 : [setavaset] に追加するシナリオで、手順をご紹介させていただきます。
- リソース グループ名 : [Set-RG]
- 可用性セット名 : [setavaset]
- VM 名 : [SetVmA](可用性セットに追加済み)/ [SetVmB](可用性セットに追加されていない VM)
以下の作業は、すべて Azure PowerShell で行います。スクリプトを実行しますと、ポップアップ画面が出ますので、任意の名称を選択し、進めていきます。
- ログイン
- 既存のリソースの情報を取得
- 既存の可用性セットの情報を取得
- 既存の VM を停止、削除
- VM の設定を再定義、既存の可用性セットに追加
- VM の再デプロイ
手順
- 以下の Azure PowerShell スクリプトをテキスト エディターにコピーし、.ps1 形式にて保存し、実行します。特に PowerShell ファイル上でのパラメーターの変更や設定などはございませんので、以下のスクリプトをそのままコピーしてご実行いただけます。(仮想マシンや可用性セット名などは途中選択肢としてあらわれ、ポップアップ内で選択する形で指定します。)
#Login
Login-AzureRmAccount
#Select Azure Subscription
$subscriptionId = (Get-AzureRmSubscription | Out-GridView -Title "Select an Azure Subscription ..." -PassThru).SubscriptionId
Select-AzureRmSubscription -SubscriptionId $subscriptionId
#Select Azure Resource Group in which existing VNET is provisioned
$rgName = (Get-AzureRmResourceGroup | Out-GridView -Title "Select an Azure Resource Group ..." -PassThru).ResourceGroupName
#Select VM to re-provision
$vmName = (Get-AzureRmVm -ResourceGroupName $rgName).Name | Out-GridView -Title "Select a VM ..." -PassThru
$vm = Get-AzureRmVm -ResourceGroupName $rgName -Name $vmName
$location = $vm.Location
#Get Azure availability set
$asname = (Get-AzureRmAvailabilitySet -ResourceGroupName $rgName).Name | Out-GridView -Title "Select a AvailabilitySet ..." -PassThru
#Stop and Deprovision existing Azure VM, retaining Disks
$vm | Stop-AzureRmVm -Force
$vm | Remove-AzureRmVm -Force
#Set VM config to include Availability Set
$as = Get-AzureRmAvailabilitySet -Name $asName -ResourceGroupName $rgName
$asRef = New-Object Microsoft.Azure.Management.Compute.Models.SubResource
$asRef.Id = $as.Id
$vm.AvailabilitySetReference = $asRef.Id # To remove VM from Availability Set, set to $null
#Clean-up VM config to reflect deployment from attached disks
$vm.StorageProfile.OSDisk.Name = $vmName
$vm.StorageProfile.OSDisk.CreateOption = "Attach"
$vm.StorageProfile.DataDisks | ForEach-Object { $_.CreateOption = "Attach" }
$vm.StorageProfile.ImageReference = $null
$vm.OSProfile = $null
#Re-provision VM from attached disks
$vm | New-AzureRmVm -ResourceGroupName $rgName -Location $location
- ログイン後、新たなポップアップ画面が出ますので、サブスクリプション ID を選択し、 [OK] をクリックします。
- 同様にリソース グループを指定します。本シナリオでは、 [Set-RG] を選択し、 [OK] をクリックします。
- 既存の可用性セットに追加する VM を選択します。本シナリオでは、 [SetVmB] を選択し、 [OK] をクリックします。
- 既存の可用性セットを選択します。本シナリオでは、 [setavaset] を選択し、 [OK] を押します。
- [SetVmB] が一旦削除され、元々使用していたリソースより再展開されます。
既存の可用性セット [setavaset] に追加されたことをポータルより確認します 。
以上が、 既存の VM を既存の可用性セットに追加する手順となります。