邪聖剣ゾンビキラー

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を指定すればよい。ゾンビにお困りの諸兄はぜひ試してみてくれたまえ。