Lsyncd significa “Demonio de sincronización en vivo“, como sugiere el nombre, lsyncd se usa para sincronizar o replicar archivos y directorios local y remotamente después de un intervalo de tiempo específico. Utiliza rsync y ssh en el backend.
Lsyncd funciona en la arquitectura Maestro y Esclavo donde monitorea el directorio en el servidor maestro, si se realizan cambios o modificaciones, lsyncd replicará lo mismo en sus servidores esclavos después de un intervalo de tiempo específico.
En este artículo, discutiremos cómo instalar y usar lsyncd en CentOS 7 y RHEL 7.
Escenario: suponga que desea sincronizar la carpeta «/var/www/html» del servidor maestro al servidor esclavo
- IP del servidor maestro = 192.168.1.14
- IP del servidor esclavo = 192.168.1.15
- Directorio a sincronizar = /var/www/html
Primero habilite la autenticación basada en clave entre el servidor maestro y el esclavo.
Inicie sesión en el servidor maestro y genere las claves pública y privada mediante el comando ssh-keygen.
Ahora copie la clave pública usando el comando ssh-copy-id al servidor esclavo
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
Paso:1 Inicie sesión en el servidor maestro e instale el paquete Lsyncd
Instale los paquetes de dependencia de lsyncd usando el siguiente comando yum.
[[email protected] ~]# yum install lua lua-devel pkgconfig gcc asciidoc
Para instalar el paquete lsyncd usando el comando yum, primero habilite el repositorio EPEL ya que lsyncd rpm no está disponible en los repositorios predeterminados.
[[email protected] ~]# rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm [[email protected] ~]# yum install lsyncd
Paso:2 Configure el archivo de configuración de Lsyncd
Copie la configuración de muestra en /etc/lsyncd.conf
[[email protected] ~]# cp /usr/share/doc/lsyncd-2.1.5/examples/lrsync.lua /etc/lsyncd.conf
Agregue las siguientes líneas al archivo de configuración.
[[email protected] ~]# cat /etc/lsyncd.conf ---- -- User configuration file for lsyncd. -- -- Simple example for default rsync. -- settings = { logfile = "/var/log/lsyncd.log", statusFile = "/var/log/lsyncd.stat", statusInterval = 2, } sync{ default.rsync, source="/var/www/html", target="192.168.1.15:/var/www/html", rsync={rsh ="/usr/bin/ssh -l root -i /root/.ssh/id_rsa",} } [[email protected] ~]#
Paso: 3 Inicie el servicio y actívelo al reiniciar
[[email protected] ~]# systemctl start lsyncd [[email protected] ~]# systemctl enable lsyncd ln -s '/usr/lib/systemd/system/lsyncd.service' '/etc/systemd/system/multi-user.target.wants/lsyncd.service'
Paso:4 Analice el informe de replicación y registros.
Como podemos ver que estamos usando “raíz” usuario para sincronizar datos, según sus requisitos, puede cambiar el nombre de usuario.
En el archivo de registro podemos ver el estado de la replicación, ya sea que la replicación esté completa o no.
[[email protected] ~]# tail -10 /var/log/lsyncd.log Sun Jul 26 12:53:04 2015 Normal: recursive startup rsync: /var/www/html/ -> 192.168.1.15:/var/www/html/ Sun Jul 26 12:53:56 2015 Normal: Startup of "/var/www/html/" finished. [[email protected] ~]#
Usando el archivo Stat, vemos el informe de estado de lsyncd. Ejemplo de muestra se muestra a continuación
[[email protected] ~]# more /var/log/lsyncd.stat Lsyncd status report at Sun Jul 26 12:53:58 2015 Sync1 source=/var/www/html/ There are 0 delays Excluding: nothing. Inotify watching 849 directories 1: /var/www/html/ 2: /var/www/html/catalog/ 3: /var/www/html/catalog/controller/ 4: /var/www/html/catalog/controller/module/ 5: /var/www/html/catalog/controller/checkout/ 6: /var/www/html/catalog/controller/api/ 7: /var/www/html/catalog/controller/payment/ 8: /var/www/html/catalog/controller/tool/ 9: /var/www/html/catalog/controller/product/ --------------------- 848: /var/www/html/system/library/db/ 849: /var/www/html/system/modification/ [[email protected] ~]#