竹丼が再起動しなくなったので zone を移動したかったけどダメだった話

竹丼が死んでいるという報告があったので見に行ったら死んでいたので起動コマンドを叩いたらエラーになった。

ERROR: (gcloud.compute.instances.start) The zone 'projects/XXXXXXX/zones/asia-northeast1-b' does not have enough resources available to fulfill the request.  Try a different zone, or try again later.

〜2018/10/11追記ここから〜

前回とは別のエラー内容で再起動しなくなったため追記。 NAT IP? が枯渇したらしい。

ERROR: (gcloud.compute.instances.start) The global or regional natIP resource pool is exhausted

〜ここまで〜

こちらを見る限りだとGCEのリソース不足で起動できていないっぽい。もともとプリエンプティブは余剰リソースに間借りしてるイメージなので、こういうう場合には優先して奪われるのかもしれない。

zone を移動できないかなと思ってやってみた

こちらの記事を参考にした。

まず自分のインスタンスの zone を確認しておく

gcloud compute instances list

引越し先の zone を確認

gcloud compute zones list --project=プロジェクト名

以下のコマンドを実行

gcloud compute instances move インスタンス名 --project=プロジェクト名 --destination-zone=引越し先のzone
No zone specified. Using zone [asia-northeast1-b] for instance: [XXXXXXXX].
Moving gce instance XXXXXXXX ...failed.                                                                   
ERROR: (gcloud.compute.instances.move) Instance cannot be moved while in state: TERMINATED

起動していないと move できないので詰んだ\(^o^)/

朝起きても復帰していなかったので仕方なく手を打った

  1. Compute Engine > スナップショット から使用していたインスタンスのスナップショットを作成
  2. Compute Engine > VMインスタンス から止まってしまったインスタンスを編集し、外部IPアドレスを「なし」に変更して保存する(再利用のため)
    そのまま上の方のメニューにある「同様のものを作成」を選択して、以下のことを行う。(旧:クローンを作成)

    • ブートディスクを変更し、作成したスナップショットを選択する
    • ネットワークに先程外した外部IPアドレスをセット
    • プリエンプティブを「オフ」にする

これで起動すると今までと同じ環境でプリエンプティブを外した引き継ぎができる。
オンのままだと同じリージョンだとどのゾーンを選んでも駄目ったったのでプリエンプティブを切って対応した。

というわけで復活したのだけど、意図していなかったトラップにひっかかったのは良い経験。
これが発生するとなると、ロードバランサー + プリエンプティブ複数台で24時間運用とかも厳しいだろうということがわかった。
しばらく様子見てまたプリエンプティブを使えるようであったら、同じ方法でプリエンプティブインスタンス作れば良いと思う。