Configure uma replicação simples de arquivos via Csync2 no CentOS 7

De Wiki Hackstore

Descrição

  • Sincronização de arquivos no servidor com csync2.
  • Ele possui vários algoritmos de sincronia, como pelo arquivo mais novo, mais antigo, maior, entre outros. Nesse caso estarei usando o mais novo (younger)
  • Além de sincronizar é possível executar comandos remotos, como reiniciar o apache após um rotate de log.
  • Pode ser utilizado com N servidores.


Softwares e Versões

  • Csync2 2.0 ou superior
  • CentOS 7


Instalação

Baixe o csync2 [1]:

wget http://oss.linbit.com/csync2/csync2-2.0.tar.gz


Instale os pacotes necessários para compilação:

yum install libtasn1 librsync-devel sqlite-devel gnutls-devel xinetd
yum groupinstall 'Development Tools'


Compile o Csync2:

./configure ; make && make install && make cert


Configuração

Crie o arquivo /usr/local/etc/csync2.cfg:

group mygroup
{
        host web2xt-master@10.199.199.1 web2xt-slave@10.199.199.2;

        key /etc/csync2.key_hackstore;

        include /etc/passwd;
        include /etc/group;
        include /etc/shadow;
        exclude /etc/hostname;
        auto younger;
}


Crie um link simbólico para o /etc (opcional):

cd /etc ; ln -s /usr/local/etc/csync2.cfg csync2.cfg


Crie a chave de segurança em algum dos nodos:

csync2 -k /etc/csync2.key_hackstore


Copie a chave de segurança e o arquivo de conf para os demais hosts:

scp /etc/csync2* root@outroshosts:/etc


Caso deseje criar certificado na mão:

$ openssl genrsa -out /etc/csync2_ssl_key.pem 1024

$ openssl req -new -key /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.csr

$ openssl x509 -req -days 600 -in /etc/csync2_ssl_cert.csr -signkey /etc/csync2_ssl_key.pem -out /etc/csync2_ssl_cert.pem 


Ajuste as permissões:

chmod 640 /etc/csync2.cfg


Arquivo do xinetd

Crie o arquivo do xinetd:

vi /etc/xinetd.d/csync2
# default: off
# description: csync2
service csync2
{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        group           = root
        server          = /usr/local/sbin/csync2
        server_args     = -i
        port            = 30865
        type            = UNLISTED
        #log_on_failure += USERID
        disable         = no
        # only_from     = 192.168.199.3 192.168.199.4
}


Agendamento de sincronização automática

Inicie o daemon em ambas as máquinas:

 systemctl start xinetd.service


Sincronize manualmente:

csync2 -x
  • OBS: Na primeira sincronia pode gerar erros. Rodar mais de uma vez nesse caso.


Colocar o script no crontab com a frequência de sincronismo desejada:

#Sync files 
*/30 * * * *   root  /usr/local/sbin/csync2 -x


Referências: