第1回 CGMサイト構築で悩む負荷対策と拡張性の確保

林田 幸一
株式会社Cuon

2008/8/4

データベースレイヤにおける対策

 現時点(フェーズI)では実装していないが、フェーズIIで実装予定の対策を紹介する。

1. DBロードバランサによるデータベースのロードバランス

 LVS(Linux Virtual Server)とldirectordの連携により、データベースへの処理を複数のデータベースサーバへ自動的に振り分けることが可能だ。

 データベースサーバの障害検知はDBロードバランサ上のldirectorにより行われる。Ldirectordにより検知された障害はLVSに伝えられ、LVSは自動的に障害が発生しているサーバを処理振り分け対象から外す。これにより、冗長性の確保を実現している。

2. mysql_clusterによる拡張性・冗長性の確保

 mysql_clusterの機能を利用することで、データベースサーバをスケールアウトしてもデータベースサーバ間のデータ同期が行われる。また、DBロードバランサにより複数台のデータベースサーバに処理を振り分けられるため、データベースサーバの拡張性を確保している。

クッキーとセッション管理

 ログイン認証のあるサイトを構築している場合、セッション情報の管理が必要となる。セッション情報とは、アクセス履歴やログイン情報、買い物かごの中身、入力したデータなどが、アクセスしたユーザーのセッションごとの特定情報として使われるものである。

 セッション情報の保存先(セッションストレージ)として、以下の6種類が挙げられる。

 PStoreは、PStore形式のフラットファイルに格納する方法で、RoR 1.2ではデフォルトである。

 ActiveRecordStoreは、ActiveRecord経由でデータベースに保存する方法で、sessionsというテーブルに保存される。

 DRbStoreは、DRbサーバに格納する方法である。DRbとは、Rubyプロセスがネットワーク接続を経由してオブジェクトを共有できるようにするプロトコルであり、gemでインストールできる。

 MemCacheStoreは、memcachedで格納する方法である。すでに説明したが、memcachedは、オブジェクトをメモリ上でキャッシュするデーモンであり、複数のWebアプリケーションサーバ間でメモリを共有できるのが最大の特徴である。例えば、Wikipediaのようなトラフィックが多いWebサイトで利用されている。

 Memoryは、Webアプリケーションサーバのローカルメモリに格納する方法である。Webアプリケーションサーバを複数台用意した場合、セッション情報の共有ができないため利用は控えたい。

 FileStoreは、フラットファイルに格納する方法である。文字列で格納されないためあまり利用されない。

 それぞれのやり方は、構築するサイトの状況によって選択する必要がある。ライフパレットでは、複数のWebアプリケーションサーバ間でセッション情報の共有をする必要があり、また、memcachedはメモリキャッシュで高速処理が実現できるため、MemCacheStore(memcached)を利用している。

  次回は、RoRならではの設計ということでモデル設計を取り上げたい。特に、利用すると便利だが、実例が少なくてややこしい「ポリモフィック関連」という設計法も取り上げてみる。

3/3
 

Index
CGMサイト構築で悩む負荷対策と拡張性の確保
  Page1
CGMサイト構築の初期段階で考えること
アプリケーションレイヤにおける対策
 1. HTTPロードバランサによるロードバランス
 2. 大容量データの扱い
  Page2
アプリケーションレイヤにおける対策(続き)
 3. キャッシュを効果的に利用する
 4. スループットの向上策
Page3
データベースレイヤにおける対策
 1. DBロードバランサによるデータベースのロードバランス
 2. mysql_clusterによる拡張性・冗長性の確保
クッキーとセッション管理
RoRでCGMサイト構築虎の巻

 Ruby/Rails関連記事
プログラミングは人生だ
まつもと ゆきひろのコーディング天国
 ときにプログラミングはスポーツであり、ときにプログラミングは創造である。楽しいプログラミングは人生をより実りあるものにしてくれる
生産性を向上させるRuby向け統合開発環境カタログ
Ruby on Rails 2.0も強力サポート
 生産性が高いと評判のプログラミング言語「Ruby」。統合開発環境を整えることで、さらに効率的なプログラミングが可能になる
かんたんAjax開発をするためのRailsの基礎知識
Ruby on RailsのRJSでかんたんAjax開発(前編)
 実はAjaxアプリケーション開発はあなたが思うよりも簡単です。まずはRuby on Railsの基礎知識から学びましょう
Praggerとnetpbmで作る画像→AA変換ツール
Rubyを使って何か面白いものを作ってみよう!
 一般的な画像をアスキーアートに変換するツールを作ってみる。さらに出力にバリエーションを持たせてみよう
コードリーディングを始めよう
Railsコードリーディング〜scaffoldのその先へ〜(1)
 優れたプログラマはコードを書くのと同じくらい、読みこなす。優れたコードを読むことで自身のスキルも上達するのだ
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間