Route 53を使ったマルチリージョンのフェイルオーバーを試す
Posted On 2025-01-24
Route 53のフェイルオーバールーティングを中心にALBやACMなどを複数リージョンで組み合わせ、プライマリ障害時にセカンダリへ切り替わる仕組みをTerraformで実装した事例。 リソース数こそ多めだが設定は比較的簡単。
目次
はじめに
- SAPを勉強していてよく出てきた、マルチリージョンのフェイルオーバーを試してみた
- Route 53にフェイルオーバールーティングをすればよくて、あとは複数リージョンにわたるALBやACM、Webサーバーをデプロイすればいい
- ちょっとリソース数多くて面倒だけど割と簡単だった
作るもの
アーキテクチャー図
- Webサーバーはパブリックサブネットでも良かったけど、デバッグでSSHで乗り込むときにSession Mangaer使えたほうが便利なので、プライベートサブネットにおいてみた
- インターネットへのルーティングはNATインスタンス(fck-nat)でしてる。
- Route 53はグローバルだけど、ACMはリージョン単位なので注意
コード
長いのでGitHubにおいてみた。プライマリ、セカンダリでコードがくどくなったので、リージョン単位でまとめてモジュール化しても良かったかしれない
https://github.com/koshian2/multi-region-fail-over-test
接続時の挙動
普通に接続するとプライマリリージョン(ap-northeast-1)が出てくる
ここでプライマリリージョンのEC2インスタンスを停止してみる。するとすぐにはフェイルオーバーせず(Route 53のフェイルオーバーのしきい値があるので)、504が出る。
しばらくするとセカンダリリージョンに切り替わる。フェイルオーバーを早くしたければRoute 53のリクエスト間隔やしきい値を調整してくださいという話。
所感
- 割と簡単だった
- ACMはワイルドカード(
*.example.com
)で作らないとブラウザ側でエラーになる - むしろTerraformのマルチリージョンの扱いのほうがハマった
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー