Resolução de conflitos em cluster usando CSYNC2

De Wiki Hackstore

Introdução

Estas são as etapas possíveis para redefinir um cluster csync2 que tenha sido destruído seriamente. Esta é uma abordagem apocalíptica e só deve ser usada quando mais correções cirúrgicas (como corrigir um conflito individual) não são viáveis, usando comando touch por exemplo em escopos de cluster auto younger.

Casos de Uso

Isso resolverá erros como:

    ERROR from peer 10.0.0.1: File is also marked dirty here!

E, dependendo da causa, ele pode corrigir erros como:

    Database backend is exceedingly busy => Terminating (requesting retry).
    ERROR from peer 10.0.0.1: Connection closed.


Mão na massa

Fase 1

1- Pare o serviço do csync2 em todos os servidores do cluster:

/etc/init.d/csync2 stop
killall -9 csync2

2- Comente a linha no crontab de todos os servidores referente à sincronia automática usando csync2 -x

3- Escolha um servidor que esteja mais próximo do estado correto e ajuste manualmente os arquivos conforme necessário para torná-lo o mestre autoritário.

4- Em todos os servidores, atualize o banco de dados csync2 para corresponder ao sistema de arquivos, mas sem marcar nada como sendo necessário sincronizar com outros servidores:

csync2 -cIr /


Fase 2

Execute todos os comandos nessa fase a partir do SERVIDOR PRINCIPAL selecionado na última fase.

1- Encontre todas as diferenças entre servidor autoritativo e controles remotos e marque para sincronização:

csync2 -TUXI

2- Redefinir banco de dados para forçar o servidor atual a ser vencedor em quaisquer conflitos:

csync2 -fr /

3- Inicie o serviço do csync2 em todos os servidores do cluster:

/etc/init.d/csync2 start

4- Execute uma sincronização com todos os outros servidores:

csync2 -xr /

Fase 3

1- Em todos os servidores, confirme se todos os arquivos estão sincronizados (se for bem-sucedido, não serão listados os arquivos):

csync2 -T

OBS: Caso ocorram erros nos outros nós, continue executando o sync a partir do servidor principal:

csync2 -xv


2- Em todos os servidores, reinicie o serviço de sincronização automática:

/etc/init.d/csync2 start


fonte: https://gist.github.com/scottsb/cc4a10b57314f63febe2