EC2でterminate-clusterしてもインスタンスが終了しないときの対策

2010.02.15 / aws

EC2でクラスタを終了させるツールとしてAmazon EC2 API Toolsでec2-terminate-clusterが用意されてます。で、HadoopでおなじみのClouderaもそのpython用ラッパーを作ってくれていて、僕は普段はclouderaのラッパーを利用していますが、これがよく終了に失敗します。失敗するとどうなるか?というと、いくつかインスタンスが生き残っていて、終了させたクラスタと同名のクラスタを再び起動させようとしたときに、エラーになってコケる不具合が生じます。

で、これがおきると毎回ec2-describe-instancesして、生き残っているEC2インスタンスIDを特定して、それぞれec2-terminate-instanceする。。。と面倒な作業が発生するので、クラスタ指定でインスタンスIDを個別でterminateするスクリプトを書きました。

ec2-terminate-cluster-instances $cluster_name

で、指定クラスタのインスタンスを完全に終了させます。