Your SlideShare is downloading. ×
Gree大規模分散ストレージ戦略
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

9,167

Published on

グリーでは、ユーザの増加に伴ないサーバ台数が増加し、冗長性やスケーラビリティの低下が問題となってきていた。このような問題を解決するためにグリーでは独自の分散ストレージ (nanofs)を開発し、スケーラビリティや信頼性の向上、冗長化を実現した

グリーでは、ユーザの増加に伴ないサーバ台数が増加し、冗長性やスケーラビリティの低下が問題となってきていた。このような問題を解決するためにグリーでは独自の分散ストレージ (nanofs)を開発し、スケーラビリティや信頼性の向上、冗長化を実現した

Published in: Technology
0 Comments
15 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,167
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
15
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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/

×