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

Implemente um conjunto de réplicas autogerenciado para testes e desenvolvimento

Nesta página

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

Esse procedimento descreve a implantação de um conjunto de réplicas em um ambiente de desenvolvimento ou teste. Para uma implantação de produção, consulte o tutorial Implantar um conjunto de réplicas autogerenciado.

Este tutorial descreve como criar um conjunto de réplica de três membros a partir de três instâncias do mongod existentes executando com o controle de acesso desabilitado.

Para implantar um set com controle de acesso ativado, consulte Implantar conjunto de réplica autogerenciado com autenticação de arquivo-chave. Se você quiser implantar um conjunto de réplicas a partir de uma única instância do MongoDB, consulte Converter um mongod autônomo autogerenciado em um conjunto de réplicas. Para obter mais informações sobre sistemas de conjunto de réplicas, consulte a documentação de Replicação e de Arquiteturas de implantação de conjunto de réplicas.

Três conjuntos de réplicas de membros fornecem redundância suficiente para sobreviver à maioria das partições de rede e outras falhas do sistema. Esses conjuntos também têm capacidade suficiente para muitas operações de leitura distribuída. Os conjuntos de réplicas devem sempre ter um número ímpar de membros. Isso garante que as eleições decorram sem sobressaltos. Para saber mais sobre como projetar conjuntos de réplica, consulte a visão geral da replicação.

Para sistemas de teste e desenvolvimento, você pode executar suas instâncias do mongod em um sistema local ou dentro de uma instância virtual.

Antes de implementar um conjunto de réplicas, você deve instalar o MongoDB em cada sistema que fará parte do seu conjunto de réplicas. Se você ainda não instalou o MongoDB, consulte os tutoriais de instalação.

Cada membro deve ser capaz de se conectar a todos os outros membros. Para obter instruções sobre como verificar sua conexão, consulte Testar conexões entre todos os membros.

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.

Aviso

Antes de vincular a um não localhost (por exemplo, acessível IP ), certifique-se de ter protegido seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte a Lista de verificação de segurança para implementações autogerenciadas. No mínimo, procure habilitar a autenticação e fortalecer a infraestrutura de rede.

Os binários do MongoDB, mongod e mongos, são vinculados ao host local por padrão. Se a configuração do arquivo de configuração net.ipv6 ou a opção de linha de comando --ipv6 estiver definida para o binário, o binário também será vinculado ao endereço IPv6 do host local.

Por padrão, mongod e mongos vinculados ao localhost aceitam conexões apenas de clientes que estão sendo executados no mesmo computador. Esse comportamento de vinculação inclui mongosh e outros membros do seu conjunto de réplicas ou cluster fragmentado. Clientes remotos não podem se conectar a binários vinculados apenas ao localhost.

Para substituir a associação padrão e vincular a outros endereços IP, use a net.bindIp configuração do arquivo de configuração ou a --bind_ip opção de linha de comando para especificar uma lista de nomes de host ou endereços IP.

Aviso

A partir do MongDB 5.0, DNS de horizonte dividido nós que são configurados apenas com um endereço IP falham na validação de inicialização e relatam um erro. Consulte disableSplitHorizonIPCheck.

Por exemplo, a instância mongod a seguir é vinculada ao host local e ao nome de host My-Example-Associated-Hostname, que está associado ao endereço IP 198.51.100.1:

mongod --bind_ip localhost,My-Example-Associated-Hostname

Para se conectar a esta instância, os clientes remotos devem especificar o nome do host ou seu endereço IP associado 198.51.100.1:

mongosh --host My-Example-Associated-Hostname
mongosh --host 198.51.100.1

Nesta implantação de teste, os três membros executam na mesma máquina.

Importante

Essas instruções só devem ser usadas para implantações de teste ou sistema.

Os exemplos neste procedimento criam um novo conjunto de réplicas denominado rs0.

Se seu aplicativo se conectar a mais de um conjunto de réplicas, cada conjunto deverá ter um nome distinto. Alguns drivers agrupam conexões de conjunto de réplicas por nome de conjunto de réplicas.

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.

  1. Crie os diretórios de dados necessários para cada membro emitindo um comando semelhante ao seguinte:

    mkdir -p /srv/mongodb/rs0-0 /srv/mongodb/rs0-1 /srv/mongodb/rs0-2

    Isso criará diretórios chamados "rs0-0", "rs0-1" e "rs0-2", que conterão os arquivos do banco de dados das instâncias.

  2. Inicie suas instânciasmongod em suas próprias janelas de shell emitindo os seguintes comandos:

    Aviso

    Antes de vincular a um não localhost (por exemplo, acessível IP ), certifique-se de ter protegido seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte a Lista de verificação de segurança para implementações autogerenciadas. No mínimo, procure habilitar a autenticação e fortalecer a infraestrutura de rede.

    Primeiro nó:

    mongod --replSet rs0 --port 27017 --bind_ip localhost,<hostname(s)|ip address(es)> --dbpath /srv/mongodb/rs0-0 --oplogSize 128

    Segundo membro:

    mongod --replSet rs0 --port 27018 --bind_ip localhost,<hostname(s)|ip address(es)> --dbpath /srv/mongodb/rs0-1 --oplogSize 128

    Terceiro nó:

    mongod --replSet rs0 --port 27019 --bind_ip localhost,<hostname(s)|ip address(es)> --dbpath /srv/mongodb/rs0-2 --oplogSize 128

    Isto inicia cada instância como um membro de um conjunto de réplica denominado rs0, cada executando em uma porta distinta e especifica o caminho para seu diretório de dados com a configuração do --dbpath. Se você já estiver usando as portas sugeridas, selecione portas diferentes.

    As instâncias são vinculadas ao host local e ao endereço IP do host.

    A configuração do --oplogSize reduz o espaço em disco que cada instância do mongod utiliza. [1] Isso é ideal para implantações de teste e desenvolvimento, pois evita a sobrecarga de sua máquina. Para obter mais informações sobre essa e outras opções de configuração, consulte Opções de arquivo de configuração autogerenciado.

  3. Conecte-se a uma de suas mongod por meio do mongosh. Você precisará indicar qual instância especificando o número da porta. Por uma questão de simplicidade e clareza, você pode escolher o primeiro, como no comando a seguir:

    mongosh --port 27017
  4. No mongosh, use rs.initiate() para iniciar o conjunto de réplicas. Você pode criar um objeto de configuração do conjunto de réplicas no ambiente mongosh, como no exemplo a seguir:

    rsconf = {
    _id: "rs0",
    members: [
    {
    _id: 0,
    host: "<hostname>:27017"
    },
    {
    _id: 1,
    host: "<hostname>:27018"
    },
    {
    _id: 2,
    host: "<hostname>:27019"
    }
    ]
    }

    substituindo <hostname> pelo nome do host do seu sistema e, em seguida, passe o arquivo rsconf para rs.initiate() da seguinte forma:

    rs.initiate( rsconf )
  5. Exiba a configuração de réplica atual emitindo o seguinte comando:

    rs.conf()

    O objeto de configuração do conjunto de réplicas é semelhante ao seguinte:

    {
    "_id" : "rs0",
    "version" : 1,
    "protocolVersion" : NumberLong(1),
    "members" : [
    {
    "_id" : 0,
    "host" : "<hostname>:27017",
    "arbiterOnly" : false,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 1,
    "tags" : {
    },
    "secondaryDelaySecs" : NumberLong(0),
    "votes" : 1
    },
    {
    "_id" : 1,
    "host" : "<hostname>:27018",
    "arbiterOnly" : false,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 1,
    "tags" : {
    },
    "secondaryDelaySecs" : NumberLong(0),
    "votes" : 1
    },
    {
    "_id" : 2,
    "host" : "<hostname>:27019",
    "arbiterOnly" : false,
    "buildIndexes" : true,
    "hidden" : false,
    "priority" : 1,
    "tags" : {
    },
    "secondaryDelaySecs" : NumberLong(0),
    "votes" : 1
    }
    ],
    "settings" : {
    "chainingAllowed" : true,
    "heartbeatIntervalMillis" : 2000,
    "heartbeatTimeoutSecs" : 10,
    "electionTimeoutMillis" : 10000,
    "catchUpTimeoutMillis" : -1,
    "getLastErrorModes" : {
    },
    "getLastErrorDefaults" : {
    "w" : 1,
    "wtimeout" : 0
    },
    "replicaSetId" : ObjectId("598f630adc9053c6ee6d5f38")
    }
    }

Verifique o status da sua réplica configurada a qualquer momento com a operação rs.status().

Dica

Veja também:

A documentação das seguintes funções de shell para obter mais informações:

Você também pode considerar o roteiro de configuração simples como um exemplo de um conjunto de réplica configurado automaticamente básico.

Consulte Semântica de leitura e gravação do conjunto de réplicas para obter uma explicação detalhada da semântica de leitura e gravação no MongoDB.

[1] O oplog pode ultrapassar seu limite de tamanho configurado para evitar a exclusão do majority commit point.

Voltar

Substituir um membro