MongoDBJP 納涼もんご祭り

914 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
914
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
7
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

MongoDBJP 納涼もんご祭り

  1. 1. MongoDBJP 2013納涼祭
  2. 2. About me
  3. 3. { 名前: 窪田博昭 会社: 楽天(株) 肩書: MongoDBJP代表 趣味: Golf,フットサル 悩み: 30代は体が・・・ twitter:@crumbjp github: github.com/crumbjp }
  4. 4. MongoDB ?
  5. 5. MongoDBの哲学(優先順位) 1.Read性能 >>> 全て 2.データ一貫性 3.システム堅牢性 4.データ更新性能
  6. 6. 書き込み << 読み込み なシステムに 最適!!
  7. 7. WEBシステムって 大体そうだよね!
  8. 8. 今日のお題は・・・
  9. 9. 嘘・・・
  10. 10. じゃないよ~!
  11. 11. 選挙だ!
  12. 12. わかっちゃった人は ニヤリw
  13. 13. これは何? 2/3 3/5 4/7
  14. 14. 過半数とは 全体の半分よりも多い数
  15. 15. ニヤリ?
  16. 16. MongoDB replica-set
  17. 17. -22 - replica-set Primary Secondary SecondarySecondarySecondary Primary: 書き込み可能ノード Secondary: 読み取り専用ノード 全てのノードは同じデータを持っている 同期
  18. 18. -23 - replica-set Secondary SecondarySecondarySecondary MongoDBはPrimaryノードを 選挙で選ぶ。 下の例では得票数5/5で当選! Secondary 投票
  19. 19. -24 - replica-set Secondary SecondarySecondarySecondary MongoDBはPrimaryノードを 選挙で選ぶ。 下の例では得票数5/5で当選! Secondary Primary 昇格
  20. 20. -25 - replica-set Secondary SecondarySecondarySecondary Primaryノードが死んだ場合も 残ったノードで選挙を行う。 下の例では得票数4/5で当選! Primary 投票
  21. 21. -26 - replica-set Secondary SecondarySecondaryPrimary Primaryノードが死んだ場合も 残ったノードで選挙を行う。 下の例では得票数4/5で当選! Primary
  22. 22. となると、、、
  23. 23. -28 - replica-set SecondarySecondary 構成ノードが死に過ぎると 選挙で過半数割れが起きる。 こうなるとPrimaryノード不在となる Primary Primary Primary 投票
  24. 24. -29 - replica-set Primaryは書き込みを行うノード replica-setは書き込み不能となる データの更新は当然! replica-setの構成変更も不可!!
  25. 25. 致命的!!
  26. 26. これは何? 2/3 3/5 4/7
  27. 27. デッドライン 生存数 / 全数 2/3 3/5 4/7
  28. 28. そもそも何でこんな 難儀な仕組み になってんの? 1ノードでも 生きてれば良いじゃん!
  29. 29. そうは行かない!
  30. 30. -35 - replica-set Primary Secondary SecondarySecondarySecondary 常時同期 選挙に行かないとをやらないと 大変な事に!!
  31. 31. 負荷や ネットワークトラブル等で ノード間通信が途切れる と・・・
  32. 32. -37 - replica-set Primary Secondary SecondarySecondarySecondary もしネットワークが分断したら? 分断 常時同期
  33. 33. -38 - replica-set Primary Secondary SecondaryPrimarySecondary Primary 常時同期 分断 なんと Primaryが2つ に!!
  34. 34. こうなると当然 左右双方に別々の更新が走り データがズレるぜ! Primary Secondary SecondaryPrimarySecondary Primary 常時同期 分断 replica-set データ更新 データ更新
  35. 35. あ”ー データ破壊。。
  36. 36. これが分散システムの Split brain データの一貫性が 意味的に破壊されるので 修復できない
  37. 37. ちなみに、、 split brainが起きる様なケースでは 高負荷やトラブルが起きている。 大抵は1ノード毎バラバラになるし データ修復どころか大量のログから 現象を追う事すら困難。。。
  38. 38. -43 - replica-set Primary Primary こんな風に・・・ Primary 分断 Primary Primary Primary
  39. 39. 今回の運用対象 http://www.mongodb.jp
  40. 40. www.mongodb.jp httpd PHP mongosmemcached mongod secondary host B mongod primary host C mongod secondary hidden slaveDelay replica-set
  41. 41. www.mongodb.jp httpd PHP mongosmemcached mongod secondary host B mongod primary host C mongod secondary hidden slaveDelay replica-set ・負荷的に余裕なので基本はAll in one ・基本secondaryから読み、書込みは極少ない ・host C はバックアップと非常時のリカバリ www.mongodb.jpさえ無事なら 大きな障害にはならない
  42. 42. なので思い切って ヤル!!

×