Herramientas de usuario

Herramientas del sitio


linux:clusters:csync2

**¡Esta es una revisión vieja del documento!**

Csync2

Sincronizar archivos entre clusters Versión 1

Configurar
Cluster de w11-test y w12-test como master y (esclavo)

Instalar csync2 en cada nodo del cluster
apt-get install csync2

Verificar que cada equipo conozca la ip de los demás en el /etc/hosts:
127.0.0.1 localhost 192.168.2.152 w11-test.pm.rosario.gov.ar w11-test 192.168.2.153 w12-test.pm.rosario.gov.ar w12-test

En w11-test generar clave (si no hace nada tipear hasta que vuelva)
csync2 -k /etc/csync2.key chmod 600 /etc/csync2.key

Generar los certificados en un debian 6 o anterior con el Common Name (CN) vacío (por un bug de la v1)
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

Copiarlos a w11-test
rsync -av /etc/csync* w11-test:/etc/ chown root.root /etc/csync2_ssl* chmod 640 /etc/csync2_ssl*

Crear archivo de configuracion /etc/csync2.cfg en w11-test:

# please see the REAMDE file how to configure csync2
#nossl w* w*; # no utiliza certificados ni encriptacion
group apache2 `
        host    w11-test;
        host    (w12-test);
        key     /etc/csync2.key;
        include /etc/apache2;
        include /etc/php5;
        include /var/www;
        exclude *.swp;
        action `
                pattern /etc/apache2/*;
                exec    "/usr/bin/rsync -a /etc/apache2/* /var/backups/apache2-csync2/`date +%Y.%m.%d-%H.%M.%S`-apache2/; /etc/init.d/apache2 reload";
                logfile "/var/log/csync2_apache.log";
                do-local; #ejecuta el comando en local y remotos
        `
        action `
                pattern /etc/php5/*;
                exec    "/usr/bin/rsync -a /etc/php/* /var/backups/apache2-csync2/`date +%Y.%m.%d-%H.%M.%S`-php/; /etc/init.d/apache2 reload";
                logfile "/var/log/csync2_php.log";
                do-local;
        `
        action `
                pattern /var/www/*;
                exec    "/usr/bin/rsync -a /var/www/* /var/backups/apache2-csync2/`date +%Y.%m.%d-%H.%M.%S`-www/";
                logfile "/var/log/csync2_www.log";
                do-local;
        `

        backup-directory /var/backups/csync2;
        backup-generations 3;

        auto none; # modo para resolver conflictos en este caso gana siempre master
`

Copiar archivos de configuracion a w12-test
scp /etc/csync2* w12-test:/etc/

Reiniciar el inetd en ambos nodos
/etc/init.d/openbsd-inetd restart

Generar directorio para backups en cada nodo
mkdir -p /var/backups/csync2/

Hacer primera sincronización para generar la base
Primero en el master y luego en los esclavos
csync2 -xv Los esclavos deben tirar error de que no pueden sincronizar a otros por política del cluster
ERROR from peer w12-test: Permission denied for slave!

Verificar que todos quedaron con la base al día (no debe devolver ninguna salida)
csync2 -T

Opcional: agregar sincronización automática
*/1 * * * * csync2 -x >/dev/null 2>&1

Opcional: generar script para sincronizar a mano
Archivo /usr/local/bin/apache2sync
#!/bin/bash # sincroniza config de apache usando csync2 /usr/sbin/csync2 -v -m $@ 2>&1 | /usr/bin/logger -t csync2 /usr/sbin/csync2 -v -u 2>&1 | /usr/bin/logger -t csync2 Marca para sincronizar los archivos modificados y después los sincroniza notificando al syslog

Fuente
http://hswong3i.net/blog/hswong3i/apache2-cluster-csync2-ubuntu-12-04-mini-howto

Problemas
Para debug de errores
csync2 -xvvv csync2 -TI

Probar sin certificados: descomentar en config y reiniciar
nossl w* w*; # no utiliza certificados ni encriptacion

En caso de cambio de certificados: error
Peer did provide a wrong SSL X509 cetrificate. Borrar certificado de la base
sqlite /var/lib/csync2/`hostname`.db sqlite> delete from x509_cert where peername = 'name-of-peer';

Error de identificacion
ERROR from peer w12-test: Identification failed!

Revisar que cada equipo se pueda conectar a los demás sin problemas
csync2 -vT

Borrar base en los nodos y regenerar listado de archivos sincronizados
rm /var/lib/csync2/w11-test.db

Script para borrar archivos de la base
echo 'select filename from file;' | sqlite /var/lib/csync2/w11-test.db | grep sites-enabled >/tmp/1 for I in `cat /tmp/1`; do echo "delete from file where filename = \"$`I`\";" | sqlite /var/lib/csync2/w11-test.db; done

linux/clusters/csync2.1544112348.txt.gz · Última modificación: 2018/12/06 16:05 por grillo