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