Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Implemente um cluster fragmentado autogerenciado

Nesta página

  • Visão geral
  • Considerações
  • Antes de começar
  • 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 cluster em um horizonte de rede dividido. Começando no MongoDB 5.0, nós configurados apenas com um endereço IP falham na validação de inicialização e não são iniciados.

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/de associação autogerenciada nem o controle de acesso baseado em função em implantações autogerenciadas.

Em ambientes de produção, clusters fragmentados devem empregar no mínimo segurança x.509 para autenticação interna e acesso do cliente.

A partir do MongoDB 8.0, você pode usar a função directShardOperations para realizar operações de manutenção que exigem que você execute comandos diretamente em um shard.

Aviso

Executar comandos utilizando a função directShardOperations pode fazer com que seu cluster pare de funcionar corretamente e pode causar corrupção de dados. Use a função directShardOperations apenas para fins de manutenção ou sob a orientação do suporte do MongoDB . Quando terminar de executar as operações de manutenção, pare de usar a função directShardOperations .

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.

Se estiver usando um arquivo de configuração, defina:

sharding:
clusterRole: configsvr
replication:
replSetName: <replica set name>
net:
bindIp: localhost,<hostname(s)|ip address(es)>

Inicie o mongod com a opção --config definida para o caminho do arquivo de configuração.

mongod --config <path-to-config-file>

Se utilizar as opções da linha de comando, inicie o mongod com o --configsvr, --replSet, --bind_ip e outras opções conforme apropriado para seu sistema. Por exemplo:

Aviso

Antes de vincular sua instância a um endereço IP acessível publicamente, você deve proteger seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte Lista de verificação de segurança para implantações autogerenciadas. No mínimo, considere habilitar a autenticação e fortalecer a infraestrutura de rede.

mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

Para obter mais informações sobre parâmetros de inicialização, consulte a página de referência do mongod.

2

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

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

A partir do 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 instância mongod 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 autogerenciadas 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.

Se estiver usando um arquivo de configuração, defina:

sharding:
clusterRole: shardsvr
replication:
replSetName: <replSetName>
net:
bindIp: localhost,<ip address>

Inicie o mongod com a opção --config definida para o caminho do arquivo de configuração.

mongod --config <path-to-config-file>

Se estiver usando a opção de linha de comando, inicie o mongod com as opções --replSet e --shardsvr, --bind_ip e outras opções conforme apropriado para sua implementação. Por exemplo:

mongod --shardsvr --replSet <replSetname> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

Para obter mais informações sobre parâmetros de inicialização, consulte a página de referência do mongod.

2

Conecte mongosh a um dos membros do conjunto de réplicas.

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

A partir do 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 instância mongod 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.

Se estiver utilizando um arquivo de configuração, defina sharding.configDB como o nome do conjunto de réplicas do servidor de configuração e pelo menos um membro do conjunto de réplicas no formato <replSetName>/<host:port>.

Aviso

Antes de vincular sua instância a um endereço IP acessível publicamente, você deve proteger seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte Lista de verificação de segurança para implantações autogerenciadas. No mínimo, considere habilitar a autenticação e fortalecer a infraestrutura de rede.

sharding:
configDB: <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019
net:
bindIp: localhost,<hostname(s)|ip address(es)>

Inicie o mongos especificando a opção --config e o caminho para o arquivo de configuração.

mongos --config <path-to-config>

Para obter mais informações sobre o arquivo de configuração, consulte opções de configuração.

Se utilizar parâmetros da linha de comando, inicie o mongos e especifique o --configdb, --bind_ip e outras opções conforme apropriado para seu sistema. Por exemplo:

Aviso

Antes de vincular sua instância a um endereço IP acessível publicamente, você deve proteger seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte Lista de verificação de segurança para implantações autogerenciadas. No mínimo, considere habilitar a autenticação e fortalecer a infraestrutura de rede.

mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019,cfg3.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>

Inclua quaisquer outras opções, conforme apropriado para seu sistema.

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 fragmentos ao cluster.

Em uma sessão mongosh conectada ao mongos, use 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 coleção, conecte mongosh ao 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.

O mongosh fornece o método convertShardKeyToHashed(). Este método utiliza a mesma função de hash que o índice com hash e pode ser usado para ver qual seria o valor de hash para uma chave.

Dica

Veja também:

Voltar

Implemente e gerencie clusters fragmentados autogerenciados