Masahiko Kitamura

Failover(5) Failover設定の応用編とまとめ

Blog Post created by Masahiko Kitamura Employee on Aug 3, 2017

1. はじめに

 

前回の記事では最も典型的なFailover設定であるNetStorageを用いたSorryコンテンツの配信設定について説明しました.これまでいろいろなFailover動作を紹介してきましたので,今回はそれら動作のおさらいとその比較をしてどのような場面でどの設定にすべきかを見ていきたいと思います.また,後半では,前回の記事ではカバーできなかった代替オリジンサーバからSorryコンテンツを配信する設定方法について説明いたします.

 

 

2. Failover時の代替コンテンツ提供方法の比較

 

前回の記事の再掲になりますが,アカマイではFailover時のSorryコンテンツの提供の方法として以下の3つの方式を提供しています.

 

  1. エッジサーバ上に有効期限切れのキャッシュが残っていれば,それを返す(Serve Stale Content)
  2. 別のURLにリダイレクトする(外部サイト)
  3. 代替オリジンサーバからSorryコンテンツを返す
    1. 同一配信設定内でFailoverを設定する(Use alternate hostname in this property) [後述]
    2. Failover用の配信設定を用いる(Use alternate hostname on provider network) [後述]

 

これらの動作の違いについて,もう少し詳しく見てみましょう.それぞれのリクエストの流れは下図の通りになります.

上の図で,オリジンサーバがダウンしてFailoverが動作した後のリクエストの違いについて見ていきましょう.

 

「1.エッジサーバ上に有効期限切れのキャッシュが残っていれば,それを返す(Serve Stale Content)」に関しては,Sorryコンテンツは提供されませんので,説明はこれだけに留めておきます.

 

「2. 別のURLにリダイレクトする(外部サイト)」(以下,リダイレクト)では,Failover時に一度ブラウザにリダイレクトのレスポンスが返り,その後ブラウザが代替ウェブサイトにコンテンツを取得しにいきます.よって,リダイレクト後の代替ウェブサイトはアカマイ化されている必要はありません.また,ブラウザ上では明示的に別のサイトとして扱われるため,アドレスバーにも代替ウェブサイトのURLが表示されることになります(SorryコンテンツのURLがアクセスユーザから見える形になります).当然ですが,代替ウェブサイトはそのドメインがDNSに登録され,一般公開されている必要があります.

 

「3. 代替オリジンサーバからSorryコンテンツを返す」(以下リクリエーション)は,Failover時にアカマイエッジサーバがSorryコンテンツのリクエストをリクリエーション(再生成)し,取得されたSorryコンテンツをブラウザに返します.よって,Failover時においてもブラウザのアドレスバーには通常アクセスと同様のURLが表示されることになります(SorryコンテンツのURLはアクセスユーザからは見えません).また,リダイレクトの場合とは異なり,ブラウザからは一度のリクエスト(元のリクエスト)でSorryコンテンツが返されるため,Sorryコンテンツが表示されるまでの時間が短縮されます.つまり,リクリエーションの場合,リダイレクトに比べて,よりシームレスにSorryコンテンツの配信を行うことが可能になります.

 

このようにリダイレクトとリクリエーションではユーザー体験に影響するため,要件に応じて適宜選択する必要があります.

 

 

3. 代替オリジンサーバを用いたSorryコンテンツ配信の概要

 

前節で説明した「3. 代替オリジンサーバからSorryコンテンツを返す」方式の実装についてさらに詳しく見ていきましょう.この実装方法には下記の2種類があります.

 

  1. 同一配信設定内でFailoverを設定する(Use alternate hostname in this property)
  2. Failover用の配信設定を用いる(Use alternate hostname on provider network)

 

どちらの設定でも代替オリジンサーバとしてNetStorage,もしくは,ユーザーが用意した代替オリジンサーバを用いることができます.前回の記事では,NetStorageを代替オリジンサーバとして「A. 同一配信設定内でFailoverを設定する」方法について解説しました.ただし,上記の2種類の実装方法に関して説明をしてませんでしたので,ここで比較をしてみたいと思います.

 

下図に示した通り,「A. 同一配信設定内でFailoverを設定する」方法では,各配信設定(Property)ごとにFailoverとSorryコンテンツの配信設定を設定するのに対して,「B. Failover用の配信設定を用いる」ではFailover時のSorryコンテンツ配信設定(図中ではProperty X (for Failover))を一つ作成し,それを複数の配信設定で共有することでFailover設定をするという違いがあります.よって,配信設定ごとに,Sorryコンテンツが異なる場合には「同一配信設定内でFailoverを設定する」必要があります. また,配信設定で特にFailover設定を共有化できる場合には「Failover用の配信設定を用いる」ことで設定作業の効率化を図ることができます.

 

 

また,Failover設定についての設定必要項目に関してもいくつかの違いがあります.これについては下記の表にまとめました.

 

A. 同一配信設定内でFailoverを設定する

(Use alternate hostname in this property)

B. Failover用の配信設定を用いる

(Use alternate hostname on provider network)

Failover用配信ホスト名のDNS登録不要

必要

(組み込みコンテンツなしのベースページだけであれば不要)

(SSL配信の場合) Failover用配信ホスト名のSSL証明書設定不要

必要

(組み込みコンテンツなしのベースページだけであれば不要)

Sorryコンテンツの配信設定配信設定ごとに個別設定一括で設定(複数の配信設定で共有)
Sorryコンテンツ内の組み込みコンテンツの指定方法

Failover用パスを決めて,絶対パスで指定

 

e.g.

<img  src="/sorrycontent/sorry.jpg">

Failover用配信ホスト名(Digital Property)で指定

 

e.g.

 <img src="//failover.myexample.com/

sorrycontent/sorry.jpg">

 

 

4. 代替オリジンサーバを用いたSorryコンテンツ配信設定

 (A. 同一配信設定内でFailoverを設定する + ユーザー代替オリジンサーバ)

 

この場合は,前回記事の「A. 同一配信設定内でFailoverを設定する + NetStorageオリジン」の設定方法において,オリジンサーバ設定でNetStorageを指定している部分をユーザーが用意した代替オリジンサーバに変更することで実現可能です.以下では,例として代替オリジンサーバとして"origin-failover-qt246ygk.myexample.com"を使用してSorryコンテンツを配信する設定例について見ていきます.ほどんど前回の設定に同じであるため,差分のみを説明します.

 

4.1 Sorryコンテンツの用意

基本的には前回の記事と同様です.前回の記事ではNetstorage上に配置したSorryコンテンツを今回用いるオリジンサーバ上に配置するのみです.ベースページ(sorry.html)のソースも変更はありません.

 

4.2 Luna上での設定

E. Sorry Contentルール

E-2. Origin Serverビヘイビア

代替オリジンサーバとして"origin-failover-qt246ygk.myexample.com"を指定します.それ以外の項目は代替オリジンサーバの環境に合わせて適宜変更する必要があります.例えば,SSL配信でSorryコンテンツを配信する場合はオリジンサーバ向けのSSL設定(Origin SSL Certificate Verification設定)をする必要があります.

 

上記以外の設定に関しては,前回の記事にある配信設定と同様になります.以上が,ユーザー代替オリジンサーバを用いて同一配信設定内でFailover設定を行う場合の実装方法になります.

 

 

5. 代替オリジンサーバを用いたSorryコンテンツ配信設定

    (B. Failover用の配信設定を用いる + ユーザー代替オリジンサーバ)

 

この場合は,上表で示している通り,Sorryコンテンツ内の組み込みコンテンツをFailover用配信ホスト名(Digital Property)で指定する必要があるため,Sorryコンテンツのベースページ(sorry.html)の内容を変更する必要があります.ここではFailover用配信ホスト名として"failover.myexample.com"を用いることにします.

 

5.1 Sorryコンテンツの用意

sorry.htmlは下記の通り"failover.myexample.com"で指定する必要があります.

<html>
  <head>
    <link rel="stylesheet" type="text/css" href="//failover.myexample.com/sorrycontent/sorry.css">
    <script type="text/javascript"  src="//failover.myexample.com/sorrycontent/sorry.js"></script>
  </head>
  <body>
    <h1>Sorry Page on NetStorage</h1>
    <img src="//failover.myexample.com/sorrycontent/sorry.png">
  </body>
</html>

 

また,Sorryコンテンツのは前節の設定と同様に代替オリジンサーバに配置する必要があります(下図は再掲).

 

5.2 Luna上での設定 - サイト配信設定 (Failoverを起動する側)

A. 配信ホスト名(プロパティホスト名)

Failover用の配信設定は別に作成するため,こちらにはサイト配信用のプロパティホスト名"site.myexample.com"のみ設定します.

 

B. Defaultルール

 

これまでと同様にサイト配信のための基本設定を行います.

 

C. Site Failoverルール

これまでと同様にOHDの設定を行います.

 

D. Faiover Triggerルール

Failoverの条件とその時の動作を規定します.

 

D-2. Site Failoverビヘイビア

Actionの項目で"Use alternate hostname on provider network"を選択します.また,Alternate Hostname on Provider Networkの項目では.Failover用の配信ホスト名である"failover.myexample.com"を指定します.これによって,Failover発生時にアカマイエッジサーバ上の"failover.myexample.com"の配信設定が参照されることになります.

 

 

以上がサイト配信設定になります.これまでのFailover設定にはあったSorryコンテンツ配信のためのルール("Sorry Cotentn", "Sorry Base Page"ルール)は後述のFailover用の配信設定内で設定されることになります.

 

 

5.3 Luna上での設定 - Failover用の配信設定 (Sorryコンテンツを配信する側)

Failover時にSorryコンテンツを配信するための配信設定になります.これを通常のサイト配信設定とは別に作成します.Luna上での配信設定のメイン画面の上部から見ていきましょう.

X. 配信ホスト名(プロパティホスト名)

上記の通り,Failover用のプロパティホスト名である"failover.myexample.com"を設定します.Sorryページの組み込みコンテンツはこの配信ホスト名でエッジサーバにアクセスすることになるため,サイト公開前にこの配信ホスト名をDNS登録(CNAME)する必要があります.また,同様の理由でSSL配信の場合にはSSL証明書の取得が必要になります.

 

Y. Defaultルール

 

DefaultルールではSorryコンテンツを配信するためのオリジンサーバの設定や各種キャッシュ,パス設定を行います.この配信設定はFailover時にしかアクセスが来ることがないため,これまでの設定であったような通常のサイト用コンテンツとFailover用コンテンツとを分離するためのマッチ条件などが不要になっています.

 

Z. Sorry Base Pageルール

こちらはSorryコンテンツのベースページ(sorry.html)をレスポンスコード503かつクライアント側でのキャッシュを許可しないための設定になります.この部分に関しては,これまでの設定と同様になります.

 

以上が,ユーザー代替オリジンサーバを用いてFailover用の配信設定によってSorryコンテンツを配信する場合の実装方法になります.

 

 

6. むすび

 

今回はFailoverに関しての一連の記事のまとめとして,Failover時のアカマイの動作の方式について比較し,利用用途に応じてどのようにFailoverの機能を使うべきかについて解説しました.また,後半では前回カバーできなかった代替オリジンサーバを用いたSorryコンテンツ配信設定について解説しました.異常系であるFailover動作は,ウェブサイトが正常に動作している間は全く隠れて見えない機能です.しかし,システム障害が発生した時であっても,サービスを継続するための最低限のコンテンツを配信することでビジネスインパクトを最小限に抑えることを可能にする価値のある機能です.これを機にFailoverの導入や設定の見直しの検討をされてみてはどうでしょうか.

 

注意: LUNAの表示する言語をEnglishとしております.日本語の場合には表示されるメニュー名が翻訳されていることがあります.

Outcomes