Azure VM を作るときにエラーで作成できない時がありますが、代表的なものをメモしておきます。
(新しいパターンが見つかったら適宜足します。きっと。
1. 前の操作が完了していない
主にクラシック ポータルで作成する V1 VM (クラシック) の場合ですが、仮想マシンを 1 台作成して、
その直後に 2 台目をとした場合など、前の処理が完了していない場合にエラーになります。
Azure の内部的に整合性を保つために排他制御 (ロック) していることに起因するので、
焦らず時間をおいてリトライしましょう。VM 作成時に限らず、構成変更、削除だとか、
ディスク・イメージの紐づけ関連の処理でもエラーになると思います。
新ポータルで作る V2 VM では、ARM (Azure Resource Manager) という新しい管理機構になったので、
各リソース毎にパラレルで処理ができるようになりました。ただ、V1 VM で使っている管理機構、
ASM (Azure Service Management) では Conflict などのメッセージを含むエラーになるので、
ロックが解除されるまではただただ待つべし。
[対処策]
おとなしく前の処理が終わるのを待ちましょう。
[エラーの例]
現在、この展開に対して、排他的アクセスが必要な、x-ms-requestid が XXXXXXXXXXXXXXXXXXXXXXXXX の操作を実行しています。
2. ハードウェアの制約により共存できない
クラウドとは言っても、裏側は結局物理サーバーがあります。
構成によってはハードウェアが対応していない事によって、仮想マシンのサイズ変更、新規作成が出来ません。
V1 の仮想マシン (いわゆる “クラシック”) では、”クラウド サービス” とか “可用性セット” といった概念が
あるかと思いますが、これって結局は仮想マシンを配置する際の制約をつけています。
(同一ハードウェアのサーバー群に紐づけたり、単一障害点を生まないよう別ラックに配置したり…)
こうしたハードウェアの制約によって、例えば以下のような場合がエラーになります。
– A シリーズの VM を D シリーズへ変更
– A シリーズの VM を DS シリーズへ変更
– D シリーズの VM を DS シリーズへ変更
– A / D / DS シリーズの VM を G シリーズへ変更 (ゴジラはリージョンが限られるので
– A シリーズの VM が既に存在するクラウド サービスに D / DS / G シリーズの VM を増設
– D シリーズの VM が既に存在するクラウド サービスに A / DS / G シリーズの VM を増設
– DS シリーズの VM が既に存在するクラウド サービスに A / D / G シリーズの VM を増設
– G シリーズの VM が既に存在するクラウド サービスに A / D / DS シリーズの VM を増設
Dv2 / GS シリーズとかも同様ですし、おそらく今後出てくる N シリーズも同じでしょう。
[対処策]
上記のような場合には、おとなしく構成を見直しましょう。
一応 A シリーズで動作させていたものを全て D シリーズに移すなどであれば再作成で対処は可能です。
該当クラウドサービスに属する VM をディスクを保持したまま一旦 “全て” 削除して制約をなくし、
そのあとで、残したディスクから VM を再作成しましょう。
[参考]
D シリーズの仮想マシンにサイズ変更できない事象について
http://blogs.msdn.com/b/dsazurejp/archive/2015/09/29/10644536.aspx
[エラーの例]
– クラシック ポータルで作成する場合
選択されたクラウド サービスが、前の手順で指定された仮想マシンのサイズをサポートしていません。
– PowerShell で作成する場合
New-AzureVM : Compute.CannotUpgradeDeploymentToNewRoleSize : Unable to upgrade the deployment. The requested VM size ‘Standard_DS1’ may not be available in the resources supporting the existing deployment. Please try again later, t
ry with a different VM size or smaller number of role instances, or create a deployment under an empty hosted service with a new affinity group or no affinity group binding.
とりあえず、ざっと思いついた代表的な二つだけ。
ARM まだまだ試しきれてないし、ほかにも色々ありそうですが。