この記事はCloud Automator Advent Calendar 2017の4日目の記事です。 せっかくなのでPelican + S3 + Githubでブログも移行してみました。残りのコンテンツは後ほどがががっとあげようと思います。
さてみんな大好きCloudAutomator とDatadogですが、私が一番好きな機能はそれぞれ
- CloudAutomator : Route53の値を変更する
- Datadog:インテグレーション機能が多い
という所です。 そこで今回は私が好きなサービス二つを掛け合わせます。
今回やる構成
CloudAutomatorでジョブを作成する
CloudAutomatorにはトリガーにHTTPがあります。
Cloud Automator | HTTPトリガーをリリースしました
これを使えばHTTPを叩く事でジョブを実行出来るのです。作り方は上記のリンクをご覧ください。 今回ジョブを二つ作ります。
- メンテナンスのFQDNに切り替えるジョブ
- 本サーバーのFQDNに切り替えるジョブ
作成したジョブのこのデータを取得します。
$ curl https://manager.cloudautomator.com/trigger/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
> -X POST \
> -H "Authorization: CAAuth xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
> -H "Content-Length: 0"
ここの
- httpsから始まるURL
- Authorizationの値
- Content-Lengthの数字
をメモっておきます。後でDatadogを開いた時にコピペでもいいかもしれません。 CloudAutomatorのAPI登録はRoute53のFullアクセス権限のみアタッチしたIAMユーザーで大丈夫です。
DatadogでWebhook機能としてCloudAutomatorを登録する
まずDatadogでWebhook機能をONにします。 Datadog-Webhooks Integration
WebhooksのConfigurationから設定をします。
その際に先ほどメモをしたCloudAutomatorのジョブの情報を入れます。
{"Authorization" : "CAAuth xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
"Content-Length": 0}
設定を保存します。 その後モニター作成を選び、障害時の挙動についての設定を行います。
今回はcode.popowa.comにDatadogエージェントを入れて監視しているのですが、2分間データが来なかった場合に自動でURLを切り替える挙動を想定したエラーとにします。 アラート時には切り替えのジョブをキックして、リカバリーしたら元々のURLに切り替えるジョブをキックします。
{{#is_alert}}
Server {{host.name}} is down!
Fail over to maintenance URL @webhook-CA-R53-Failover
{{/is_alert}}
{{#is_recovery}}
Server {{host.name}} is OK!
DNS switch to original URL @webhook-CA-R53-OK
{{/is_recovery}}
注意事項としてはCloud AutomatorのRoute53の値変更は同じタイプ(AもしくはCNAME)でしか変更出来ないという事です。 元々Aレコード値を、Failover時にCNAMEに変えることは出来ない ><
検証する
検証用のURL: http://dev.code.popowa.com
Datadogエージェントを止めます。Start/Stop/Restart the Datadog Agent – Datadog
aya@codepopowa:~$ sudo /etc/init.d/datadog-agent stop
[ ok ] Stopping Datadog Agent (stopping supervisord): datadog-agent.
2分後にWebhookが動くはずなので待ちます。 .... アラートが来た!
切り替わりました!
それではDatadogのエージェントを立ち上げ直して状態としては復旧とさせます。
Cloud Automatorのイベントログにも追加されていました。
やったね!今回はCloud Automator + Datadogでの自動切り替えでしたが、Datadogは色々な連携が出来るので、Cloud Automatorでフェイルオーバーしていると時にPageDutyなどで通知などもいいかもしれません。
Cloud Automator と PagerDuty を組み合わせた便利な使い方 – サーバーワークスエンジニアブログ
まとめ
Cloud Automator を使って簡単にフェールオーバー設定が出来ました。Route53のFailover機能もありますが、この機能を使えば 手動で切り替えとしても利用が出来るので、例えばAmazon DashみたいなものとFailover機能を実装するのもありだな〜と思いました。 もちろん環境に問題がないのが一番ですが、やはり障害時の備えは安く、お手軽にしておきたいですよね〜。 ぜひCloud Automatorを活用して運用の軽減ご検討ください👍