no auto restart on GCE

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の時は自動で再起動する
  • 任意のタイミングで再起動されて困るシステムは自動再起動を無効化したほうがよい
connvoi's Picture

About connvoi

肉とビールと料理と写真とゲーム たまに技術 python / Solr / PHP / ansible

アマゾンセール情報サイト アマセール管理人

Jp, Tokyo https://connvoi.com