SlideShare a Scribd company logo
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GREEの大規模
分散ストレージ戦略
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
もくじ
• GREEで使われてきた画像サーバの歴史
• 分散ストレージシステム(nanofs)の紹介
• GREEでの使用例
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
画像サーバの歴史
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
第一世代
• NFSサーバで画像データを保存
• メリット
• 簡単に導入できる
• 高価なNFSサーバを使用すれば信頼性や安定
性が保たれる
• デメリット
• Webサーバへのトラフィックが増加するとNFS
サーバへのトラフィックが増えパフォーマンスが
低下する
• スケールアップし続けるにはコストがかかる
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
第二世代
• ユーザ毎にパーティションを設定。1パーティショ
ンに対し2台のwebDAVサーバを用意し保存する
• メリット
• 比較的安価なサーバでスケールアウトができる
• デメリット
• 一部のユーザが大量の画像をアップロードする
とディスクがいっぱいになるためユーザ毎に別
のパーティションに移動させないといけない
• ユーザ分割のためパーティションを増やし続け
なければいけないためサーバ台数の増大
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
第三世代
• 第二世代の仕組みに加えサーバをスケールアッ
プ
• メリット
• サーバ台数を減らせた
• デメリット
• 1台のサーバへのトラフィックが増大し
webDAVサーバのアプリケーションが処理しき
れなくなった
• サーバ費用増加
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
これまで問題のまとめ
• NFSのスケールアップにはコストがかかる
• スケールアウトする仕組みが必要
• ユーザ毎の分割ではディスクがいっぱいになった
ときに他のサーバに引越しなければいけない
• 運用コストがかかる
• スケールアップしてもサーバアプリケーションの限
界がある
• 分散しなければいけない
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
さらにGREEの背景として
• GREEでは1億ユーザを目指している
• ユーザの増加と共に写真・動画データも増加
• サービスは停止できない
• アプリケーション側の変更は極力行ないたくない
• ユーザの大切なデータを失うことは許されない
• 冗長化されていないといけない
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
次世代がどうあるべきか
• これまでの経験上下記の3つが重要なのではな
いか
• Scalability(拡張性)
• スケールアウトできること
• Availability(可用性)
• 対障害性が強く冗長化がなされていること
• Maintainability(保守性)
• 運用コストが低いこと
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
次世代ストレージのイメージ
90
Webサーバ
ストレージ
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
分散ストレージ
(nanofs)の紹介
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanofs特徴
• 内部実装はRuby
• カーネルモジュールを必要としない
• ファイル毎の分散
• 非同期でデータをコピー(バックアップ)を行う
• プロトコルはHTTPを使用
• サーバアプリケーションは選択可能
• apache, nginx, lighttpd, thin
• データベース(KVS)も選択可能
• MySQL,Flare, memcacheに対応
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanofsの構成
• 3つのコンポーネント
• nanofsd(dispatcher)
• nanofsn(node)
• nanofsw(worker)
• データベース(KVS)
• queue
Webサーバ
nanofsd
nanofsn
nanofsw
DB
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanofsd
• Webサーバからリクエ
ストを受け付ける
• nanofsnにリクエストを
振分ける
• データベースにデータ
の情報を送る
• queueに処理の指示を
送る
Webサーバ
nanofsd
nanofsn
nanofsw
DB
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanofsw
• queueに送られた指示
に従い非同期に処理を
行う
• 複数のnanofsnにデー
タをコピーする
• nanofsnに保存されて
いるデータを削除する
Webサーバ
nanofsd
nanofsn
nanofsw
DB
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanofsn
• データを保存する
Webサーバ
nanofsd
nanofsn
nanofsw
DB
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
データベース・queue
• データベース
• 保存したデータの情
報を管理
• nanofsnサーバのid
• nanofsnサーバの
ファイルパス
• queue
• nanofswが処理す
る指示を格納
Webサーバ
nanofsd
nanofsn
nanofsw
DB
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
HTTPリクエスト毎の処
理
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GETメソッドの処理(1)
• nanofsdがGETリクエストを受け取る
• データベースから画像情報を所得する
• 保存されているnanofsnのidとファイルパス
• データを取得するnanofsnを選ぶ
• ランダムとapacheのRequest Countingに対
応
• もしも選択されたnanofsnがダウンしているとき
は別のnanofsnを選びなおす
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GETメソッドの処理(2)
• 保存されているnanofsnからHTTP GET通信で
データを取得
• WebサーバにHTTPレスポンスを返す
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GETメソッド
Webサーバ
nanofsd
nanofsn
nanofsw
database
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GETメソッド
Webサーバ
nanofsd
nanofsn
nanofsw
database
queue
HTTP GETリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GETメソッド
Webサーバ
nanofsd
nanofsn
nanofsw
database
queue
画像情報を取得
HTTP GETリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GETメソッド
Webサーバ
nanofsd
nanofsn
nanofsw
database
queue
画像情報を取得
画像データを取得
HTTP GETリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GETメソッド
Webサーバ
nanofsd
nanofsn
nanofsw
database
queue
画像情報を取得
画像データを取得
HTTP GETリクエスト
HTTPレスポンス
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド(1)
• nanofsdでHTTP PUTリクエストを受け取る
• 保存するnanofsnを選ぶ
• 選ばれたnanofsnにHTTP PUTリクエストで保存
する
• データベースに画像情報を格納する
• コピーの指示をqueueにENQUEUEする
• WebサーバにHTTPレスポンスを返す
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド(2)
• queueからnanofswがDEQUEUEする
• データベースから画像情報を取得
• 保存されているnanofsnからHTTP GETリクエスト
で画像データを取得
• 別のnanofsnにデータをコピーする
• データベースに画像情報を更新する
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
HTTP PUTリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像をnanofsnに保存
HTTP PUTリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を保存
画像をnanofsnに保存
HTTP PUTリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を保存
ENQUEUE 画像をnanofsnに保存
HTTP PUTリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を保存
ENQUEUE 画像をnanofsnに保存
HTTP PUTリクエスト
HTTPレスポンス
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を保存
DEQUEUE
ENQUEUE 画像をnanofsnに保存
HTTP PUTリクエスト
HTTPレスポンス
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を保存
DEQUEUE
ENQUEUE 画像をnanofsnに保存
HTTP PUTリクエスト
HTTPレスポンス
画像情報を取得
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を保存
DEQUEUE
ENQUEUE 画像をnanofsnに保存
画像データを取得
画像データを別のnanofsnにコピー
HTTP PUTリクエスト
HTTPレスポンス
画像情報を取得
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
PUTメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を保存
DEQUEUE
ENQUEUE 画像をnanofsnに保存
画像データを取得
画像データを別のnanofsnにコピー
HTTP PUTリクエスト
HTTPレスポンス
画像情報を取得
画像情報を更新
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
• nanofsdでHTTP DELETEリクエストを受け取る
• 削除の指示をqueueにENQUEUEする
• WebサーバにHTTPレスポンスを返す
• queueがらnanofswがDEQUEUEする
• データベースから画像情報を取得
• 保存されているnanofsnからHTTP DELETEリク
エストで削除する
• 保存されている画像は複数のnanofsnにあるので
全台削除していく
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
HTTP DELETEリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
ENQUEUE
HTTP DELETEリクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
ENQUEUE
HTTP DELETEリクエスト
HTTPレスポンス
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
DEQUEUE
ENQUEUE
HTTP DELETEリクエスト
HTTPレスポンス
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を取得
DEQUEUE
ENQUEUE
HTTP DELETEリクエスト
HTTPレスポンス
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を取得
DEQUEUE
ENQUEUE
HTTP DELETEリクエスト
HTTPレスポンス
画像情報を削除
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
DELETEメソッド
nanofsw
nanofsn
nanofsd
Webサーバ
database
queue
画像情報を取得
DEQUEUE
ENQUEUE
画像データを削除
HTTP DELETEリクエスト
HTTPレスポンス
画像情報を削除
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
障害時の処理
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
LVS
nanofsd
nanofsdがダウン
Webサーバ
VRRP
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
LVS
nanofsd
nanofsdがダウン
Webサーバ
VRRP
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
LVS
nanofsd
nanofsdがダウン
Webサーバ
VRRP
heartbeat
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
LVS
nanofsd
nanofsdがダウン
Webサーバ
VRRP
heartbeat
リクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
LVS
nanofsd
nanofsdがダウン
Webサーバ
VRRP
heartbeat
リクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanfsnがダウン
nanofsw
nanofsn
nanofsd
Webサーバ
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanfsnがダウン
nanofsw
nanofsn
nanofsd
Webサーバ
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanfsnがダウン
nanofsw
nanofsn
nanofsd
Webサーバ
リクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanfsnがダウン
nanofsw
nanofsn
nanofsd
Webサーバ
リクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanfsnがダウン
nanofsw
nanofsn
nanofsd
Webサーバ
リクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanfsnがダウン
nanofsw
nanofsn
nanofsd
Webサーバ
リクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
nanfsnがダウン
nanofsw
nanofsn
nanofsd
Webサーバ
リクエスト
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
GREEでの使用例
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
実際に使っている構成
Webサーバ
nanofsn(apache2)
nanofsd(apache2)
nanofsw
LVS(keepalived)
database(MySQL5.1)
master
slave
master
slave
queue(MySQL5.1)
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
問題を解決
• NFSのスケールアップにはコストがかかる
• 比較的安価なサーバでスケールアウトが可能
• ユーザ毎の分割ではディスクがいっぱいになった
ときに他のサーバに引越しなければいけない
• ファイル毎の分散なので引越は不要
• スケールアップしてもサーバアプリケーションの限
界がある
• nanofsdを増やせば負荷分散が行える
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
現在の状況
• 画像サーバの一部に投入中
• 全画像サーバに投入予定
• 開発中
• 基本機能は完了
Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential
さいごに
• nanofsは公開を予定しております
• ご意見・ご感想・ご要望は
• twitter 公式ハッシュタグ #nanofs
• グリーエンジニアブログを書いております
• http://labs.gree.jp/blog/

More Related Content

Gree大規模分散ストレージ戦略

  • 1. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GREEの大規模 分散ストレージ戦略
  • 2. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential もくじ • GREEで使われてきた画像サーバの歴史 • 分散ストレージシステム(nanofs)の紹介 • GREEでの使用例
  • 3. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 画像サーバの歴史
  • 4. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 第一世代 • NFSサーバで画像データを保存 • メリット • 簡単に導入できる • 高価なNFSサーバを使用すれば信頼性や安定 性が保たれる • デメリット • Webサーバへのトラフィックが増加するとNFS サーバへのトラフィックが増えパフォーマンスが 低下する • スケールアップし続けるにはコストがかかる
  • 5. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 第二世代 • ユーザ毎にパーティションを設定。1パーティショ ンに対し2台のwebDAVサーバを用意し保存する • メリット • 比較的安価なサーバでスケールアウトができる • デメリット • 一部のユーザが大量の画像をアップロードする とディスクがいっぱいになるためユーザ毎に別 のパーティションに移動させないといけない • ユーザ分割のためパーティションを増やし続け なければいけないためサーバ台数の増大
  • 6. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 第三世代 • 第二世代の仕組みに加えサーバをスケールアッ プ • メリット • サーバ台数を減らせた • デメリット • 1台のサーバへのトラフィックが増大し webDAVサーバのアプリケーションが処理しき れなくなった • サーバ費用増加
  • 7. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential これまで問題のまとめ • NFSのスケールアップにはコストがかかる • スケールアウトする仕組みが必要 • ユーザ毎の分割ではディスクがいっぱいになった ときに他のサーバに引越しなければいけない • 運用コストがかかる • スケールアップしてもサーバアプリケーションの限 界がある • 分散しなければいけない
  • 8. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential さらにGREEの背景として • GREEでは1億ユーザを目指している • ユーザの増加と共に写真・動画データも増加 • サービスは停止できない • アプリケーション側の変更は極力行ないたくない • ユーザの大切なデータを失うことは許されない • 冗長化されていないといけない
  • 9. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 次世代がどうあるべきか • これまでの経験上下記の3つが重要なのではな いか • Scalability(拡張性) • スケールアウトできること • Availability(可用性) • 対障害性が強く冗長化がなされていること • Maintainability(保守性) • 運用コストが低いこと
  • 10. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 次世代ストレージのイメージ 90 Webサーバ ストレージ
  • 11. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 分散ストレージ (nanofs)の紹介
  • 12. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanofs特徴 • 内部実装はRuby • カーネルモジュールを必要としない • ファイル毎の分散 • 非同期でデータをコピー(バックアップ)を行う • プロトコルはHTTPを使用 • サーバアプリケーションは選択可能 • apache, nginx, lighttpd, thin • データベース(KVS)も選択可能 • MySQL,Flare, memcacheに対応
  • 13. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanofsの構成 • 3つのコンポーネント • nanofsd(dispatcher) • nanofsn(node) • nanofsw(worker) • データベース(KVS) • queue Webサーバ nanofsd nanofsn nanofsw DB queue
  • 14. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanofsd • Webサーバからリクエ ストを受け付ける • nanofsnにリクエストを 振分ける • データベースにデータ の情報を送る • queueに処理の指示を 送る Webサーバ nanofsd nanofsn nanofsw DB queue
  • 15. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanofsw • queueに送られた指示 に従い非同期に処理を 行う • 複数のnanofsnにデー タをコピーする • nanofsnに保存されて いるデータを削除する Webサーバ nanofsd nanofsn nanofsw DB queue
  • 16. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanofsn • データを保存する Webサーバ nanofsd nanofsn nanofsw DB queue
  • 17. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential データベース・queue • データベース • 保存したデータの情 報を管理 • nanofsnサーバのid • nanofsnサーバの ファイルパス • queue • nanofswが処理す る指示を格納 Webサーバ nanofsd nanofsn nanofsw DB queue
  • 18. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential HTTPリクエスト毎の処 理
  • 19. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GETメソッドの処理(1) • nanofsdがGETリクエストを受け取る • データベースから画像情報を所得する • 保存されているnanofsnのidとファイルパス • データを取得するnanofsnを選ぶ • ランダムとapacheのRequest Countingに対 応 • もしも選択されたnanofsnがダウンしているとき は別のnanofsnを選びなおす
  • 20. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GETメソッドの処理(2) • 保存されているnanofsnからHTTP GET通信で データを取得 • WebサーバにHTTPレスポンスを返す
  • 21. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GETメソッド Webサーバ nanofsd nanofsn nanofsw database queue
  • 22. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GETメソッド Webサーバ nanofsd nanofsn nanofsw database queue HTTP GETリクエスト
  • 23. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GETメソッド Webサーバ nanofsd nanofsn nanofsw database queue 画像情報を取得 HTTP GETリクエスト
  • 24. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GETメソッド Webサーバ nanofsd nanofsn nanofsw database queue 画像情報を取得 画像データを取得 HTTP GETリクエスト
  • 25. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GETメソッド Webサーバ nanofsd nanofsn nanofsw database queue 画像情報を取得 画像データを取得 HTTP GETリクエスト HTTPレスポンス
  • 26. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド(1) • nanofsdでHTTP PUTリクエストを受け取る • 保存するnanofsnを選ぶ • 選ばれたnanofsnにHTTP PUTリクエストで保存 する • データベースに画像情報を格納する • コピーの指示をqueueにENQUEUEする • WebサーバにHTTPレスポンスを返す
  • 27. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド(2) • queueからnanofswがDEQUEUEする • データベースから画像情報を取得 • 保存されているnanofsnからHTTP GETリクエスト で画像データを取得 • 別のnanofsnにデータをコピーする • データベースに画像情報を更新する
  • 28. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue
  • 29. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue HTTP PUTリクエスト
  • 30. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像をnanofsnに保存 HTTP PUTリクエスト
  • 31. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を保存 画像をnanofsnに保存 HTTP PUTリクエスト
  • 32. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を保存 ENQUEUE 画像をnanofsnに保存 HTTP PUTリクエスト
  • 33. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を保存 ENQUEUE 画像をnanofsnに保存 HTTP PUTリクエスト HTTPレスポンス
  • 34. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を保存 DEQUEUE ENQUEUE 画像をnanofsnに保存 HTTP PUTリクエスト HTTPレスポンス
  • 35. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を保存 DEQUEUE ENQUEUE 画像をnanofsnに保存 HTTP PUTリクエスト HTTPレスポンス 画像情報を取得
  • 36. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を保存 DEQUEUE ENQUEUE 画像をnanofsnに保存 画像データを取得 画像データを別のnanofsnにコピー HTTP PUTリクエスト HTTPレスポンス 画像情報を取得
  • 37. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential PUTメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を保存 DEQUEUE ENQUEUE 画像をnanofsnに保存 画像データを取得 画像データを別のnanofsnにコピー HTTP PUTリクエスト HTTPレスポンス 画像情報を取得 画像情報を更新
  • 38. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド • nanofsdでHTTP DELETEリクエストを受け取る • 削除の指示をqueueにENQUEUEする • WebサーバにHTTPレスポンスを返す • queueがらnanofswがDEQUEUEする • データベースから画像情報を取得 • 保存されているnanofsnからHTTP DELETEリク エストで削除する • 保存されている画像は複数のnanofsnにあるので 全台削除していく
  • 39. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue
  • 40. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue HTTP DELETEリクエスト
  • 41. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue ENQUEUE HTTP DELETEリクエスト
  • 42. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue ENQUEUE HTTP DELETEリクエスト HTTPレスポンス
  • 43. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue DEQUEUE ENQUEUE HTTP DELETEリクエスト HTTPレスポンス
  • 44. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を取得 DEQUEUE ENQUEUE HTTP DELETEリクエスト HTTPレスポンス
  • 45. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を取得 DEQUEUE ENQUEUE HTTP DELETEリクエスト HTTPレスポンス 画像情報を削除
  • 46. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential DELETEメソッド nanofsw nanofsn nanofsd Webサーバ database queue 画像情報を取得 DEQUEUE ENQUEUE 画像データを削除 HTTP DELETEリクエスト HTTPレスポンス 画像情報を削除
  • 47. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 障害時の処理
  • 48. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential LVS nanofsd nanofsdがダウン Webサーバ VRRP
  • 49. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential LVS nanofsd nanofsdがダウン Webサーバ VRRP
  • 50. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential LVS nanofsd nanofsdがダウン Webサーバ VRRP heartbeat
  • 51. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential LVS nanofsd nanofsdがダウン Webサーバ VRRP heartbeat リクエスト
  • 52. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential LVS nanofsd nanofsdがダウン Webサーバ VRRP heartbeat リクエスト
  • 53. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanfsnがダウン nanofsw nanofsn nanofsd Webサーバ
  • 54. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanfsnがダウン nanofsw nanofsn nanofsd Webサーバ
  • 55. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanfsnがダウン nanofsw nanofsn nanofsd Webサーバ リクエスト
  • 56. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanfsnがダウン nanofsw nanofsn nanofsd Webサーバ リクエスト
  • 57. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanfsnがダウン nanofsw nanofsn nanofsd Webサーバ リクエスト
  • 58. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanfsnがダウン nanofsw nanofsn nanofsd Webサーバ リクエスト
  • 59. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential nanfsnがダウン nanofsw nanofsn nanofsd Webサーバ リクエスト
  • 60. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential GREEでの使用例
  • 61. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 実際に使っている構成 Webサーバ nanofsn(apache2) nanofsd(apache2) nanofsw LVS(keepalived) database(MySQL5.1) master slave master slave queue(MySQL5.1)
  • 62. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 問題を解決 • NFSのスケールアップにはコストがかかる • 比較的安価なサーバでスケールアウトが可能 • ユーザ毎の分割ではディスクがいっぱいになった ときに他のサーバに引越しなければいけない • ファイル毎の分散なので引越は不要 • スケールアップしてもサーバアプリケーションの限 界がある • nanofsdを増やせば負荷分散が行える
  • 63. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential 現在の状況 • 画像サーバの一部に投入中 • 全画像サーバに投入予定 • 開発中 • 基本機能は完了
  • 64. Copyright © 2004-2010 GREE,Inc. All Rights Reserved.Confidential さいごに • nanofsは公開を予定しております • ご意見・ご感想・ご要望は • twitter 公式ハッシュタグ #nanofs • グリーエンジニアブログを書いております • http://labs.gree.jp/blog/