Goalist Developers Blog

【知ってるようで知らない】AWS EC2インスタンスのしくみ

こんにちは、ゴーリスト開発の飯尾です

最近AWSからこんなお知らせが来てなんじゃいと思いましたが
どうやらとあるインスタンスがもうすぐ死んでしまうらしい

f:id:y-iio:20180213162724p:plain

このあたり見るにつけ

docs.aws.amazon.com

qiita.com

ルートデバイスタイプがEBSなので、いったんインスタンス停止して開始したらOK〜

はい

よく考えたらルートデバイスタイプって何?なんで再起動したらOKなの?

EC2インスタンス日々使っているくせに
どういう仕組みで動いてるのかはぜんぜん知らなかったので調べてみました

そもそもEC2ってなんだ

EC2ってなんだ
仮想のサーバーをゾンアマさんから借りれるしくみだよ

インスタンスってなんだ
借りた仮想のマシンだよ
ホストコンピュータの一部分を一つのマシンとして扱うよ
ここではホストコンピュータ君の一部に肉体の型と魂を与えて一つのマシンとみなすよ

f:id:y-iio:20180213163049j:plain:w300

リージョンってなんだ・アベイラビリティゾーンってなんだ
ホストコンピュータが物理的に置いてある国・地域の分別のことだよ

f:id:y-iio:20180213163109j:plain

AMIってなんだ
インスタンスを作るためのテンプレートだよ
アマゾンマシンイメージの略だよ
マシンの肉体の型だよ

f:id:y-iio:20180213163135j:plain

EBSってなんだ
マシンのデータ置き場のひとつと思っておこう
ここではデータ=魂ということにするよ

f:id:y-iio:20180213163202j:plain:w300

肉体の型と魂さえあればどのホストコンピュータ上にも同じマシンを作れるよ

ルートデバイスタイプってなんだ

インスタンスはテンプレートを使って起動されるよ

昔はテンプレート置き場がS3にあって、インスタンス起動のたびに
それぞれのホストコンピュータのインスタンスストアにそれをコピってきて使っていたよ
データボリュームはその都度ホストコンピュータ上に作られているから
インスタンスを停止したらデータは失われるよ
「ルートデバイスタイプがインスタンスストア」っていうのはこういうことを言うよ

f:id:y-iio:20180213163241j:plain

今ではEBSというしくみがあって、
EBSベースに作られたテンプレートを使って、EBSに置いてある魂を紐づけて使ったりするよ
インスタンスを停止してもデータはEBS上に残るよ
「ルートデバイスタイプがEBS」っていうのはこういうことを言うよ

f:id:y-iio:20180213163305j:plain

docs.aws.amazon.com

なんで再起動したらOKだったんだ

ゾンアマさんからきた死亡宣告は、
「今動いてるインスタンスのホストコンピュータが調子悪いぜ!」
と言う意味だったよ

f:id:y-iio:20180213163422j:plain:w300

なのでいったん停止してまた起動し直すことで
別のホストコンピュータ上でインスタンスが起動したからOKになったよ

f:id:y-iio:20180213163357j:plain:w300

はい