Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
Implementar um cluster fragmentado
Nesta página
Visão geral
Este tutorial envolve a criação de um novo cluster fragmentado que consiste em um mongos
, o conjunto de réplicas do servidor de configuração e dois conjuntos de réplicas de fragmento.
Considerações
Conectividade
Cada nó de um cluster fragmentado deve ser capaz de se conectar a todos os outros nós do cluster. Isso inclui todos os shards e servidores de configuração. Certifique-se de que os sistemas de rede e de segurança, incluindo todas as interfaces e firewalls, permitam essas conexões.
Nomes de host e configuração
Importante
Para evitar atualizações de configuração devido a alterações de endereço IP, use nomes de host DNS em vez de endereços IP. É particularmente importante usar um nome de host DNS em vez de um endereço IP ao configurar membros de conjunto de réplicas ou membros de cluster fragmentado.
Use nomes de host em vez de endereços IP para configurar clusters em um horizonte de rede dividido. A partir do MongoDB 5.0, os nós que são configurados apenas com um endereço IP falham na validação de inicialização e não iniciam.
Implementações do Localhost
Se você usar localhost
ou seu endereço IP como a parte do nome do host de qualquer identificador de host, deverá usar esse identificador como a configuração de host para qualquer outro componente do MongoDB no cluster.
Por exemplo, o método sh.addShard()
usa um parâmetro host
para o nome do host do shard de destino. Se você definir host
como localhost
, será necessário usar localhost
como o host de todos os outros shards no cluster.
Segurança
Este tutorial não inclui as etapas necessárias para configurar a Autenticação Interna/Associação ou o Controle de Acesso Baseado em Funções.
Em ambientes de produção, clusters fragmentados devem empregar no mínimo segurança x.509 para autenticação interna e acesso do cliente.
Procedimento
Criar o Conjunto de Réplicas do Servidor de Configuração
As seguintes etapas distribuem um conjunto de réplicas do servidor de configuração.
Para um sistema de produção, implemente um conjunto de réplicas de servidor de configuração definido com pelo menos três membros. Para fins de teste, você pode criar um conjunto de réplicas de membro único.
Observação
O conjunto de réplicas do servidor de configuração não deve usar o mesmo nome que qualquer um dos conjuntos de réplicas de shard.
Para este tutorial, os membros do conjunto de réplicas do servidor de configuração estão associados com os seguintes hosts:
Nó do conjunto de réplicas do servidor de configuração | nome de anfitrião |
---|---|
Membro 0 | cfg1.example.net |
Membro 1 | cfg2.example.net |
Membro 2 | cfg3.example.net |
Conecte-se a um dos servidores de configuração.
Conecte o mongosh
a um dos membros do servidor de configuração.
mongosh --host <hostname> --port <port>
Inicie o conjunto de réplicas.
A partir mongosh
, execute o método rs.initiate()
.
rs.initiate()
pode pegar um documento opcional de configuração do conjunto de réplicas. No documento de configuração do conjunto de réplicas, inclua:
O
_id
definido como o nome do conjunto de réplicas especificado na opçãoreplication.replSetName
ou--replSet
.O campo
configsvr
configurado comotrue
para o conjunto de réplicas do servidor de configuração.A array
members
com um documento por cada membro do conjunto de réplicas.
Importante
Execute rs.initiate()
em apenas uma e apenas uma instânciamongod
para o conjunto de réplicas.
rs.initiate( { _id: "myReplSet", configsvr: true, members: [ { _id : 0, host : "cfg1.example.net:27019" }, { _id : 1, host : "cfg2.example.net:27019" }, { _id : 2, host : "cfg3.example.net:27019" } ] } )
Consulte Configuração do conjunto de réplicas para mais informações sobre documentos de configuração do conjunto de réplicas.
Depois que o conjunto de réplicas do servidor de configuração (CSRS) for iniciado e ativado, prossiga para criar os conjuntos de réplicas de shards.
Crie os conjuntos de réplicas shard
Para um sistema de produção, use um conjunto de réplicas com pelo menos três membros. Para fins de teste, você pode criar um conjunto de réplicas de um único membro.
Observação
Os conjuntos de réplicas do shard não devem usar o mesmo nome que o conjunto de réplicas do servidor de configuração.
Para cada shard, use as seguintes etapas para criar o conjunto de réplicas do shard:
Conecte-se a um nó do conjunto de réplicas do shard.
Conecte o mongosh
a um dos nós do conjunto de réplicas.
mongosh --host <hostname> --port <port>
Inicie o conjunto de réplicas.
A partir mongosh
, execute o método rs.initiate()
.
rs.initiate()
pode pegar um documento opcional de configuração do conjunto de réplicas. No documento de configuração do conjunto de réplicas, inclua:
O campo
_id
definido com o nome do conjunto de réplicas especificado na opçãoreplication.replSetName
ou--replSet
.A array
members
com um documento por cada membro do conjunto de réplicas.
O exemplo a seguir inicia um conjunto de réplicas de três membros.
Importante
Execute rs.initiate()
em apenas uma e apenas uma instânciamongod
para o conjunto de réplicas.
rs.initiate( { _id : "myReplSet", members: [ { _id : 0, host : "s1-mongo1.example.net:27018" }, { _id : 1, host : "s1-mongo2.example.net:27018" }, { _id : 2, host : "s1-mongo3.example.net:27018" } ] } )
Iniciar um mongos
para o cluster fragmentado
Inicie um mongos
utilizando um arquivo de configuração ou um parâmetro da linha de comando para especificar os servidores de configuração.
Neste ponto, seu cluster fragmentado consiste no mongos
e nos servidores de configuração. Agora você pode se conectar ao cluster fragmentado usando mongosh
.
Conecte-se ao cluster fragmentado
Conecte mongosh
a mongos
. Especifique host
e port
em que mongos
está sendo executado:
mongosh --host <hostname> --port <port>
Depois de conectar mongosh
ao mongos
, continue com o próximo procedimento para adicionar shards ao cluster.
Adicionar shards ao cluster
Em uma sessão do mongosh
que está conectada ao mongos
, utilize o método sh.addShard()
para adicionar cada fragmento ao cluster.
A seguinte operação adiciona um conjunto de réplica de shard único ao cluster:
sh.addShard( "<replSetName>/s1-mongo1.example.net:27018,s1-mongo2.example.net:27018,s1-mongo3.example.net:27018")
Repita essas etapas até que o cluster inclua todos os shards desejados.
Fragmentar uma Coleção
Para fragmentar uma collection, conecte mongosh
a mongos
e use o método sh.shardCollection()
.
Observação
Fragmentação e índices
Se a collection já contiver dados, você deverá criar um índice que suporte a chave de shard antes de fragmentar a collection. Se a collection estiver vazia, o MongoDB criará o índice como parte do sh.shardCollection()
.
O MongoDB oferece duas estratégias para fragmentar as collections:
A fragmentação por hash usa um índice hash baseado em um único campo como a chave de shard para dividir os dados em seu cluster fragmentado.
sh.shardCollection("<database>.<collection>", { <shard key field> : "hashed" } ) A fragmentação baseada em faixas pode usar vários campos como a chave de shard e divide os dados em faixas contínuas determinadas pelos valores da chave de shard.
sh.shardCollection("<database>.<collection>", { <shard key field> : 1, ... } )
Considerações sobre a chave de shard
Sua seleção de chave de shard afeta a eficiência da fragmentação, bem como sua capacidade de aproveitar certos recursos de fragmentação, como zonas. Para saber como escolher uma chave de shard eficaz, consulte Escolher uma Chave de Shard.
A partir da versão 4.0, mongosh
fornece o método convertShardKeyToHashed()
. Esse método utiliza a mesma função de hash que o índice de hash e pode ser usado para ver qual seria o valor de hash para uma chave.
Dica
Veja também:
Para chaves de shard de fragmentação hasheada, consulteChave de shard de fragmentação hasheada
Para informações sobre chaves de shard à distância, consulte Seleção de chaves de shard