Componentes de clusters fragmentados
Um cluster fragmentado MongoDB consiste nos seguintes componentes:
fragmento: cada fragmento contém um subconjunto dos dados fragmentados. Cada fragmento deve ser implantado como um conjunto de réplicas.
mongos: O
mongos
atua como um roteador de consulta, fornecendo uma interface entre os aplicativos clientes e o cluster fragmentado.mongos
pode ser compatível com leituras distribuídas para minimizar as latências.servidores de configuração: os servidores de configuração armazenam metadados e definições de configuração para o cluster. Os servidores de configuração devem ser implantados como um conjunto de réplicas (CSRS).
Configuração de produção
Em um cluster de produção, certifique-se de que os dados sejam redundantes e que seus sistemas estejam altamente disponíveis. Considere o seguinte ao implantar um cluster fragmentado de produção:
Distribuir servidores de configuração como um conjunto de réplicasde 3 nós
Implante cada shard como um conjunto de réplicas de três membros
Distribua um ou mais roteadores
mongos
Distribuição do conjunto de réplicas
Sempre que possível, considere implantar um membro de cada conjunto de réplicas em um site adequado para ser o local de recuperação após desastres.
Observação
A distribuição de membros do conjunto de réplicas em dois centros de dados fornece benefícios de um único centro de dados. Em uma distribuição de dois centros de dados ,
Se um dos centros de dados ficar inativo, os dados ainda estarão disponíveis para leituras, diferentemente de uma distribuição de centro de dados único.
Se o centro de dados com uma minoria dos membros ficar inativo, o conjunto de réplicas ainda pode servir operações de gravação, bem como operações de leitura.
No entanto, se o centro de dados com a maioria dos membros cair, o conjunto de réplicas se tornará somente leitura.
Se possível, distribua membros em pelo menos três data centers. Para conjuntos de réplicas do servidor de configuração (CSRS), a prática recomendada é distribuir por três (ou mais, dependendo do número de membros) centros. Se o custo do terceiro data center for proibitivo, uma possibilidade de distribuição é distribuir uniformemente os membros da propriedade de dados nos dois data centers e armazenar o membro restante na nuvem, se a política da sua empresa permitir.
Número de shards
A fragmentação exige pelo menos dois shards para distribuir os dados fragmentados. Clusters fragmentados de shard único podem ser úteis se você planeja habilitar uma fragmentação em um futuro próximo, mas não precisa fazê-lo no momento da implementação.
Número de mongos
e distribuição
A distribuição de vários roteadores mongos
oferece suporte a alta disponibilidade e escalabilidade. Se um proxy ou balancer de carga estiver entre o aplicativo e os roteadores do mongos
, você deverá configurá-lo para afinidade do cliente. A afinidade do cliente permite que cada conexão de um único cliente alcance o mesmo mongos
. Para alta disponibilidade de shard, um padrão comum é colocar instâncias mongos
no mesmo hardware em que as instâncias mongod
já estão sendo executadas. Outra opção é incorporar roteadores mongos
com infraestrutura de camada de aplicativo.
Não há limite para o número de roteadores mongos
que você pode ter em um sistema. No entanto, como os roteadores mongos
se comunicam frequentemente com seus servidores de configuração, monitore o desempenho do servidor de configuração de perto à medida que você aumenta o número de roteadores. Se você observar uma degradação do desempenho, pode ser benéfico limitar o número de roteadores mongos
em sua implantação.
O diagrama a seguir mostra uma arquitetura de cluster fragmentada comum usada na produção:
Configuração de desenvolvimento
Para teste e desenvolvimento, você pode implantar um cluster fragmentado com um número mínimo de componentes. Esses clusters que não são de produção têm os seguintes componentes:
Uma instância
mongos
.Um único conjunto de réplicas de shard.
Um servidor de configuração do conjunto de réplicas.
O diagrama a seguir mostra uma arquitetura de cluster fragmentado usada somente para desenvolvimento:
Aviso
Use a arquitetura de cluster de teste apenas para teste e desenvolvimento.