Route53にはヘルスチェックを利用したフェイルオーバー機能があるが、
CloudWatchアラームを利用したフェイルオーバーを確認したので備忘録として残す。
構成
・Network Load Balancer(1a,1c)
・EC2 インスタンス2つ(1a,1c)
設定の流れ
- EC2を適当に作成
Amazon Linuxを利用しEC2を2つ作成。
dnf install httpdしてNetwork Load Balancerからヘルスチェックを受信できるようにする - ターゲットグループとNetwork Load Balancerを作成
1.で作成したEC2を対象にする - CloudWatchアラームを作成
2.を作成するとCloudWatchメトリクスに「ターゲットグループ、AZ 別メトリクス」が作成されるので、AZ毎のUnhealthyHostCountのアラームを2つ作成する。 - Route53ヘルスチェックを作成
Route53コンソールからヘルスチェックを作成する。ヘルスチェックは3で作成したCloudWatchアラームを指定する。ヘルスチェックはアラーム毎に作成するため2つ作成する。 - Route53プライベートホストゾーンとレコードを作成
プライベートホストゾーンを作成し、フェイルオーバータイプのAレコードを作成する。
それぞれのレコードのヘルスチェックIDは別のものを設定する。
動作確認
・両方のEC2のApacheを起動した状態で名前解決
→プライマリのアドレスが解決される
・AZ 1aのEC2のApacheを停止した状態で名前解決
→セカンダリのアドレスが解決される。解決結果が変わるのに5分程度かかった。アラーム期間とTTLが影響?
・AZ 1cのEC2のApacheを停止した状態で名前解決
→プライマリのアドレスが解決される
・両方のEC2のApacheを停止した状態で名前解決
→プライマリのアドレスが解決される