邪聖剣ゾンビキラー
anonymous
邪聖剣ゾンビキラー。この剣ははたして、邪なのかそれとも聖なのか、どちらのかはっきりしろという突っ込みが飛んで来そうだが、そこは軽く流してほしい。
さて、早速本題に入るが、Nova上でインスタンスを使っていて、落ちたはずのインスタンスがゴミとして残ることがある。Compute Node上では仮想マシンは確かに停止・削除されているが、インスタンスリストには残ってしまうというものである。
死んだのに生きている、つまりこれがゾンビ状態になっているということだ。基本的には仮想マシンを落とすと管理用のデータベースからもそのインスタンスが削除されるはずであるが、稀にゾンビとして残る場合がある。
ゾンビの存在は認めるべきだ。昔から世界中でゾンビをテーマとした映画が公開されてきた。13日の金曜日、リング、ゴーストバースターズ...、私はゾンビの存在を認めるべきであると考える。しかし、ユーザーの中には、「何故インスタンスが存在しないのに、インスタンスリストにインスタンスが残っているのか」と疑問を持つものも多いのもまた事実だ。
ここでは、そんなゾンビを消し去る邪聖剣ゾンビキラーをご紹介しよう。
Novaでは、インスタンスはデータベースで管理されている。このインスンタスは、停止したからといってデータベースから削除される類のものではなく、停止したインスタンスに削除フラグをつけて管理している。これにより、過去のインスタンスの利用履歴が残るようになっている。
ゾンビインスタンスを発見した場合、フラグを立ててやればいい。 やっつけだが、下記のようなスクリプトを書いて対応している
zonbi-killer.sh
#!/bin/sh
IP=`euca-describe-instances |grep $1 |awk '{print $4}'`
UUID=`nova list|grep $IP|awk '{print $2}'`
mysql -unova -pnova nova -e "update instances set deleted = 1 where uuid='$UUID'";
$ zonbi-killer i-0000005c
などとしてインスタンスIDを指定すればよい。ゾンビにお困りの諸兄はぜひ試してみてくれたまえ。