​ ​

Route53のヘルスチェック元IPをセキュリティグループに自動で追加する

土曜日にOSC2015Hokkaido後に久しぶりにPerlなメンバーで飲んだonagataniです。
関係ないですが今年の夏にネットの無い環境でエンジニアキャンプしたいなーと画策中なので皆さん興味があれば是非。

先日Route53のヘルスチェック設定に使用した方法を公開します。例えばの構成ですが以下のようなDR/BCPはよくある構成かと思いますが、Route53のヘルスチェック元IPはみなさんどのように通していますか?
route53.png

東京リージョンのEC2(Movable Type等のCMSサーバ)は接続元IPをセキュリティグループで保護しAny接続を禁止しています。
もし東京リージョンのEC2に問題が発生した場合はシンガポールリージョンのEC2にDNSをフェイルオーバーする構成です。
Route53のヘルスチェックは世界中にあるサーバから定期的にヘルスチェックを行いますのでヘルスチェック元のIPをセキュリティグループで許可する事でフェイルオーバーが可能になります。
aws cliではRoute53のヘルスチェック元IP一覧を取得する機能がありますので、これを利用する事で自動的にセキュリティグループの許可IPを更新できそうです。

$ aws route53 get-checker-ip-ranges --query 'CheckerIpRanges[]'

ということで自動的にセキュリティグループへIPを追加するスクリプトを組みました。

機能

指定されたセキュリティグループへRoute53のヘルスチェック元IPを追加します

使用方法

以下のようにcurlでそのまま実行するかダウンロードして実行して下さい。
※ aws cliのインストールされた環境(AmazonLinuxの場合は初期でインストールされています)で事前にaws cliのコマンドを有効化しておいて下さい。aws configureを実施するか、IAMロールをEC2に割り当てて下さい

$ curl -L https://raw.githubusercontent.com/onagatani/route53-sg-healthcheck/master/route53-sg-healthcheck | bash /dev/stdin -s sg-XXXXX

オプション

  • -s:セキュリティグループID(必須)
  • -a:AWS Cliのパス(デフォルト値/usr/bin/aws)

注意

  • セキュリティグループはRoute53ように1つ用意して下さい。他のIPが登録されていると削除されたり・設定数の上限値(50)にひっかかる可能性があります
  • リストから削除されたIPを削除する機能は未実装です。実行毎に前回のセキュリティグループをまるごと削除して新規にセキュリティグループを設定するなど必要かもしれません
  • 監視ポートを80番で固定にしてまっています。次回のバージョンアップまでお待ちください

cronで一日に一回程度で実行すると抜け漏れがないかと思います。もっと簡単な方法があれば教えて下さい!ご意見お待ちしております。thanks @marcy_terui

このエントリーをはてなブックマークに追加