こしあん
2025-01-24

Route 53を使ったマルチリージョンのフェイルオーバーを試す


53{icon} {views}


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の中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内

技術書コーナー

北海道の駅巡りコーナー


Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です