Azureで動かしていた仮想マシンがとある理由で停止させられたことが発端となり、しばらくサービスが止まるという惨劇があったのでメモ。
結論
経緯説明が長いので、結論を先に書いてしまうと以下の通り。
仮想マシンの起動操作をしてもエラーになる場合
- 仮想マシンの構成(プラン)を一時的に変えてみる
- バックアップ(vhd)から別の仮想マシンを立てる
- クラウドサービスの停止と開始を行う
先月のこと
Azure内で起動していた仮想マシンがすべて停止してしまいました。原因はクレジット切れによる停止処置。管理者アカウントの方で制限を解除することができるようなので対応してもらいました。
まだサービス開始前の準備段階だということもあって大きなトラブルになることもなく、これで制限解除したから安心だなーとか思ってました。
再び全サーバ停止
そんなこともすっかり忘れた頃、気がつけば全仮想マシン停止という悪夢がやってまいりました。「前回解除してもらったはずでは?」と思いつつも、とりあえず同じ手順で復旧しようということで管理者に制限解除のお願いをしました。
何故か起動しないサーバ達
制限解除の手続きも終わり、Azureポータルでの操作も受け付けるようになったので仮想マシンの開始操作を行いました。一刻も早く開始しなければ!という思いから次々に仮想マシンで開始ボタンを押していったのですが、どうしたことかいくつかのサーバが起動していません。
起動に失敗するサーバ達
これは後から分かったことですが、起動しないサーバには以下のような特徴がありました。
- 特定のクラウドサービス内の仮想マシンのみエラーになる
- 1台だけ「停止済み」残りは「停止済み(割当解除済み)」である
- 新ポータルでは開始ボタンが無効になっている
- 旧ポータルでは開始ボタンを押すとエラーになる
- 「この展開に対して、排他的アクセスが必要な、x-ms-requestid が xxxxxxx の操作を実行しています」
対応策
これは自分ではどうにもならないと考え、サポートに問い合わせを行いました。経緯を簡単に説明したところ、エラーメッセージから察するに何らかの仮想マシンの操作が完了せずに残っているせいで操作ができなくなっているのではないかということでした。
そこで次のようなことを試すことになりました。
仮想マシンの構成(プラン)を変更してみる
これにより、別の物理マシンに展開されることを期待するということでした。ですが、開始操作と同様のエラーが出てしまったため解決にはならず。
仮想マシンのバックアップを行って別の仮想マシンを立て直す
ダッシュボードから取り込みボタンを押せばvhdをバックアップできるので、それを使って新しく仮想マシンを作りなおすという方法を提示されました。
これも同様のエラーが出たために失敗に終わりました。
クラウドサービスの停止
今まで仮想マシンの方で開始と停止を行っていたのですが、クラウドサービスにも開始と停止があります。そこで停止を行って原因となっている操作を強制的に破棄させるという方法でした。
試してみたところ、こちらは今までと違ってエラーは出ずに正常に終了しました。
この後、クラウドサービスを停止したまま仮想マシンの開始を行うとエラーにはならないものの開始してくれないという状態になっていたのですが、クラウドサービスの開始を行うと配下の仮想マシンも一緒に起動してくれました。
それでもダメな場合
今回はポータル内での操作で解決したのですが、どうしてもダメな場合はデータセンターに直接依頼して原因となっている操作を取り消す必要があるとのこと。
複数の仮想マシンを立ち上げる場合は1台ずつ
結局のところ、今回のようなエラーが出るようになってしまった原因は分からずじまいでした。ですが、仮想マシンを起動する際には「実行中」になるまで次の操作しない方が良いだろうとは言われました。
通常はこんなことは起きないらしいのですが、念のためにお願いしますとのことでした。
制限解除の謎
そもそも何故すべて停止してしまったのかという疑問もありますが、これは前回行った制限解除が「当月だけ解除する」という選択をしてしまった可能性があるそうです。