背景:因自研日志系统改造,为容灾需要,需将主日志机的日志文件完整备份到备机,而公司内部并没有相应的系统。经过调研,我们的应用场景很简单,logstash也是可以满足我们的需求,但太重了点,后运维推荐使用lsyncd,故将使用中遇到的坑整理处理
1. Lsyncd是啥lsyncd会密切监测本地服务器上的参照目录,当发现目录下有文件或目录变更后,立刻通知远程服务器,并通过rsync 或rsync+ssh方式实现文件同步。这样做的好处就是,你可以利用Lsyncd搭建一个VPS同步镜像,应用场景例如CDN镜像、网站数据备份、网站搬家等等
2. 安装Lsyncd我们的服务器比较简单,基于centos的yum安装即可
yum install lsyncd之后修改配置文件/etc/lsyncd.conf,对应的参数说明可以参考官方文档 具体如下:
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", inotifyMode = "CloseWrite", maxProcesses = 1000, maxDelays = 200, } sync { default.rsync, source = "/tmp/logs/", target = "user00@xxx.xxx.xxx.xxx::backup", delay = 100, rsync = { binary = "/usr/bin/rsync", password_file = "/etc/rsyncd.passwd", archive = true, compress = false, verbose = true } }之后运行测试
lsyncd -log Exec /etc/lsyncd.conf但是在使用的过程中遇到个问题
Error: error preparing /etc/lsyncd.conf: Parameter "rsync.password_file" unknown. (if this is not a typo add it to checkgauge)后来google告诉我这是一个bug,开发者说2.1.2已经修复,但是github上有人反馈2.1.4版本还是有问题,而我们的TLinux1.2默认用yum安装的话就是2.1.4的,于是自己卸载升级为2.1.5,后面附上编译安装流程,问题解决。
之后新建密码文件/etc/rsyncd.passwd
test1234执行如下命令进行测试
/usr/bin/rsync --delete -gvsolptD --password-file=/etc/rsyncd.passwd-r /tmp/logs/user00@::backup/设置文件的owner为root,并将权限设置为600,否则会提示
@ERROR: chroot failed rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]3. Rsync client备机启动拿我们正常的机器应该都默认安装了rsync,只需要启动一个监听服务即可。
修改/etc/rsyncd.conf文件
uid=root gid=root use chroot=yes max connections=100 pid file=/var/run/rsyncd.pid lock file=/var/run/rsync.lock log file=/var/log/rsyncd.log timeout=600 port=873 secrets file=/etc/.rsyncd.secrets [app] path=//app comment=rsync files read only=no list=yes auth users=user00 [backup] path=/tmp/backup read only=no list=yes auth users=user00添加密码文件/etc/.rsyncd.secrets
user00:test1234 user01:test12345设置文件的owner为root,并将权限设置为600
执行启动,启动address为备机的ip,即执行该命令的机器ip
/usr/bin/rsync --address= --config=/etc/rsyncd.conf --daemon最后启动
service lsyncd start修改文件可以看到日志文件/var/log/lsyncd/lsyncd.log
日志详情附录:Lsyncd 2.1.5编译安装yum install lua-devel tar -xzf lsyncd-2.1.5.tar.gz cd lsyncd-2.1.5/ ./configure --prefix=/usr/bin make && make installlsyncd依赖lua,如果没有lua-devel,会有如下提示
configure: error: Need a Lua toolchain with matching versions ('lua' library and 'lua' and 'luac' programs)添加/etc/lsyncd.conf文件
settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", inotifyMode = "CloseWrite", maxProcesses = 1000, maxDelays = 200, } sync { default.rsync, source = "/tmp/logs/", target = "user00@xxx.xxx.xxx.xxx::backup", delay = 100, rsync = { binary = "/usr/bin/rsync", password_file = "/etc/rsyncd.passwd", archive = true, compress = false, verbose = true } }添加启动service文件
#!/bin/bash # # chkconfig: - 85 15 # description: Lightweight inotify based sync daemon # # processname: lsyncd # config: /etc/lsyncd.conf # config: /etc/sysconfig/lsyncd # pidfile: /var/run/lsyncd.pid # Source function library . /etc/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 LSYNCD_OPTIONS="-pidfile /var/run/lsyncd.pid /etc/lsyncd.conf" if [ -e /etc/sysconfig/lsyncd ]; then . /etc/sysconfig/lsyncd fi RETVAL=0 prog="lsyncd" thelock=/var/lock/subsys/lsyncd start() { [ -f /etc/lsyncd.conf ] || exit 6 echo -n $"Starting $prog: " if [ $UID -ne 0 ]; then RETVAL=1 failure else daemon /usr/bin/lsyncd $LSYNCD_OPTIONS RETVAL=$? [ $RETVAL -eq 0 ] && touch $thelock fi; echo return $RETVAL } stop() { echo -n $"Stopping $prog: " if [ $UID -ne 0 ]; then RETVAL=1 failure else killproc lsyncd RETVAL=$? [ $RETVAL -eq 0 ] && rm -f $thelock fi; echo return $RETVAL } reload(){ echo -n $"Reloading $prog: " killproc lsyncd -HUP RETVAL=$? echo return $RETVAL } restart(){ stop start } condrestart(){ [ -e $thelock ] && restart return 0 } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; condrestart) condrestart ;; status) status lsyncd RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" RETVAL=1 esac exit $RETVAL ---来自腾讯云社区的---用户2998798
微信扫一扫打赏
支付宝扫一扫打赏