【初心に帰るシリーズ】月額約10円で設置したウェブサイトの有効活用方法

記事タイトルとURLをコピーする

Sorry画面、どうやって出してますか?

『【初心に帰るシリーズ】月額約10円でウェブサイトを設置する』にてAmazon S3でウェブサイトを設置できるよという話をしました。
今回はこの応用編のお話をしようと考えております。 「メンテしてます」画面、いわゆるSorry画面をお気軽に出せますというお話です。 「Sorry画面を出さないような運用をしましょう」というツッコミは無しの方向でお願いします。  

Sorry画面の出し方

ざっと考えると、Sorry画面を表示できるようには下記のようにします。
  • 「本番サイトが生きているか」の監視
  • 「本番サイトが死んだら」の切換え
つまり、「本番サイトを止めたら、ぱっとSorry画面を表示するサイトを立ち上げる」を行う必要があります。
面倒ですよね。 通しで考えると、
本番サイトを監視
  ↓ 本番サイトが死んだら… or 止めたら… 
Sorry画面サイトを立ちあげ
  ↓ 本番サイトが復活したら… 
本番サイトを表示
と、なります。
これが自動的にできるとラクですよね。   

それ、Amazon S3とRoute 53でできます

DNSサービスであるRoute 53にて、サービスのURLにアクセスされたら本番サーバに振るように設定します。
USE S3 23
本番サーバが動いています(と、思ってください)
USE S3 24
サーバを止めてみると、当然アクセスできなくなります。
USE S3 25
Route 53の設定に、「本番サイトを監視して死んだらS3に設置しているSorry画面(代替サイト)を表示する」設定を加えます。
「Heath Checks」をクリックします。
USE S3 26
「Create Healt Check」をクリックします。
USE S3 27   監視対象を入力します。
  • 監視するのはHTTP
  • 監視対象の本番サイトのIPアドレスを入力
  • 監視するポートの番号はHTTPのデフォルトなので80番
  • ホスト名を入力します
  • 監視はトップページに対して行うので「/」を入力します。 
USE S3 28

入力したら「Create Health Check」ボタンをクリックします。  監視設定ができました。
USE S3 29    「Hosted Zones」をクリックしてこの設定を使います。 本番サイトが死んだときの代替サイトにアクセスを振る設定をします。
「Create Record Set」をクリックして設定を追加します。 USE S3 30
次に本番サイトのDNS設定を修正します。
本番サイトのDNS設定にチェックを入れて選択します。
  • 「TTL」を「60(ms)」にします
  • 「Routing Policy」を「Failover」にします 
  • 「Failover Record Type」は、本番サイトなのでこちらを優先したいので「Primary」のまま
  • 「Associate Health Check」で、ヘルスチェックの設定を先ほど作成した監視設定を選びます
USE S3 31
設定が終わると、こんな感じになります。
USE S3 32    うまく動くか試してみます。
サイトにアクセスしてみると、本番サイトを止めたままなので、セカンダリとして指定したAmazon S3に設置した代替サイトが表示されます。
USE S3 33 
本番サイトを稼働させてみます。
本番サイトはプライマリとして設定したので、こちらに優先してアクセスが振られるようになります。
USE S3 34 
今回は、本番サイトを停止した状態でRoute 53の設定をしましたが、当然、本番サイトを稼働させたままでも設定できます。

まとめ

代替サイトを立ち上げたままの状態で、本番サイトの稼働/非稼働を切替えるだけで、「メンテ中です」(Sorry画面)を表示されるようにすることができました。
代替サイトはAmazon S3に設置されているので、月額約10円とランニングコストは非常に安価です。
本番サイトはAWS上になくても、代替サイトをAmazon S3でDNSをRoute 53でと、AWSで行うようにすれば同様のことを実現できますので、「本番サイトは今AWSにないんだよね…」 という場合でも比較的導入しやすいと言えます。
「いずれAWSにしようと思っているんだけど…」とお考えでしたら、まずはこのあたりからAWSを試してみるのはいかがでしょうか。 ご不明な点がありましたら、AWSについていろいろお手伝いできますので是非お問合せください。
Toiawase

この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

"; doc.innerHTML = entry_notice + doc.innerHTML; }
' } }) e.innerHTML = codeBlock; });