People looking to create a load balanced web server solution often ask, how can they keep their web servers in sync with each other? There are many ways to go about this: NFS, lsync, rsync, etc. This guide will discuss using Lsyncd to keep their slave web servers in sync every 20 seconds.
Taken directly from the vendors website, Lsyncd watches a local directory trees event monitor interface (inotify or fsevents). It aggregates and combines events for a few seconds and then spawns one (or more) process(es) to synchronize the changes. By default this is rsync. Lsyncd is thus a light-weight live mirror solution that is comparatively easy to install not requiring new filesystems or blockdevices and does not hamper local filesystem performance.
This article will be broken down by the following operating systems, as each has some minor catches. Simply scroll down to your desired operating system listed below:
CentOS 6 – How To Install And Configure Lsyncd
CentOS 7 – How To Install And Configure Lsyncd
Ubuntu 12.04 – How To Install And Configure Lsyncd
Ubuntu 14.04 – How To Install And Configure Lsyncd
CentOS 6 – How To Install And Configure Lsyncd
Install Lsyncd via yum. Please note, this will automatically setup:
– Lsyncd 2.1.5
– /etc/logrotate.d/lsyncd
– /etc/init.d/lsyncd
– Provide a place holder for /etc/lsyncd.conf
Install it by running:
yum -y install lsyncd chkconfig lsyncd on
Now setup the lsyncd configuration by:
vim /etc/lsyncd.conf settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd-status.log", statusInterval = 20 } servers = { "x.x.x.x", "x.x.x.x", "x.x.x.x" } for _, server in ipairs(servers) do sync { default.rsyncssh, source="/var/www/", host=server, targetdir="/var/www/", excludeFrom="/etc/lsyncd-excludes.txt", rsync = { compress = true, archive = true, verbose = true, rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" } } end
Create the place holder for lsyncd-excludes.txt
touch /etc/lsyncd-excludes.txt
Finally, start the service
chkconfig lsyncd on service lsyncd start
CentOS 7 – How To Install And Configure Lsyncd
Install Lsyncd via yum. Please note, this will automatically setup
– Lsyncd 2.1.5
– /etc/logrotate.d/lsyncd
– /etc/init.d/lsyncd
– Provide a place holder for /etc/lsyncd.conf
Install it by running
yum -y install lsyncd systemctl enable lsyncd.service
Now setup the lsyncd configuration by:
vim /etc/lsyncd.conf settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd-status.log", statusInterval = 20 } servers = { "x.x.x.x", "x.x.x.x", "x.x.x.x" } for _, server in ipairs(servers) do sync { default.rsyncssh, source="/var/www/", host=server, targetdir="/var/www/", excludeFrom="/etc/lsyncd-excludes.txt", rsync = { compress = true, archive = true, verbose = true, rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" } } end
Create the place holder for lsyncd-excludes.txt and /var/log/lsyncd:
touch /etc/lsyncd-excludes.txt mkdir /var/log/lsyncd
Finally, start the service
systemctl start lsyncd.service
Ubuntu 12.04 – How To Install Lsyncd
Install Lsyncd via apt. Please note, this will automatically setup
– Lsyncd 2.0.4
– /etc/init.d/lsyncd
But it will not setup:
– /etc/logrotate.d/lsyncd
– /etc/lsyncd/lsyncd.conf.lua
Install it by running:
apt-get update apt-get install lsyncd
Now setup the lsyncd configuration by:
mkdir /etc/lsyncd vim /etc/lsyncd/lsyncd.conf.lua settings = { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd-status.log", statusInterval = 20 } servers = { "x.x.x.x", "x.x.x.x", "x.x.x.x" } for _, server in ipairs(servers) do sync { default.rsync, source="/var/www/", target=server..":/var/www/", excludeFrom="/etc/lsyncd/lsyncd-excludes.txt", rsyncOps={"-e", "/usr/bin/ssh -o StrictHostKeyChecking=no", "-avz"} } end
Create the place holder for lsyncd-excludes.txt and logs directory
touch /etc/lsyncd/lsyncd-excludes.txt mkdir /var/log/lsyncd
Setup log rotate script
vim /etc/logrotate.d/lsyncd /var/log/lsyncd/*log { missingok notifempty sharedscripts postrotate if [ -f /var/lock/lsyncd ]; then /usr/sbin/service lsyncd restart > /dev/null 2>/dev/null || true fi endscript }
Finally, start the service
service lsyncd start
Ubuntu 14.04 and 16.04 – How To Install Lsyncd
Install Lsyncd via apt. Please note, this will automatically setup
– Lsyncd 2.1.5
– /etc/init.d/lsyncd
But it will not setup:
– /etc/logrotate.d/lsyncd
– /etc/lsyncd/lsyncd.conf.lua
Install it by running
apt-get update apt-get install lsyncd
Now setup the lsyncd configuration by:
mkdir /etc/lsyncd vim /etc/lsyncd/lsyncd.conf.lua settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd-status.log", statusInterval = 20 } servers = { "x.x.x.x", "x.x.x.x", "x.x.x.x" } for _, server in ipairs(servers) do sync { default.rsyncssh, source="/var/www/", host=server, targetdir="/var/www/", excludeFrom="/etc/lsyncd/lsyncd-excludes.txt", rsync = { compress = true, archive = true, verbose = true, rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no" } } end
Create the place holder for lsyncd-excludes.txt and logs directory
touch /etc/lsyncd/lsyncd-excludes.txt mkdir /var/log/lsyncd
Setup log rotate script
vim /etc/logrotate.d/lsyncd /var/log/lsyncd/*log { missingok notifempty sharedscripts postrotate if [ -f /var/lock/lsyncd ]; then /usr/sbin/service lsyncd restart > /dev/null 2>/dev/null || true fi endscript }
Finally, start the service
service lsyncd start
Note: On Ubuntu 16.04, if ‘service lsyncd start’ does not start daemon, then manually start lsyncd, which will allow systemd to work with it from here on out by running:
/usr/bin/lsyncd /etc/lsyncd/lsyncd.conf.lua service lsyncd stop service lsyncd start