使用多台Linux服务器通过Nginx做负载均衡,根据配置的转发规则,不同的请求会被转发到其不同的服务器上进行处理,那么这个时候就存在一个问题,多台服务器上的数据如何能保持一致,比如:用户在A服务器上传了一张图片,但是B服务器上没有,如果其他用户的请求被分配到了B服务器上,那么请求就会变成404,为了避免这类问题,就需要每台服务器之间数据保持实时双向同步。
本文主要介绍使用Lsyncd工具在两台服务器上做实时双向同步。
注意:Lsyncd存在数据被替换风险,操作前请做好数据备份!
Lsyncd 是一个简单高效的文件同步工具,通过lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。
首先在两台服务器上分别安装 Lsyncd:
安装lsyncd依赖包:
yuminstall lua lua-devel pkgconfig gcc asciidoc
安装lsyncd rpm资源,并安装lsyncd:
rpm -iUvh http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-9.noarch.rpm
yuminstall lsyncd
复制lsyncd配置文件:
cp /usr/share/doc/lsyncd-2.2.2/examples/lrsync.lua/etc/lsyncd.conf