LoginSignup
3
0

More than 5 years have passed since last update.

AutoScalingのライフサイクルフックをAnsibleと連携させて使ってみた

Last updated at Posted at 2018-12-11

これを使うに至った経緯

ほぼ毎日日報書いてましたが、要はそこに書いてる↓これ!

Try :triumph:

cloud-init使ってのインスタンス起動時初期設定させたい。

【理由1】

実は、ここ最近の担当プロダクト利用者の増加により、本番バッチサーバの負荷増大で、ある程度定期的にSQSにメッセージが蓄積する状態が発生し、その度にSQSからメッセージを取得して動作するワーカーを再起動してました
 →メッセージ蓄積したときだけ、AutoScaleでスケールアウトさせて、メッセージ減ったらスケールインやるべきっしょ :exclamation:

【理由2】

AutoScaleの動作でメッセージの蓄積は回避できましたが、次はスケールアウトしてスケールインを繰り返すために、毎回起動されるインスタンスのIPアドレスが変わります:exclamation:
そのため、バッチサーバのワーカー起動状況を確認や操作できるWEB管理画面が開かなくんなるんですなー :sweat_smile:

 →インスタンスが起動したタイミングでローカルとAutoScaleで紐づいてるサーバのIPアドレスとって、Config自動設定したいなー

ということで調査していくと、解決策として考えたのが、cloud-initということです。
しかし、調査を進めていくと、結局はローカルでシェルスクリプトが動作しているような状態でした。。。 :cry:

これはちょっと・・・(インスタンスにUser-data書いてるのと同じだし、インスタンス別で持ってるからその差分がどうとかではまりたくないしなー)ということで、シェルスクリプトっぽい処理が一括管理できる方法を調べていくと、、、
参考サイトでやってる手段が見つかったというわけです。

他にも、下記のようなLamdaでやる方法もありましたが、「社内でAnsible使い始めてる」ということもあり、今回はこれを選びました

どうやったの?

上記、参考サイトと同じです。(ありがとうございます :bow:)構成は↓こんな感じです。
6851caf3-ba51-03e1-358b-5803537a177c.png

感想とか

使ってるWEB管理ツールが悪いんじゃん?とか、もっと違うやり方もあるじゃんとかツッコミもあるかとは思いますが、
Ansible使う勉強という意味でも今回はこんな形で実装してみました。
ちょっとはまった?対応したところは、参考サイトのスクリプトが「EC2が起動してるけど、SSHができない場合」に対応していない(SSHできちゃう前提になっていた)ので、そこを自分の環境へ反映する際に修正したのと、「AutoScaleでスケールアウトではなく、最初起動したときもライフサイクルフックが動作してSQSにメッセージが飛ぶ考慮がされてない」 ので、それに対応しないと常に起動時のメッセージを受信して失敗していたところです。
本番反映はこれからだけど、ひとまず、こんなことができたので、共有がてら記事書いてみました。

参考サイト

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