inFablic | Fablic, inc. Developer's Blog.

フリマアプリ ラクマを運営する Fablic の公式開発者ブログです。Fablic のデザイナー・エンジニア・ディレクターが情報発信していきます。

AWSの便利機能とURL監視 -- Fablic Advent Calendar 2017

初めまして。@y-uehiraです。 今回の記事はAWSの便利機能をご紹介できればと思います。 re:Inventなどでも紹介されており、日々進歩しておりますので、2017/12/08時点とさせていただきます。

自己紹介

こう見えましても一応AWSの資格を所持しております。

  • アソシエイト
    • AWS認定ソリューションアーキテクト
    • AWS認定Sysopsアドミニストレーター
  • プロフェッショナル
    • AWS認定ソリューションアーキテクト

AWSはみなさまご存知だと思いますので、説明は割愛させていただきます。 一般的な製品に関して便利な機能をご紹介させていただきます。

Trusted Advisor

この製品は無料で使用できますがサポートプランに連動してます。 現在利用しているAWS環境に対するアドバイスをしてくれます。

f:id:infablic:20171211120732p:plain

上記の画面はサポートプランが Developer の場合のサンプル画面となります。 さらにサポートプランをあげると、コスト最適化・パフォーマンス・フォールトトレランスをアドバイスしてくれます。 たまーに見てチェックするのもありかと思います。

CloudFormer

クラウドフォーメーションはAWS環境を作成するのに便利なものだけだと思っていませんか? システムを構築する際はもちろん、現状のシステムをjsonでexportすることが可能です! 定期的にAWS環境をjsonにexportし、海外リージョンのS3に置いておくだけでDR対策が可能になります!!

f:id:infablic:20171208185139p:plain

ALB

ALBはL7でバランシングができる製品です。

ipバランシング

今まではAWS製品のEC2しかバランサーに紐付けできなかったんですが、いつかのupdateでipベースでバランシングできるようになりました。

f:id:infablic:20171211115249p:plain

そのため、AWSとVPNを通しておけば、GCPのインスタンスへバランシングしたり、DCへバランシングしたり可能。 DCにメインサーバーはあるが、CDN使いたいなどはCloudFront->ALB->VPN->DCなども可能。

落とし穴

  • ALBの課金体系が"LCU(ロードバランサーキャパシティーユニット)"となってから、ヘルスチェックがあまり意味のないものになってしまった。
  • ELBのヘルスチェックは"Out of Service"となった場合は、リクエストをサーバーに投げない。
  • しかしALBは新規コネクション数などから課金される仕組みのため、ヘルスチェックがNGでもリクエストの投げ場がないため、サーバーに送信する。
  • もちろんサーバーがdownしていた場合は送信できないが、ヘルスチェックが200以外レスポンスでもALB(ターゲットグループ)からは外れず、クライアントからのリクエストをサーバーに送り続けます。
  • なのでCloudWatchのHealthyHostCountなどで監視して、アラート出ても実はエンドユーザーには影響がないって場合もあります。

URL監視

そこでALBのHealthyHostCountはあまりあてにならないってことで、外部サービスでURL監視してみることにしました! Route53のHealthチェックで監視はできるが、監視対象がIP制限かかってた場合は対応できない。。 (Route53のip-rangeがいっぱいで頑張ればできるがSecurityGroupの設定しんどいし、変更される可能性あり)

https://ip-ranges.amazonaws.com/ip-ranges.json

選定ポイント

  1. 監視可能HOST数と価格のバランス
  2. シンプル
  3. 監視先にてip制限したいので監視サーバーのip-rangeが少ないサービス
  4. 最大50で有料でも5000円以内
  5. 他にどこの会社が使っていそうか

選定結果

rapidspike.com

使ってみた

f:id:infablic:20171211115154p:plain

結構使いやすそうです!

  • アラートメール

f:id:infablic:20171211104944p:plain

  • 復旧メール

f:id:infablic:20171211104956p:plain