Voltar ao blog

Como configurar a replicação do MongoDB e o failover automático

Como configurar a replicação do MongoDB e o failover automático

Um replica set é definido como um cluster de banco de dados de múltiplos nós com replicação e failover automático configurado entre eles. Para garantir que o banco de dados PRIMÁRIO seja eleito corretamente, é importante ter um número ímpar de membros no conjunto (incluindo ou excluindo o Arbiter nó). 

O banco de dados selecionado é responsável por todas as tarefas principais. Ele processa as operações de gravação de entrada e armazena suas informações no oplog. Essas informações podem ser acessadas e replicadas pelos membros da réplica SECUNDÁRIA para serem aplicadas em seus próprios conjuntos de dados. Como resultado, todos os servidores no conjunto representarão o mesmo conteúdo e garantirão sua disponibilidade:

How to Configure MongoDB Replication and Automated Failover 1-Replica set- graphic

Agora considere uma situação em que um problema inesperado (como falha de hardware ou de conexão) faça com que o banco de dados primário sofra uma inatividade. Nesse caso, o sistema iniciará automaticamente um novo processo de eleição para restaurar o funcionamento normal sem exigir qualquer intervenção manual. O benefício de tal sistema é que você obtém o melhor da replicação, como maior disponibilidade, redundância de failover e recuperação de desastres, sem ter que se preocupar em gerenciar múltiplos bancos de dados separadamente.

Se você deseja empregar um sistema semelhante, este tutorial mostrará como configurar um replica set do MongoDB com o CloudSigma PaaS. Como você verá neste guia, usaremos três membros, o que normalmente é suficiente para fornecer uma boa margem de segurança de informações e rendimento para lidar com operações de E/S para a maioria das aplicações comuns. Juntamente com a configuração real da replicação, também aprenderemos como preparar o ambiente, configurar a autenticação entre os nós do BD e como garantir que seu trabalho foi bem-sucedido.

Passo 1: Criar um Novo Ambiente

Para começar, você precisará de pelo menos 3 nós do MongoDB para iniciar a configuração de um replica set. Então, vá em frente e crie um novo ambiente da seguinte forma:

2-Create an Environment How to Configure MongoDB Replication and Automated Failover

Em nosso exemplo, estamos alocando todas as instâncias do MongoDB da versão 4.0.2 para o mesmo ambiente. Você pode alterar o Environment Name se necessário no espaço fornecido e continuar com o processo de instalação.

O próximo passo no processo será lidar com a segurança da comunicação entre esses nós usando o arquivo de chave de autenticação.

Passo 2: Adicionar um Arquivo de Chave de Autenticação

A autenticação é um componente crítico de qualquer replicação. É um processo de garantia de segurança que só concede acesso a um membro do replica set após ele se identificar corretamente com um arquivo de chave de autenticação exclusivo. Isso mantém seus dados protegidos de observadores indesejados e terceiros. Veja como você pode gerar seu próprio arquivo de chave de autenticação:

  1. Clique na opção Web SSH para um dos nós do banco de dados e faça o login:

3- Web SSH How to Configure MongoDB Replication and Automated Failover

    2. Em seguida, você pode inserir seu próprio arquivo de chave ou gerar um novo com o openssl usando o seguinte comando:

Neste comando, 741 representa o tamanho da chave em bytes e my.key é o nome da chave.

    3. Hora de distribuir o novo arquivo de chave por todas as suas instâncias do MongoDB. Veja como fazer isso:

  • Abra o File Manager clicando no botão Config ao lado de qualquer um dos nós do banco de dados:

4-Click on the Config

  • Localize o arquivo my.key na guia de configuração sob o caminho: /home/jelastic/my.key. Abra-o e copie o conteúdo do arquivo:

5- configuration tab How to Configure MongoDB Replication and Automated Failover

  • Sob o caminho /var/lib/jelastic/keys você encontrará o diretório keys directory. Crie um New File que as instâncias do MongoDB utilizarão para autenticar as identidades umas das outras. No nosso caso, criaremos um arquivo chamado mongo-set.key:

6-keys directory

  • Cole o conteúdo copiado anteriormente neste arquivo e aplique as alterações clicando em Save para todas as instâncias:

7-Paste the clipboard content

Como resultado deste processo, o arquivo mongo-set.key foi distribuído por todos os nossos nós do MongoDB.

Passo 3: Configurar a Replicação do MongoDB

Agora que garantimos a segurança das instâncias, podemos passar para a configuração real do replica set. Vamos começar:

  1. Comece acessando a guia de configuração dos nós do MongoDB e abrindo o arquivo mongo.conf no diretório etc pasta. Role para baixo até encontrar a seção de replicação. Descomente-a e adicione a seguinte string com um nome exclusivo para o seu conjunto de réplicas. Para o nosso exemplo, vamos chamá-lo de db-replication:
      2. Em seguida, adicionaremos um novo parâmetro chamado keyFile na seção de segurança. Isso servirá para especificar um caminho para o arquivo de chave que está atualmente no caminho: /var/lib/jelastic/keys/mongo-set.key:

8-Add parameter keyFile

      3. Clique no botão apropriado para Salvar as alterações para todas as instâncias na janela do editor. 

      4. Agora você deve Reiniciar todos os seus nós de banco de dados para aplicar os novos parâmetros de configuração:

9-Restart your DB nodes How to Configure MongoDB Replication and Automated Failover

Uma coisa a se ter em mente é que, quando você terminar de configurar o conjunto de réplicas e estiver reiniciando todos os nós ou o nó PRIMARY, o processo de eleição do novo banco de dados PRIMARY começará durante a reinicialização.

     5. Escolha o servidor MongoDB que deseja usar como PRIMARY e acesse-o usando o protocolo SSH:

10-access the MongoDB server How to Configure MongoDB Replication and Automated Failover

Lembre-se: uma vez eleito o banco de dados PRIMARY, os outros membros do conjunto de réplicas não estarão mais acessíveis para operações de gravação direta. Isso significa que todas as alterações e configurações só podem ser realizadas e aplicadas apenas ao nó PRIMARY atual. Portanto, a menos que você tenha organizado prioridades, você terá que alterar a string de conexão em sua aplicação para o novo nó PRIMARY.

     6. Em seguida, acesse o banco de dados replicado usando suas respectivas credenciais:

11-Access the database How to Configure MongoDB Replication and Automated Failover

Neste comando:

  • {user} –refere-se ao nome de usuário do administrador que será enviado para o seu e-mail (geralmente é admin por padrão).
  • {password} –esta é a senha enviada para o seu e-mail junto com o nome de usuário correspondente.
  • {DB_name}- representa o nome do banco de dados que você deseja replicar neste conjunto de réplicas (estamos usando o admin padrão em nosso exemplo).

No caso de uma nova eleição, você pode usar as mesmas credenciais do usuário admin para fazer login em um novo banco de dados PRIMARY.

     7. Agora que a conexão foi estabelecida, você precisará executar as seguintes linhas para definir os parâmetros para o nó MongoDB atual e iniciar o conjunto de réplicas:

Nas linhas acima, você substituirá os valores entre chaves pelos seus próprios dados correspondentes:

  • {replica_set} – este é o nome do seu grupo de banco de dados de replicação que você especificou no início desta seção. No nosso caso, era db-replication.
  • {current_db_ip} – indica o endereço IP do contêiner de banco de dados que você selecionou:

12-initiate your replica set How to Configure MongoDB Replication and Automated Failover

No nosso caso, as linhas executadas são:

13-config

14-rs.initiate()

        8. Em seguida, execute o seguinte comando para todos os bancos de dados restantes:

Aqui, {db_ip} refere-se ao endereço IP de cada banco de dados:

15-rs.add(

       9. Depois de adicionar todos os membros de replicação, você terá um conjunto de réplicas totalmente funcional. Recomendamos garantir que tudo foi configurado corretamente no final do processo. Para fazer isso, execute o comando: rs.status(). Isso mostrará informações completas sobre o seu conjunto de réplicas, como segue:

16-execute the rs.status()

Etapa 4: Configurar o Árbitro do ReplicaSet

Recomendamos o uso de um Árbitro em certos casos. O que é um Árbitro nó? Normalmente, a replicação é mais confiável se o conjunto de réplicas contiver um número ímpar de nós. Portanto, se você tiver atualmente um número par de nós em seu conjunto, poderá adicionar um Árbitro nó para manter o quórum, pois ele responde a solicitações de heartbeat e eleição de outros membros no conjunto. Aqui estão alguns detalhes sobre os nós Árbitros:

  • O Arbiter não armazena dados; ele apenas vota em eleições caso outro nó tenha falhado.
  • Ele é muito leve e não consome muitos recursos.
  • Ele trocou credenciais de usuário entre réplicas criptografadas.
  • Para manter a maior disponibilidade possível, tente executar o Arbiter em um nó separado.

Aqui está como você pode adicionar um nó Arbiter ao seu conjunto de réplicas:

  1. Primeiro, realizaremos um escalonamento horizontal e adicionaremos um nó extra ao cluster:

17-ReplicaSet Arbiter

18-Scale out database cluster

2. Com o nó adicionado, precisamos de um novo arquivo de chave. Vá para o diretório keys e crie um arquivo de chave mongo-set.key. Copie o conteúdo da chave de qualquer um dos nós de banco de dados configurados anteriormente e cole tudo aqui como fizemos antes.

3. Vá para o arquivo de configuração mongod.conf. Descomente a seção de replicação e adicione repISetName (que é db-replication no nosso caso). Além disso, vá para a seção security e adicione o parâmetro keyFile ( /var/lib/jelastic/keys/mongo-set.key no nosso caso).

4. Por fim, reinicie o novo nó para aplicar esses novos parâmetros de configuração:

19- Restart newly

É importante lembrar que você NÃO precisa reiniciar todos os nós do cluster neste momento. Reinicie apenas o nó Arbiter recém-adicionado. Reiniciar todos os nós resultará em uma nova eleição de PRIMARY (a menos que você tenha especificado prioridades para selecionar um nó de banco de dados específico como PRIMARY).

 5. Finalmente, o Arbiter pode ser adicionado ao conjunto de réplicas. Para fazer isso, execute o seguinte comando no nó PRIMARY:

Aqui, {db_ip} é o endereço IP do novo nó:

20-IP address of a newly added node

 6. Agora, você pode verificar para confirmar se o novo nó se tornou ou não o Arbiter. Você pode fazer isso fazendo login no novo nó usando SSH e conectando-se à instância do MongoDB com as credenciais que recebeu em seu e-mail no momento da criação do nó:

21-connect MongoDB instance

Isso mostra que o novo nó que acabamos de adicionar ao cluster está agindo como o Arbiter de db-replication. Isso garante um quórum em qualquer situação, tornando o conjunto de réplicas mais confiável.

Passo 5: Testar a Disponibilidade do Cluster de Banco de Dados

A seguir, podemos configurar nosso cluster MongoDB para conectar e realizar operações remotamente. No exemplo a seguir, nos conectaremos e executaremos alguns comandos de verificação usando um aplicativo PHP simples.

Para este propósito, você precisará de um servidor de aplicação, como o Apache. Você pode adicionar um ao seu ambiente como nós fizemos ou criar um novo em um ambiente separado.

  1. Comece clicando em Change Environment Topology e adicionando o servidor:

22-Press Change Environment Topology

23-Press Change Environment Topology button

    2. Abra a aba Configuration Manager para o servidor Apache clicando no botão Config como mostrado abaixo:

3. Localize e abra o arquivo index.php no diretório /var/www/webroot/ROOT e cole o seguinte código no lugar do conteúdo padrão:

Os seguintes valores no código acima precisam ser substituídos pelos seus respectivos dados:

  • {replica_set_name} – insira o nome do seu replica set.
  • {db_username} – adicione o usuário administrador do banco de dados primário escolhido (é admin por padrão).
  • {db_password} – insira a senha do usuário administrador.
  • {NodeID} – mencione o número de identificação do nó correspondente. Você pode encontrar isso no painel do CloudSigma PaaS.
  • {environment_domain} – adicione o domínio do ambiente. Você também pode encontrar isso no painel do CloudSigma PaaS:

Certifique-se de especificar os IDs de cada nó em seu replica set na seção mongodbConnectionURI apropriada.

Inserir os valores correspondentes e executar o código mostrará um conjunto de strings semelhante a este:

Certifique-se de Salvar o arquivo neste ponto!

4. Para que o Apache interaja com o servidor MongoDB, ele requer um módulo especial. Você pode adicionar este módulo dentro de configs. Vá para a pasta etc e abra o arquivo php.ini fileLocalize a seção [mongodb] . Aqui, tudo o que você precisa fazer é remover o ponto e vírgula antes da linha extension=mongodb.so para habilitar esta extensão:

      5. Aplique as novas configurações clicando em Salvar na janela do editor. Como sempre, precisamos reiniciar os nós para aplicar as alterações. Clique no botão Restart Nodes ao lado de Application Server para fazer isso:

    6. Agora clique no botão Open in Browser para testar:

Clicar neste ícone abrirá uma nova aba do navegador que mostrará todas as informações sobre os membros/nós do seu replica set e sua acessibilidade assim:

Como usamos o comando ping (linha 6 do index.php ), a primeira linha exibe o resultado da verificação de disponibilidade do replica set:

Isso significa que o replica set foi testado com sucesso. 

O próximo bloco nos resultados mostra informações detalhadas sobre os hosts do replica set. Esses dados são obtidos graças à função getServers (linha 11 do index.php). Da mesma forma, você também pode verificar alguns valores atribuídos durante o processo de criação deste replica set:

  • host – o endereço IP de um banco de dados específico.
  • port – esta é a porta do membro de replicação atual.
  • [“is_primary”] e [“is_secondary”] – parâmetros que indicam o status do servidor. Os valores correspondentes para o servidor MongoDB primário escolhido são true, false e para os outros dois servidores MongoDB – false, true respectivamente.

Além disso, você pode iniciar e parar nós de banco de dados a qualquer momento para acompanhar as alterações. Você também pode atualizar a página para fazer o mesmo. Isso permite garantir que seu cluster MongoDB esteja sempre disponível, ativo e funcionando conforme configurado.

O CloudSigma PaaS permite que seus usuários aproveitem os benefícios do uso de replica sets sem se preocupar muito com a configuração e o lado do back-end. Este tutorial mostra como a configuração do seu próprio cluster MongoDB pode ser simples com apenas alguns passos fáceis. Você pode aprender mais sobre o MongoDB, como configurá-lo para o Ubuntu ou servidores de nuvem pública, bem como quais outros recursos avançados o CloudSigma PaaS tem a oferecer. Também convidamos você a fazer um teste do PaaS gratuitamente para se familiarizar com o painel e o marketplace e o que eles oferecem. 

Experimente o PaaS gratuitamente por 7 dias

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.