Recuperação e manutenção
  • 3 minutos de leitura
  • Tema escuro
    Tema claro
  • Pdf

Recuperação e manutenção

  • Tema escuro
    Tema claro
  • Pdf

Article Summary

Como funciona reconciliação de dados dentro do senhasegura

O senhasegura usa o MariaDB Galera Cluster como tecnologia cluster de alta disponibilidade. 

Normalmente, em cenários de interrupção temporária da replicação de dados entre os nós do cluster com configurações padrão, há uma tolerância de aproximadamente 3 horas de interrupção em que o cluster precisa de um Incremental State Transfers (IST) para resolver a reconciliação, ou seja, apenas enviar os dados incrementais. Neste caso, nenhuma intervenção é necessária, pois o cluster resolve o problema da reconciliação automaticamente.

Paradas mais longas geralmente requerem uma transferência de dados completa State Snapshot Transfers (SST).
Na maioria dos casos, o cluster senhasegura é suficientemente resiliente e inteligente para resolver a reconciliação realizando um SST automaticamente.

Intervenção manual para realizar um SST no cluster primário

Verifique o status da sincronização ao fazer o login no banco de dados e verifique o controle das seguintes variáveis:

  1. Verifique o status da sincronização:
    sudo orbit cluster status
    
  2. Pare o processo MariaDB:

    sudo systemctl stop mariadb.service 
    
  3. Desative a replicação mudando o arquivo de configuração: galera.cnf

  4. Edite o arquivo de configuração:

    vim /etc/mysql/conf.d/galera.cnf
  5. Localize o parâmetro wsrep_on e mude o valor para OFF

  6. Salve o arquivo e saia do editor

  7. Elimine os arquivos antigos de controle de cluster, digite os seguintes comandos:

    sudo rm /var/lib/mysql/galera.cache
    
    sudo rm /var/lib/mysql/grastate.dat
    
    sudo rm /var/lib/mysql/multi-master.info
  8. Inicie o processo MariaDB:

    sudo systemctl start mariadb.service 
    
    

Passos no nó secundário (outros membros)

  1. Pare o processo MariaDB:

    sudo systemctl stop mariadb.service 
  2. Renomeie a pasta de dados do banco de dados atual para uma de backup:

    sudo mv /var/lib/mysql /var/lib/mysql-$(date +%d%m%y%H%M) 
    
  3. Crie uma nova pasta de dados do banco de dados:

    sudo install -d /var/lib/mysql -o mysql -g mysql 
    

Passos no nó primário (Membro primário)

  1. Pare o processo MariaDB:

    sudo systemctl stop mariadb.service 
    
  2. Habilite a replicação editando o arquivo de configuração

  3. Edite o arquivo de configuração /etc/mysql/conf.d/galera.cnf

  4. Localize o parâmetro wsrep_on e mude seu valor para ON

  5. Salve o arquivo e sair do editor;

  6. Abra outro terminal e monitore os logs do banco de dados:

    sudo tailf /var/log/mysql/mysql-error.log 
    
  7. Recrie o cluster, digite:

    sudo galera_new_cluster 
    
  8. Aguardar a inicialização completa;

Passos no nó secundário (outros membros)

  1. Confirme se a replicação está habilitada no arquivo de configuração: galera.cnf

  2. Edite o arquivo de configuração: /etc/mysql/conf.d/galera.cnf

  3. Edite o arquivo de configuração: /etc/mysql/conf.d/galera.cnf

  4. Salve o arquivo e sair do editor

  5. Abra outro terminal e monitore os logs do banco de dados:

    sudo tailf /var/log/mysql/mysql-error.log 
    
  6. Inicie o processo MariaDB:

    sudo systemctl start mariadb.service 
    
  7. Verificar se o número de membros do cluster está correto no log de banco de dados (por exemplo: se houver 2 membros, a mensagem members = 2/2(joined/total) deve ser impressa)

  8. Verifique se a confirmação da sincronização aparece esta mensagem:

    WSREP: Member 0.0 (vsrv-senhasegura-cert05) synced with group.
    

Status de aplicação e serviços

Todos os serviços utilizados pela plataforma senhasegura podem ser gerenciados pela linha de comando orbit.

Reiniciando a instância principal

Uma instância primária é uma instância que centraliza a execução de todos os serviços. E também usada como membro primário do esquema de cluster.

Você pode verificar como a instância é configurada usando o comando orbit status.

Para mudar uma instância para o uso primário e ativá-la, use a seguinte sequência de comandos para garantir um uso correto:

  1. sudo orbit application stop

  2. sudo orbit application master

  3. sudo orbit application start

  4. sudo orbit proxy fajita restart

  5. sudo orbit proxy rdpgate restart

O orbit application stop e o orbit application start também reiniciarão os serviços básicos de servidor web NGINX e PHP-FPM.

Reinicialização dos serviços Linux

Todos os serviços podem ser reiniciados usando a interface de comando orbit.

Use o comando sudo orbit service para reiniciar um serviço linux.

Preste muita atenção ao status dos seguintes serviços. Você pode reiniciá-lo por si mesmo se uma parada inesperada do serviço acontecer.

  • nginx: Serviço de servidor Web. Se for reiniciado, reinicie também o serviço php-fpm

  • php-fpm: Serviço PHP Wrapper

  • mariadb: Serviço de banco de dados

  • docker: Serviço de isolamento de proxy

  • wazuh-manager: Serviço Host-Based Intrusion Detection Systems (HIDS)

Host-Based Intrusion Detection Systems IP bloqueado

Se Host-Based Intrusion Detection Systems (HIDS) bloquear um IP, você pode desbloquear o IP usando o comando orbit firewall:

  1. sudo orbit firewall –show

  2. sudo orbit firewall unblock –host=[blocked IP]

Reiniciando o ambiente de cluster

Em um ambiente de cluster você deve reiniciar ou encerrar as instâncias na ordem correta para evitar problemas.

Use o sudo orbit shutdown em membros do cluster, uma instância de cada vez, esperando o encerramento completo para iniciar o processo em outro membro.

Dessa forma, os membros de cluster disponíveis entenderão que os membros estão sendo desativados.

Importante
Mantenha o nó primário como o último a ser desligado e o primeiro a ser ligado novamente.
Info
Em caso de desligamento de todas as instâncias do cluster, é necessário intervir manualmente para reestabelecer e regularizar o ambiente.

Serviços do Orbini e execução de tarefas

Serviços do Orbini é camada de abstração executada pelos módulos senhasegura.

Você pode controlar sua execução no menu Configurações ➔ Execução de processos ➔ Processos.

Todo processo possui uma configuração de time out. Em alguns casos, múltiplos processos podem ser acumulados à espera para serem executados.

Para descobrir porque o processo mais antigo está parado na lista de tarefas, execute-o manualmente.

sudo orbit execution --code ID --verbose --debug 



Este artigo foi útil?