シャーディングされたクラスターのコンポーネント
MongoDB の シャーディングされたクラスターは、次の要素で構成されます。
シャード: 各シャードには、シャーディングされたデータのサブセットが含まれています。各シャードはレプリカセットとして配置する必要があります。
mongos
によるルーティング :mongos
はクエリ ルーターとして機能し、クライアントアプリケーションとシャーディングされたクラスター間のインターフェースとなります。コンフィギュレーションサーバー: コンフィギュレーションサーバーは、クラスターのメタデータと構成設定を保存します。 コンフィギュレーションサーバーは レプリカセット (CSRS) としてデプロイする必要があります。
本番構成
本番環境のクラスターでは、データの冗長性を確保し、システムの可用性を高レベルに保ちます。シャーディングされたクラスターを本番環境にデプロイする際は、以下の点を考慮します。
レプリカセットの分散
本番環境には、少なくとも 3 つのデータセンターにコンフィギュレーションサーバーとシャードレプリカセットをデプロイすることをお勧めします。この構成により、1 つのデータセンターがダウンした場合でも、高可用性が得られます。
シャードの数
シャーディングでは、シャーディングされたデータを分散するために、少なくとも 2 つのシャードが必要です。シャードが 1 つのみシャーディングされたクラスターは、近い将来にシャーディングを有効にする予定だが、デプロイ時に有効化する必要がない場合に便利です。
mongos
の数とディストリビューション
mongos
インスタンスを複数デプロイすることで、mongos
ルーターで高い可用性とスケーラビリティを実現できます。プロキシまたはロードバランサーがアプリケーションと mongos
ルーターの間にある場合、クライアントのアフィニティを保つよう構成する必要があります。クライアント アフィニティにより、単一のクライアントによるすべての接続が常に同じ mongos
に到達します。高可用性をシャードレベルで実現するには、次のいずれかを実行します。
mongos
インスタンスがすでに実行中のハードウェアにmongos
インスタンスを追加します。アプリケーション レベルで
mongos
ルーターを埋め込みます。
mongos
ルーターはコンフィギュレーションサーバーと頻繁に通信します。ルーターの数を増やすと、パフォーマンスが低下する恐れがあります。パフォーマンスが低下する場合は、ルーターの数を減らしてください。
以下は、本番環境で通常使用されるシャーディングされたクラスターのアーキテクチャ図です。

開発構成
テストおよび開発用に、最小限のコンポーネント数でシャーディングされたクラスターをデプロイできます。これらの非本番クラスターには、以下のコンポーネントが含まれます。
1 つの
mongos
インスタンス単一シャードのレプリカセット。
レプリカセットのコンフィギュレーションサーバー。
次は、開発専用のシャーディングされたクラスターのアーキテクチャ図です。

警告
テスト クラスター アーキテクチャは、テストと開発専用です。
以下も参照してください。