1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[AWS]EC2スポットインスタンスがゾンビの如く蘇る...

1
Posted at

image.png

「……あれ? これのインスタンス止めたよな?」

コンソールを開くと、そこにいたのは――
停止したはずのSpot Instance。なぜか “起動中”

しかも一回じゃない。止めても、また起動する。
オートスケーリング? 設定してない。スケジュール? ない。EventBridge? 使ってない。

じゃあ誰が起こしてるんだ……?

結論から言うと、犯人は Spot周りの“復活する前提の設定” でした。
同じような“ゾンビインスタンス”に遭遇する人が減るように、調べたことをまとめます。


:beginner: 対象購読者

  • Spot Instanceを「たまにだけ」使ってる方
  • 止めたはずのEC2が勝手に起動して、コストに怯えたことがある方
  • 「ASG(オートスケーリンググループ)もEventBridgeも使ってないのに復活するの何?」となった方

:innocent: やっちまった…

「Spotだから安いし、とりあえず使ってみるか!」
止めたつもりが止まってなくて、こっそり稼働してた話です。

地味に怖いのがこれ。

  • 「止めたから大丈夫」だと思い込む
  • 実は裏で起動してる
  • 気づかず稼働し続けて、翌月の請求で爆死

“安いゾンビ”でも、増えれば普通に痛いです。


:eye: 起きていた現象:止めても起動するSpot Instance

やったことはシンプル。

  • Spot Instance を Stop(停止)
  • しばらくすると 勝手に起動
  • もう一度 Stop
  • また 勝手に起動
  • 終了してみる Delete
  • また 勝手に起動

「いやいや、ホラーかよ」と思いました。


:mag: まず疑ったこと(でも違った)

最初に疑ったのはこの辺。

  • Auto Scaling Group(ASG)が裏で復活させてる?
    • → 使ってない
  • EventBridge / Lambda / SSM / 何かのスケジュール起動?
    • → 該当なし
  • 誰かが起動してる?
    • → CloudTrail見てもそれっぽくない(※環境による)

「じゃあ何が起動してるんだ……」となって、Spot周りを深掘りしました。


:moneybag: 実は…「Spotの“復活前提”設定」がONになってた

ポイントはここです。

1) Spotには「中断(Interruption)時の挙動」がある

Spotは中断(キャパ不足など)されるとき、挙動を選べます。

  • terminate(終了)
  • stop(停止)
  • hibernate(休止)

ここで stop 停止になっていると、状況によっては 「止まったSpotが、また動き出す」みたいな体験をします。

2) さらに「Spot Requestのタイプ」が絡む(ここが落とし穴)

Spotは Spot Instance Request(リクエスト) の単位で動いてることが多いです。

  • one-time(1回きり)
  • persistent(永続)

image.png

この persistent(永続) を選択するとスポットリクエストというものが自動で作成されます。

• スポットインスタンスを起動するための スポットリクエストが残り続けます
• もしスポットが中断されてインスタンスが消えても、再び空きキャパが出たら自動で起動し直そうとします
• つまり “1回限り”ではなく、維持しようとする動きになります

つまり、

インスタンスを止めたつもりでも、
“リクエスト”が生きていると、また戻ってくる

これが“ゾンビ化”の正体でした。


:skull: 何が怖いのか:意図しない稼働=意図しないコスト

この挙動が怖いのは、技術的な驚きよりも 運用事故に直結する点。

  • 「止めたから大丈夫」だと思い込む
  • 実は裏で起動してる
  • そのまま気づかずコスト増加

Spotは安いですが、安い=無料ではない
そして「止めたのに動いてる」は、精神衛生にもよくない。


:wrench: 対策:止める対象は「インスタンス」だけじゃない

今回の学びはこれです。

:point_up: Spot Instanceを止めたいなら、「Spot Request」まで見に行く

  • インスタンスを Stop / Terminate しただけで安心しない
  • Spot Requests / Fleet / それに類する“維持する仕組み” が残ってないか確認する

やることのイメージはこう。

  • 「もう要らない」なら:Spot Requestをキャンセル(必要ならFleetも削除)
  • 「たまに使う」なら:
    • 意図した挙動(stop/terminate/hibernate)を理解した上で選ぶ
    • “復活する前提”が嫌なら、構成を見直す(terminate寄せなど)

:ramen: まとめ:Spotは安いけど、設定を知らないと“蘇る”

  • Spot Instanceを止めたのに勝手に起動することがある
  • 原因はだいたい Spotの“中断時の挙動”Spot Requestの生存
  • “止めたつもり”が一番危険で、コスト増加にもつながる
  • 作成時に「止めたらどうなるか」+「リクエストが残るか」をセットで理解するのが大事

止めたはずのインスタンスが、夜中にこっそり起動していた――
そんなことが本当に起きるので、Spotを使うときはぜひ一度 Spot Request周り まで見直してみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?