Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Implementar um cluster fragmentado

Nesta página

  • Visão geral
  • Considerações
  • Procedimento

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.

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.

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.

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.

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.

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
1

Ao iniciar cada mongod, especifique as configurações mongod através de um arquivo de configuração ou da linha de comando.

2

Conecte o mongosh a um dos membros do servidor de configuração.

mongosh --host <hostname> --port <port>
3

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ção replication.replSetName ou --replSet.

  • O campo configsvr configurado como true 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.

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:

1

Ao iniciar cada mongod, especifique as configurações mongod através de um arquivo de configuração ou da linha de comando.

2

Conecte o mongosh a um dos nós do conjunto de réplicas.

mongosh --host <hostname> --port <port>
3

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ção replication.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" }
]
}
)

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 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.

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.

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, ... } )

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:

← Fragmentação com intervalos
Zonas →