Sorry画面、どうやって出してますか?
『【初心に帰るシリーズ】月額約10円でウェブサイトを設置する』にてAmazon S3でウェブサイトを設置できるよという話をしました。今回はこの応用編のお話をしようと考えております。 「メンテしてます」画面、いわゆるSorry画面をお気軽に出せますというお話です。 「Sorry画面を出さないような運用をしましょう」というツッコミは無しの方向でお願いします。
Sorry画面の出し方
ざっと考えると、Sorry画面を表示できるようには下記のようにします。- 「本番サイトが生きているか」の監視
- 「本番サイトが死んだら」の切換え
面倒ですよね。 通しで考えると、
本番サイトを監視と、なります。
↓ 本番サイトが死んだら… or 止めたら…
Sorry画面サイトを立ちあげ
↓ 本番サイトが復活したら…
本番サイトを表示
これが自動的にできるとラクですよね。
それ、Amazon S3とRoute 53でできます
DNSサービスであるRoute 53にて、サービスのURLにアクセスされたら本番サーバに振るように設定します。本番サーバが動いています(と、思ってください)
サーバを止めてみると、当然アクセスできなくなります。
Route 53の設定に、「本番サイトを監視して死んだらS3に設置しているSorry画面(代替サイト)を表示する」設定を加えます。
「Heath Checks」をクリックします。
「Create Healt Check」をクリックします。
監視対象を入力します。
- 監視するのはHTTP
- 監視対象の本番サイトのIPアドレスを入力
- 監視するポートの番号はHTTPのデフォルトなので80番
- ホスト名を入力します
- 監視はトップページに対して行うので「/」を入力します。
入力したら「Create Health Check」ボタンをクリックします。 監視設定ができました。
「Hosted Zones」をクリックしてこの設定を使います。 本番サイトが死んだときの代替サイトにアクセスを振る設定をします。
「Create Record Set」をクリックして設定を追加します。
- 「Alias」で「Yes」を選び、エイリアス先を代替サイトを指定します。
ここでは、『【初心に帰るシリーズ】月額約10円でウェブサイトを設置する』にて作った代替サイト(「メンテ中です」と表示するサイト)を指定しています - 「Routing Policy」は、「Failover」を選びます
- 「Failover Record Type」は、代替なので「Secondary」を選びます
次に本番サイトのDNS設定を修正します。
本番サイトのDNS設定にチェックを入れて選択します。
- 「TTL」を「60(ms)」にします
- 「Routing Policy」を「Failover」にします
- 「Failover Record Type」は、本番サイトなのでこちらを優先したいので「Primary」のまま
- 「Associate Health Check」で、ヘルスチェックの設定を先ほど作成した監視設定を選びます
設定が終わると、こんな感じになります。
うまく動くか試してみます。
サイトにアクセスしてみると、本番サイトを止めたままなので、セカンダリとして指定したAmazon S3に設置した代替サイトが表示されます。
本番サイトを稼働させてみます。
本番サイトはプライマリとして設定したので、こちらに優先してアクセスが振られるようになります。
今回は、本番サイトを停止した状態でRoute 53の設定をしましたが、当然、本番サイトを稼働させたままでも設定できます。
まとめ
代替サイトを立ち上げたままの状態で、本番サイトの稼働/非稼働を切替えるだけで、「メンテ中です」(Sorry画面)を表示されるようにすることができました。代替サイトはAmazon S3に設置されているので、月額約10円とランニングコストは非常に安価です。
本番サイトはAWS上になくても、代替サイトをAmazon S3でDNSをRoute 53でと、AWSで行うようにすれば同様のことを実現できますので、「本番サイトは今AWSにないんだよね…」 という場合でも比較的導入しやすいと言えます。
「いずれAWSにしようと思っているんだけど…」とお考えでしたら、まずはこのあたりからAWSを試してみるのはいかがでしょうか。 ご不明な点がありましたら、AWSについていろいろお手伝いできますので是非お問合せください。