BLOG



cf_1.jpg

シナップの柿内です。

最近、CloudFlareという無料で簡単に使えるCDNサービスが話題を呼んでいます。
CDN(コンテンツ・デリバリー・ネットワーク)とはコンテンツを複数地域の複数サーバーに配置し、ユーザーのリクエストに対して最適なサーバーからコンテンツを配布する負荷分散サービスです。よくオープンソースをダウンロードする時に一番近いミラーサーバーを選択してダウンロードしますが、それをユーザーの操作なしに全部自動で行ってくれると考えれば想像しやすいのではないでしょうか。

本来CDNは大規模なリクエストを円滑に処理するように生まれたサービスなので、小規模なWebサイトで導入する事はあまりありませんでした。それがCloudFlareならば誰でも(後で解説するように利用するためには簡単な条件をクリアする必要がありますが)今日にでも利用する事が可能です。しかも無料で。
同じCDNサービスであるAmazon Web Serviceが提供するCloudFrontは、転送料に応じて課金される従量課金制です。例えば、月10TBまでの転送料なら$0.201 / GBとういう料金体系なので、100MBの動画をサイト上で公開し、月間1000リクエストあったとすると、月額料金で$200を超えてしまいます。こう考えると無料!というインパクトは大きいです。(もちろんCloudFrontが有料なのには理由があり、CloudFlareの方が絶対的に優れているという訳ではありません。)

今話題のCloudFlare。今回はSINAPで実際に導入した実績をもとに導入方法も含めてサービスの解説をしていきます。

CloudFlareとは

CloudeFlareはWebサーバー上のコンテンツの中でキャッシュ可能なファイル(画像,CSS,JSファイル等)をCloudFlare上の複数サーバーにキャッシュする事でWebサーバーのレスポンスを改善する、CDNサービスです。また、キャッシュ元サーバーの代理応答をすることでサーバーのセキュリティを高めるためのオプションが、CloudFlareでは用意されています。
その他にもサイト運営上有用なオプションが複数用意されています。また、有料のProバージョンでは無料版にはないオプションも用意されています。その辺の詳細は後で解説することにして、まずはCloudFlareを導入してみることにします。


CloudFlareの導入


CloudFlareを導入するために必要な条件

CloudFlareを導入するために必要な条件は

・サイトを運営するドメインの管理者であること。

この一つです。
CloudFlareはドメイン単位での導入が基本です。導入にはドメインのレコード情報をCloudFlare上のDNSサーバーにコピーし、ドメインのDNSサーバー情報を書き換える必要があるので、どうしてもドメインの管理情報は必要です。(これが無い人が勝手に人のドメインにCloudFlareを導入できたら大変な事ですが)ですので、ドメインの管理者権限が無い、たとえば他人が管理しているサブドメインで運用しているようなサイトには導入することができません。
逆にいえばこれだけあれば誰でも導入できてしまいます。たとえばレンタルサーバー上で独自ドメインで運営しているサイトに導入する事も可能です。

CloudFlareへのサインアップ

cf_2.jpgCloudFlareのサイトにアクセスし、右上のサインアップをクッリクし必要な情報を入力してください。入力項目は

・メールアドレス
・ユーザーネーム
・パスワード

の3つと会員規約の同意だけです。
あっという間にアカウントを作る事ができます。

ドメインの設定とDNSレコードの移設

cf_3.jpgアカウントを作成した後は導入ドメインの設定に入ります。設定時にドメインのDNSレコード情報をコピーする必要があるので、そのレコード情報をあらかじめ用意しておきます。

サインアップ後表示される、会員ページの下部に「Step1 Enter Your Domain」と表示されていますので、導入したいドメインの情報を入力し、「Add This Domain」をクリックします。
するとCloudFlareがドメインの代表的(よくあるwwwなどのAレコードやmxレコードなど)DNSレコードをスキャニングし、代表的なレコードに関してはコピーしてくれます。
ただ、自動ですべてのレコードコピーしてくれる訳ではないので、導入予定ドメインのレコード情報を確認し、不足分は手動で追加します。

※DNSサーバーをCloudFlareのサーバーに変更するので、ここでコピーしなかったレコードにはアクセスできなくなってしまいます。注意してください。

全てのレコードを入力したら、下部の「I'm done checking my DNS records,continue」をクリックすると、ドメインの現在のDNSサーバー情報と変更先のCloudFlareのDNSサーバー情報が表示されますので、導入ドメインのレジストラ情報をCloudFlareのDNSサーバーへ変更します。

変更後、その画面の下部に表示されている「I've updated my name servers,continue」をクリックすれば設定は終了です。後はDNSの浸透が進めば、設定したドメインのサイトがCloudFlare経由で表示されるようになります。

サブドメイン毎の設定

ドメイン単位で導入するCloudFlareですが、ドメインの中にはCloudeFlare経由で表示させたくないWebサイトもあるでしょう。CloudFlareではサブドメイン毎にCloudFlareの対象にするかしないか選択することができます。導入後会員ページで「setting」>「DNS setting」を選択すると、コピーしたレコード情報が表示されます。その中にCloudFlareロゴの雲のマークをクリックすると、CloudFlareを有効にするか、無効にするか選択できます。ちなみにオレンジ色のロゴが表示されているレコードでCloudFlareが有効になっています。


さて、これで基本的な設定は終了です。サインアップから導入までは情報さえそろっていれば本当に30分足らずで終わってしまいます。

Proバージョンの利用

CloudFlareでは有料のProバージョンを利用する事で、無料版では利用できなかったオプションが利用できます。また、後述のSSL通信の設定はProバージョンしか利用できませんので、SSL通信を行うコンテンツがサイト内にある場合はProバージョンを利用する必要があります。Proバージョンは導入するドメイン毎の契約になり、1ドメインにつき$20/月必要になってきます。

Proバージョンを利用するには「Account」ページにて「Billing Information」のページを表示すると、クレジット情報などが表示されますので、ここで必須情報を入力します。
すると登録したWebサイトの「setting」>「cloudFlare setting」にてFree と CloudFlare Proのどちらでドメインを運営するか選択できるようになります。


CloudFlareの機能


SSL通信について

CloudFlareの導入時にサイト運営者なら必ず気になる事の一つにSSL通信があるでしょう。CloudFlareはでProバージョンで運営しているドメインでSSL通信を利用できるようになります。
「setting」>「SSL setting」にて、SSL通信を行う必要があるホスト上でAdd SSLを選択することでSSL通信を有効にすることができます。ただし、設定後証明書発行には最長2週間ほど必要ですので、SSL通信を行う必要があるホストCloudFlareを有効にする前(DNSの移行前もしくは、「DNS setting」でClaudFlareを有効にする前)に設定をすませておく必要があるでしょう。料金は1ホストにつき、$1/月となっています。

SSL証明書はCloudFlareが契約している、複数ドメインで利用可能なGlobalSign の証明書にて指定したホストが登録され利用されるようです。

反映時間について

元ホストのコンテンツを変更した場合、CloudFlareに反映されるにはどのくらい時間が必要かということも運営者にとっては重要です。
CloudFlareではキャッシュ可能なコンテンツ(CSS,JS,画像)のみが対象になるので、実はそれ以外のHTMLファイルやプログラムファイルは元サーバーのコンテンツがそのまま表示されます。
キャッシュ可能なコンテンンツは、私が調べた限りでは反映に3時間以上はかかります。実は画像ファイルを変更しても、全く反映されなかったので3時間後に強制的にCloudFlareのキャッシュをアップロードしてしまいました。
コンテンツ反映から3時間以上(実際にはもっとかかるかもしれません。)も反映されないと、サイト運営者にとっては非常にこまります。更新後Twitterでお知らせ。しかしコンテンツは更新されないでは話になりません。そんな時のために、CloudFlareではキャッシュを管理画面からアップデートする事が可能です。「setting」>「cloudFlare setting」から「Cache Purge」を選択すると即時に反映されます。

コンテンツ更新に即時性が求められる場合には手動でキャッシュのアップデートを行った方がいいでしょう。

その他のオプションについて

cf_4.jpg「setting」>「cloudFlare setting」ではサイト運営上有用なオプションが用意されています。そのなかで重要そうなものを抜粋して紹介します。

■Website Preloader(Pro版のみ)

画像等がプリロードされます。onにしているとTopページなどで、他のページの画像が読み込まれるのが確認できます。

■Advanced Security(Pro版のみ)

CloudFlareの用意するAdvanced Securityが提供されます。WAF(Web Application Firewall)のような仕組みで、SQLインジェクションや、XSSを試みるリクエストに対し有効なようです。


※現在Pro版でのみ提供されるオプションは上記の2つです。


■Always Online

元ノードへのアクセスが切れた場合、CloudFlareのみでWebサイトを表示してくれるようです。動的ページの表示がどのようになるのかは現在確認中です。

■Google Analytics

自動でグーグルアナリティクスのトラッキングコードを貼付けて表示してくれます。元から貼付けてるトラッキングコードは消す必要がありません。

■Cache Purge

キャッシュを強制的に更新できます。コンテンツ更新に即時性がある場合に利用できます。

■Development Mode

すべてのリクエストをバイパスする。


まとめ


CloudFlareでは設定時間30分程度で必要なドメインにCDNを導入でき、SSL通信とPro版のオプションが必要ない場合は無料で、SSL通信が必要なばあいでも$26/月で転送料に関係なく利用できます。膨大な転送料があるサイトはCloudFlareを利用できなようですが、例えば普段それほどトラフィックは無いが、ニュースリリース直後はサーバーが落ちないか心配。。。。
という場合には非常に有用だと思います。