現在位置: ホーム ブログ Ploneへの急激なアクセスを処理する方策(CDN化)
ブログ

Ploneへの急激なアクセスを処理する方策(CDN化)

 

CMSツールではある程度高速化されていると言う報告が出ているPloneですが、公開サイトで使う場合、キャッシュサーバを用いるなど対策を行っています。キャッシュサーバを使ってもサーバの処理能力を超えるような、急激なアクセスがくるとWebサイトの表示が出来ないことがあります。それに対処するためにCDNを用いる方法を検討しました。

CDNとは、「Contents Delivery Network」といわれるもので、最適なネットワークを経由してWebコンテンツをキャッシュし効率的に配信できる物です。Amazon(AWS)では「CloudFront」というサービスがあります。他にも「Akamai」などが有名です。

概要説明

とあるサイトの構築で、サーバリソースの検討を行っていました。Ploneは早くなったとはいえ、急激な超高負荷に耐えるための対策は必要です。そこで普段から用いている、Varnishにコンテンツをキャッシュさせる方法を提案しました。

しかし、30pv/s(単純計算だと 2,500,000pv/day) 程度は必要という話がでました。1ページ当たり、1.6MB程度の容量となり、単純計算 300Mbpsを超えるネットワーク転送量となります。

ここまでであれば、ロードバランシング等を行うことで対処可能ということになり、CDN化は必須ではなくなりました。だだ、今後のことを考え、PloneとCDNの組合せをテストしておく良い機会と捉え、実験してみました。

テスト環境の構成要素

  • nginx - Varnish - Plone を1台のクラウドサーバに設定
  • Ploneは画像をアップロードしておく
  • CDNには、Amazon(AWS) CloudFrontを準備

具体的な方策

以下にまとめました。

CDN化をnginxの設定で行う方法

Ploneのコンテンツ側やアプリケーションには影響を与えたくないため、nginxの設定のみで対処しています。

Ploneの設定などでOn/Offや条件の設定を行えればと考えましたが、初回アクセス時にフロントサーバであるnginxはコンテンツに関する情報を持っていないので、URIでの判定を行い、CDNにリダイレクトさせる設定にしました。これは、Varnishでキャッシュさせるときも同様の設定になると思い、nginxのリロードが伴う方法(つまり、設定ファイル内の正規表現の書き換え)でも問題がないという結論です。

まとめ

Varnishが耐えられないほどの高負荷状態を作ってテストが出来ていません。よって、現状では数値で表せる効果は得られていません。

高負荷になる可能性がある時に試して見たいとは思いますが、実験する時が本番になるというのは少し怖いと感じています。

使う上での注意点としては、CDNにキャッシュされると、長時間キャッシュが残り、画像の更新が出来ない事になります。(CloudFrontの場合はデフォルトで24時間キャッシュされます) Varnishなど手元にある環境ですと、Purge(パージ)を行いやすく、扱いはらくだと思います。

comments powered by Disqus