MongoDBに関する基本的な内容をまとめてみたものです。MongoDBに関する、Web上にすでにある良識な解説コンテンツをまとめたまとめサイトの抜粋です。
[MongoDBのアーキテクチャ] (https://www.techcrowd.jp/mongodb/architecture/)
[MongoDBにおけるクラスタ構成] (https://www.techcrowd.jp/mongodb/architecture/)
MongoDBでは、レプリケーション機能・シャーディング機能を提供しており、両者を組み合わせることにより分散コンピューティング環境にて、負荷分散された冗長構成のクラスタを構築することができます。
(アプリケーション側からは、クラスタ全体をひとつの論理DBとみなすことができます)
・レプリケーション構成においては、一般的な条件下では障害からの自動フェイルオーバー
・シャーディング構成においては、自動バランシング機能を備え、データをそれぞれのノードにできるだけ均等に配分するとともに、動的にノードの追加や削除にも対応
クラスタ構成要素
- primaryサーバ レプリケーションのマスタ。データのマスタを保持
- secondaryサーバ レプリケーションのテレーブ。プライマリ上のデータのコピーを保持
- arbiterサーバ 自動的にフェイルオーバーする際に新しいプライマリノードを選択・指示
- configサーバ シャーディングの構成情報や分散状況を保持
- mongosサーバ シャーディング構成にて、データリクエストに対するルーティングを実施
[2方向シャーディングと3レプリカセットのクラスター] (https://www.techcrowd.jp/mongodb/architecture/)
MongoDBで、レプリケーション・シャーディング機能を利用して、可用性と水平スケールを実現する構成を実現する場合、最小構成で2方向シャーディングと3つのレプリカセットの構成となります。
MongoDBでは、ひとつのレプリカセットから始めて、本稼働中に3つのレプリカセットに移行することも可能です。
複数のレプリカ構成の場合には、書き込みオペレーションはプライマリノードで行われ、セカンダリノードに非同期にレプリケートされます (読み取りオペレーションでセカンダリノードを選択する場合には、古いノードに注意する必要があります)
MongoDBでは各シャードをレプリカセットにすることができます。2方向シャーディングと3つのレプリカセットの構成の場合には、ひとつのシャードが3つのレプリカセットにレプリケートされます。
AWSを利用する場合には、それぞれのレプリカは別々のアベイラビリティーゾーンに格納されますので、データセンター単位での障害があった場合でも、別のアベイラビリティゾーンにあるレプリカに自動フェールオーバーされてMongoDBは機能し続けることができます。
※参考: MongoDB on AWS >> アーキテクチャ
http://docs.aws.amazon.com/ja_jp/quickstart/latest/mongodb/architecture.html