LoginSignup
30
33

More than 5 years have passed since last update.

AWS Route53のFailover機能を利用したSorry Pageの実装

Posted at

目的

ELBで運用しているEC2上のWebサーバーがなんらかの理由でアクセス負荷になりサーバーすべてが切り離されてしまい、その後サービス続行になってしまうような状況が訪れてしまった場合に、自動的にいわゆるSorryPage(「現在サービスに不具合があります」みたいな)を表示することができるようにします。

利用するサービス

- Route53によるDNSフェイルオーバー機能
- ElasticBeanstalk
- EC2
- S3によるWebホスティング

構成

ElasticBeanstalkで構成した以下のような簡単な構成で実験してみます。
ElasticBeanstalkによる環境の構成手順は省略します。

           ↓
+-----------------------+
| Elastic Load Balancer |
+-----------------------+
  ↓                   ↓
+-----+            +-----+
| EC2 |            | EC2 |
+-----+            +-----+

ELBにぶらさがったEC2が両方ともfailしてしまいELBからアクセスを振り分けられなくなる障害を想定します。

準備

Webドメイン

radioboo-example.xyz というドメインを想定します。

S3静的ウェブホスティング上にSorryページ設置

  • S3上にradioboo-example.xyzという名前のバケットを作成します
    • Webサイトホスティングを有効化
    • 適当なindex.htmlなどを配置しそれをSorryPageとします
    • http://radioboo-example.xyz.s3-website-ap-northeast-1.amazonaws.com/ のようなURLでアクセスできることを確認しておきます。

Route 53の設定

Primaryホストゾーンの設定

以下のようにPrimaryホストゾーンを設定しておきます。

  • Nameはアクセスドメインを設定。この場合、radioboo-example.xyz を設定します。
  • Alias TargetはELBのドメインを指定
  • Evaluate Target Healthを"Yes"にしておくことでELBのヘルスチェックと連携してFailoverを実行してくれます。

スクリーンショット 2015-08-25 1.00.07.png

Secondaryホストゾーンの設定

以下のようにSecondaryホストゾーンを設定しておきます。

  • Nameはアクセスドメインを設定。この場合、Primaryと同様に、 radioboo-example.xyz を設定します。
  • Alias TargetはS3で建てたウェブホスティングのドメインを指定

スクリーンショット 2015-08-25 1.21.27.png

挙動テスト

障害をシミュレート

  • 挙動を確認するため、EC2をELBからわざと切り離してみます。EC2のコンソールから主導で切り離してみます。
  • しばらく待つとS3から配信しているSorryPageに切り替わりました。

スクリーンショット 2015-08-25 1.35.08.png

復帰をシミュレート

  • 障害からの復帰を想定して、ELBにEC2を主導で復帰させます。
  • しばらく待つと勝手にEC2から配信している通常のサービスページに切り替わりました。

スクリーンショット 2015-08-25 1.43.29.png

以上です。
Route53のfailover機能を使えば、非常に簡単に実装できました。

30
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
33