GCEのインスタンスのhosterror時に自動で再起動しないようにする
GCEのHostErrorが起きた
そして、勝手にインスタンスが再起動して復帰してきていろいろ面倒だった
- GCEのインスタンスがHostsErrorの時は自動で再起動する
- 任意のタイミングで再起動されて困るシステムは自動再起動を無効化したほうがよい
GCEのインスタンスが突如として再起動した
普段だと、GCEのインスタンスが突如として再起動することはほぼない 監視としては4~5分間インスタンスが停止するような状況だった。
ログとしてはmessagesにいきなり起動シークエンスのログが流れていた どうやらHostsErrorというものらしく、GCEのインスタンスをホストしている物理マシンが何かしらのエラーを起こしたときに発生するらしい
GCEのドキュメントによると、このエラーが発生した場合、GCEは自動でインスタンスを再起動するようになっている
ホストエラー(compute.instances.hostError)は、VM をホストしている物理マシンで、VM がクラッシュするようなハードウェアまたはソフトウェアの問題が発生したことを意味します。ハードウェア全体の障害やその他のハードウェアの問題でホストエラーが発生すると、VM のライブ マイグレーションが停止することがあります。VM が自動的に再起動するように設定されている場合(デフォルト設定)、Google は通常、エラーが検出されてから 3 分以内に VM を再起動します。問題によっては、再起動に最大 5.5 分かかります。
で、自動再起動が発生してしまうと困ることが、持っているディスクの状態とサービスの状態の同期が取れなくなってしまう 動かしているサービスによっては、中途半端な状態でサービスを続けちゃう状態になってしまう。というか実際にそうなった
自分の場合はApache Solrのインデックス半壊した?みたいな状態になってしまった。 おそらく、データの更新中にHostsErrorが発生し、再起動した時にそのままの状態でサービスが開始されてしまったのが原因だと思われる
HostsError時の自動再起動を無効化する
サービスにもよるんだけど、自動再起動を無効化することにした gcloudのコマンドが割と簡単に出来た
$ gcloud compute instances set-scheduling INSTANCE_NAME --no-restart-on-failure
まとめ
- GCEのインスタンスがHostsErrorの時は自動で再起動する
- 任意のタイミングで再起動されて困るシステムは自動再起動を無効化したほうがよい