Configure uma replicação simples de arquivos via Csync2

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 1.3X
  • Opensuse 11.1


Configuração

Instalação

  • Instalar pelo smart os pacotes:
$ zypper install librsync sqlite2-devel sqlite2 gnutls gnutls-devel flex bison sqlite3-devel


  • Instalar o libtasn1:
$ zypper install libtasn1 libtasn1-devel
  • Caso não funcione, pode também baixar e instalar o libtasn1:
 
$ wget ftp://ftp.gnutls.org/pub/gnutls/libtasn1/libtasn1-1.4.tar.gz
$ ./configure; make ; make install
  • Compilar o Csync2:
$ ./configure
$ make
$ make install
$ make cert



Configuração

  • Criar o /etc/csync2.cfg:
#Exemplo /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;

        auto younger;
}
  • Criar a chave de segurança em algum dos nodos:
$ csync2 -k /etc/csync2.key_hackstore
  • Copiar a chave de segurança e ssl para os demais hosts:
$ scp /etc/csync2* root@outroshosts:/etc
  • Caso deseje criar certificado na mao:
$ 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 
  • Setar permissões:
$ chmod 640 /etc/csync2.cfg
  • Copiar arquivo de conf e chave para o outro servidor.
  • Setar permissoes e colocar no boot:
$ chmod 755 /etc/init.d/csync2; chkconfig -a csync2;
  • Iniciar o daemon em ambas as máquinas:
$ /etc/init.d/csync2 start;
  • Sincronizar:
$ csync2 -x
  • Na primeira sincronia pode gerar erros. Rodar mais de uma vez nesse caso.
  • Colocar o script no crontab com a frequência de sincronismo:
#Crontab
#Sync files 
*/30 * * * *   root  /usr/local/sbin/csync2 -x


Arquivo de init

Crie o arquivo de init (opensuse):

#!/bin/bash

#Script para subir zopes start

### BEGIN INIT INFO
# Provides: csync2
# Required-Start: $network $syslog sshd
# Required-Stop: $network $syslog sshd
# Default-Start:  3 5
# Default-Stop:   0 1 2 6
# Short-Description:    Control sync resources.
### END INIT INFO


# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num>
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
. /etc/rc.status

# First reset status of this service
rc_reset


case "$1" in
    start)
        echo -n "Starting Csync2..."
        /usr/local/sbin/csync2 -ii &

        rc_status -v && rc_exit
        ;;
   stop)

        echo -n "Shutting down Csync2...."
        killall -TERM /usr/local/sbin/csync2

        rc_status -v && rc_exit
        ;;

    reload|restart)

        echo -n "Restarting Csync2..."
                $0 stop
                $0 start

                rc_status
                ;;

     *)
        echo "Usage: $0 {start|stop|reload|restart}"
        exit 1
        ;;
esac
rc_exit


Referências: