Adicionar um Árbitro a um Conjunto de Réplicas Autogerenciadas
Em algumas circunstâncias (como quando você tem um primário e um secundário, mas as restrições de custo proíbem a adição de outro secundário), você pode optar por adicionar uma instância do mongod
a um conjunto de réplicas como um árbitro para votar nas eleições.
Os árbitros são instâncias mongod
que fazem parte de um conjunto de réplicas, mas não armazenam dados (i.e. não oferecem redundância de dados). No entanto, eles podem participar de eleições.
Os árbitros têm requisitos mínimos de recursos e não exigem hardware dedicado. Você pode implantar um árbitro em um servidor de aplicativos ou em um host de monitoramento.
Importante
Não execute um árbitro em sistemas que também hospedem os membros principais ou secundários do conjunto de réplicas.
Aviso
Evite implementar mais de um arbiter em um conjunto de réplicas. Consulte Preocupações com vários arbiters.
Para adicionar um árbitro a um conjunto de réplicas existente:
Normalmente, se houver dois ou menos membros portadores de dados no conjunto de réplicas, talvez seja necessário definir primeiro a preocupação de gravação em todo o cluster para o conjunto de réplicas.
Consulte preocupação de gravação em todo o cluster para obter mais informações sobre por que você pode precisar definir a preocupação de gravação em todo o cluster.
Você não precisa alterar a questão de escrita em todo o cluster antes de começar um novo conjunto de réplicas com um arbiter.
Considerações
Os árbitros não são compatíveis com as versões rápidas trimestrais. Se a sua implantação incluir árbitros, utilize somente versões do LTS.
Conjuntos de réplicas Primary-Secondary-Arbiter
Se você estiver usando uma arquitetura PSA (primária-secundária-arbiter) de três membros, considere o seguinte:
A preocupação de gravação
"majority"
pode causar problemas de desempenho se um secundário não estiver disponível ou estiver atrasado. Para obter conselhos sobre como mitigar esses problemas, consulte Atenuar problemas de desempenho com um conjunto de réplicas de PSA autogerenciado.Se você estiver usando um
"majority"
padrão global e o write concern for menor do que o tamanho da maioria, suas consultas poderão retornar dados obsoletos (não totalmente replicados).
Árbitro
Um árbitro não armazena dados, mas até que o processo mongod
do árbitro seja adicionado ao conjunto de réplicas, o árbitro agirá como qualquer outro processo mongod
e iniciará com um conjunto de arquivos de dados e com um diáriode tamanho normal.
Vinculação IP
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.
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
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.
Adicionar um arbiter
Aviso
Evite implementar mais de um arbiter em um conjunto de réplicas. Consulte Preocupações com vários arbiters.
Para adicionar um árbitro a um conjunto de réplicas existente:
Normalmente, se houver dois ou menos membros portadores de dados no conjunto de réplicas, talvez seja necessário definir primeiro a preocupação de gravação em todo o cluster para o conjunto de réplicas.
Consulte preocupação de gravação em todo o cluster para obter mais informações sobre por que você pode precisar definir a preocupação de gravação em todo o cluster.
Você não precisa alterar a questão de escrita em todo o cluster antes de começar um novo conjunto de réplicas com um arbiter.
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.
Criar um diretório de dados (por exemplo,
storage.dbPath
) para o arbiter. A instância domongod
utiliza o diretório para dados de configuração. O diretório não manterá o conjunto de dados. Por exemplo, crie o diretório/var/lib/mongodb/arb
:mkdir /var/lib/mongodb/arb Inicie o arbiter especificando o diretório de dados e o nome do conjunto de réplicas para participar. O seguinte inicia um arbiter usando o
/var/lib/mongodb/arb
comodbPath
ers
para o nome do conjunto de réplicas: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 --port 27017 --dbpath /var/lib/mongodb/arb --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)> Conecte-se ao primary e adicione o arbiter ao conjunto de réplicas. Use o método
rs.addArb()
, como no exemplo a seguir, que pressupõe quem1.example.net
é o nome do host associado ao endereço IP especificado para o arbiter:rs.addArb("m1.example.net:27017") Esta operação adiciona o árbitro em execução na porta
27017
no host dom1.example.net
.