LoginSignup
3
2

More than 5 years have passed since last update.

AWS EC2で自動復旧するために、Auto Scalingで実現する3つのパターン考察

Last updated at Posted at 2018-02-07

※この投稿は答えが書いてるわけじゃなく、みんなどうやってるのかなぁ?と思いながら書いてます。

ec2 auto scalingを使って、ec2が万が一落ちても自動復旧してくれないかなぁと思ったのですが、ec2 auto scaling自体はどうやらAMIからec2を立ち上げるくらいしかしてくれないことがわかりました。
この新規で立ち上がったec2をどうやって最新状態にするのか?以下3つのパターンを考えてみました

パターン1: そもそも最新の状態のAMIを常に用意しておく

多分一番多いパターン。
デプロイスクリプトに「AMIの作成」と「auto scalingで指定しているAMI-idの変更」を組み込んでおけばよいのではないかと考えられる。
しかし、runningのインスタンスからAMI作成しようとすると瞬断しちゃうので、みんなAMI作成用のインスタンスを毎回立ち上げてAMI作成してるんだろうか?

パターン2: ec2が起動したときにプロビジョニング用の外部APIを叩くスクリプトを仕込んだAMIを用意しておくパターン

ec2の起動スクリプトに、自身をプロビジョニングするためのAPIを叩くスクリプトを用意しておくパターン。
「自身をプロビジョニングするためのAPI」はansble towerやjenkinsが多いんだと思う。
環境変数で、外部からAPIのurl(及びパラメータ)を操作できるようにしておけば用意するAMIはサービスに関係なく1つだけでよい。一方で立ち上がるまでに時間がかかってしまう

パターン3: ec2が起動時のnotificationを利用してプロビジョニング

パターン2と酷似するが、起動スクリプトではなく、auto-scalingが発火するnotificationをSNSで受け取ってlambdaなどでapiを叩くパターン
メリデメはパターン2と同じ

みなさんどうしてます?

いずれにしても、結構めんどくさいなぁというのが所感でした。
もう開発が止まっていて構成も変わらないようなサービスはパターン1が絶対にいいと思うんですが、更新が頻繁なサービスはどうしてるんでしょうか?
他にもパターンあるよ。うちはこうしてるよなど教えていただきたいです。
よろしくお願いします

3
2
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
3
2