lsyncd搭建测试

lsyncd实时同步搭建

#########################源码编译安装##############################

从源码编译安装可以使用最新版的lsyncd程序,但必须要相应的依赖库文件和编译工具:yum install lua lua-devel asciidoc cmake

从github上下载lsyncd-XXXXXX.zip 的版本使用的是 cmake 编译工具,无法./configure

下载地址:https://github.com/axkibe/lsyncd.git

安装:

unzip lsyncd-release-2.2.2.zip

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd-2.2.2

make && make install

异常问题:

-- The C compiler identification is GNU 4.4.7

-- The CXX compiler identification is unknown

-- Check for working C compiler: /usr/bin/cc

-- Check for working C compiler: /usr/bin/cc -- works

-- Detecting C compiler ABI info

-- Detecting C compiler ABI info - done

CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

-- Found Lua: /usr/lib64/liblua.so;/usr/lib64/libm.so (found version "5.1.4")

-- Configuring incomplete, errors occurred!

See also "/tmp/lsyncd-release-2.2.2/CMakeFiles/CMakeOutput.log".

See also "/tmp/lsyncd-release-2.2.2/CMakeFiles/CMakeError.log".

解决方案:

yum  -y install gcc-c++

设置环境变量:ln -s  /usr/local/lsyncd-2.2.2/bin/lsyncd  /usr/local/bin/lsyncd

###################################配置文件与参数###############################

配置文件:

cd /usr/local/lsyncd-2.2.2

mkdir etc logs

这里我们创建2个目录文件方便存放配置文件以及日志文件

vim lsyncd.conf

settings

里面是全局设置,--开头表示注释,下面是几个常用选项说明:

settings {

logfile      ="/usr/local/lsyncd-2.2.2/var/lsyncd.log",

statusFile   ="/usr/local/lsyncd-2.2.2/var/lsyncd.status",

inotifyMode  = "CloseWrite",

maxProcesses = 7,

-- nodaemon =true,

}

sync

里面是定义同步参数,可以继续使用maxDelays来重写settings的全局变量。一般第一个参数指定lsyncd以什么模式运行:rsync、rsyncssh、direct三种模式:

sync {

default.rsync,

source    = "/opt/data",

target    = "[email protected]:/opt/data",

maxDelays = 5,

delay = 30,

delete = true,

-- init = true,

rsync     = {

binary = "/usr/bin/rsync",

archive = true,

compress = true,

-- bwlimit   = 2000

-- rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"

}

}

settings

logfile 定义日志文件

stausFile 定义状态文件

inotifyMode 指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify

maxProcesses 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程

nodaemon=true 表示不启用守护模式,默认

sync

default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;

default.direct :本地目录间同步,使用cp、rm等命令完成差异文件备份;

default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证

source 同步的源目录,使用绝对路径。

target 定义目的地址.

对应不同的模式有几种写法:

/opt/data :本地目录同步,可用于direct和rsync模式

192.168.166.145:/opt/data :同步到远程服务器目录,可用于rsync和rsyncssh模式,拼接的命令类似于/usr/bin/rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGET,剩下的就是rsync的内容了,比如指定username,免密码同步

192.168.166.145::module :同步到远程服务器目录,用于rsync模式

init 这是一个优化选项,当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true

delete 为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running值

true:默认。Lsyncd将在目标上删除任何不在源中的内容。在启动时和正常操作中被删除的内容。

false:Lsyncd不会删除目标上的任何文件。不在启动或正常运行。(可能覆盖)

startup:当启动时,Lsyncd将删除目标上的文件,但不会在正常操作中删除。

running:启动时,Lsyncd不会删除目标上的文件,但会删除在正常操作期间删除的文件。

excludeFrom 排除选项,后面指定排除的列表文件,如excludeFrom = "/etc/lsyncd.exclude",如果是简单的排除,可以使用exclude = LIST

rsync

delete和exclude本来都是rsync的选项,上面是配置在sync中的,我想这样做的原因是为了减少rsync的开销

bwlimit 限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)

compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false

perms 默认保留文件权限

lsyncd.conf可以有多个sync,各自的source,各自的target,各自的模式,互不影响。

启动:lsyncd -log Exec /usr/local/lsyncd-2.2.2/etc/lsyncd.conf

################################lsyncd.conf其它模式示例#################################

测试:根据需要 我们只测试了远程主机同步的方法

源地址:192.168.166.150

同步目的地址:192.168.166.145

1、rsync + rsyncd daemon

sync {

default.rsync,

source    = "/opt/data",

target    = "[email protected]:/opt/data",

delete="running",

delay = 30,

-- init = false,

rsync     = {

binary = "/usr/bin/rsync",

archive = true,

compress = true,

verbose   = true,

_extra    = {"--bwlimit=20000"}

}

}

这个方式要求像rsync一样配置rsyncd服务端

2、rsync+ssh shell

sync {

default.rsync,

source    = "/opt/data",

target    = "[email protected]:/opt/data",

maxDelays = 5,

delay = 30,

delete = true,

-- init = true,

rsync     = {

binary = "/usr/bin/rsync",

archive = true,

compress = true,

-- bwlimit   = 20000

-- rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"

}

}

3、rsync+rsyncssh

sync {

default.rsyncssh,

source    = "/opt/data",

host      = "192.168.166.145",

targetdir = "/opt/data",

-- excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst",

maxDelays = 5,

delay = 0,

-- init = true,

rsync    = {

binary = "/usr/bin/rsync",

archive = true,

compress = true,

verbose   = true,

_extra = {"--bwlimit=20000"},

},

ssh      = {

port  =  22

}

}

2和3配置ssh方式同步,达到的效果相同

#################################cpu和load测试结果#######################################

经过测试,三种模式都是基于Rsync的原生态模型方式进行同步,不同的区别在于第一种是基于rsync服务,后两种是基于rsync和ssh服务,三种同步方式都是通过hash值的校验,只传送同步差异文件。

服务器cpu性能:8核8G

在同步40G大小的文件(8000个文件)的测试中,(三种模式)cpu性能一直保持在:

source端

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

30781 root      20   0  162m  34m 1008 R 100.0  0.4   0:13.85 rsync

30659 root      20   0  105m 5980 3576 S 28.2  0.1   1:08.01 sshd

load average: 1.00, 0.55, 0.35

target端

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

27268 root      20   0  103m 6528 3140 S 22.6  0.1   0:16.38 sshd

27277 root      20   0  162m  52m  300 R 20.6  0.7   0:14.09 rsync

load average: 0.13, 0.07, 0.02

################################iptables断网测试#####################################

iptables断网测试:

主要测试在同步过程中,网络突然中断后,是否能够继续同步,以及中断过程同步的文件在恢复后MD5校验是否一致

首先在目的同步地址加入一条iptables策略

-A INPUT -s 192.168.166.150/32 -p tcp -m tcp --dport 22 -j REJECT --reject-with icmp-port-unreachable

目的是为了在启动iptabels时,我们的ssh服务断开,从而达到中断网络同步的过程

[[email protected] data]# md5sum SELF_APK/18/55/51/515518.apk

d26dcdbf656cf329b8e81ea5af7c7af5  SELF_APK/18/55/51/515518.apk

断开前 我们校验了源文件的MD5码

目的地址开启iptables

[[email protected] data]# service iptables start

iptables: Applying firewall rules:                         [  OK  ]

目的同步地址已经不在同步源地址的文件,这个在日志中也能看的到

[[email protected] data]# md5sum SELF_APK/18/55/51/515518.apk

md5sum: SELF_APK/18/55/51/515518.apk: No such file or directory

目的地址关闭iptables

[[email protected] data]# service iptables stop

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Unloading modules:                               [  OK  ]

同步传输继续,完成后效验MD5码

[[email protected] data]# md5sum SELF_APK/18/55/51/515518.apk

d26dcdbf656cf329b8e81ea5af7c7af5  SELF_APK/18/55/51/515518.apk

最后我们发现,在网络中断前,我们的文件是不在进行传输同步,当网络恢复正常时,传输继续,效验的MD5也一致。

###################################ssh同步免key##################################

远端被同步的服务器上开启ssh无密码登录,请注意用户身份

在服务器之间使用lsyncdssh模式进行同步的时候,注意要先将服务器之间的id_rsa拷贝至lsyncd服务器上。

TO-DO:

其它同步工具:csync2,clsync,btsync,drdb

参考文献:https://axkibe.github.io/lsyncd/manual/config/layer4/

http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/

时间: 2024-07-31 15:19:40

lsyncd搭建测试的相关文章

Nginx配置多个基于域名的虚拟主机+实验环境搭建+测试

标签:Linux 域名 Nginx 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xpleaf.blog.51cto.com/9315560/1901284 0.说明 使用Nginx可以配置基于域名的虚拟主机.基于端口的虚拟主机和基于端口的虚拟主机,比较常用的是基于域名的虚拟主机,这里要做的配置是基于域名的虚拟主机,并且是配置多个基于域名的虚拟主机. 关于Nginx配置文件的说明可以参考官方文档,同时也可以参考老男孩老师的书

搭建测试环境

去搭建测试环境是软件测试实施的一个重要阶段,测试环境适合与否会严重影响测试结果的真实性和正确性.测试环境包括硬件环境和软件环境,硬件环境指测试必需的服务器.客户端.网络连接设备,以及打印机/扫描仪等辅助硬件设备所构成的环境;软件环境指被测软件运行时的操作系统.数据库及其他应用软件构成的环境 一 确定测试环境的组成: 1.所需要的计算机的数量,以及对每台计算机的硬件配置要求,包括CPU的速度.内存和硬盘的容量.网卡所支持的速度.打印机的型号等; 2. 部署被测应用的服务器所必需的操作系统.数据库管

用docker搭建测试环境--docker的基本操作

上一篇文章中最后执行了docker pull centos的指令,经过一段时间的等待,会从hub.docker.com上下载docker官方最新的centos的images,接下来熟悉一下docker的一些基本操作.1.查看本地的imagesdocker images 2.从hub.docker.com拉取响应的imagesdocker pull images 3.运行指定的images,并在images里边执行command命令docker run images command 4.查看当前运

搭建测试环境_连不上网络时处理总结

测试过程中,经常需要自己搭建测试环境,给一个路由器,一台电脑,要求自己给搭建一个局域网,在系统上安装软件进行各项测试,经常会遇到搭建好环境后,却连不上网络的问题,特针对以前遇到过后的解决方法进行如下总结: 第一部分:实体机连不上网络 1. 表现:ping  +域名  不通,提示Request Timed Out.说明对方没有接受到发过去的数据,ping命令所发出的数据包经过了路由器,并经由路由表达到了目的地,但由于某些原因提示Request Timed Out.有可能是网络出现的故障. A. 对

什么是测试环境?如何搭建测试环境?

测试进行软件测试的之前,需要搭建好测试环境.那什么是测试环境呢?     简单的说就是软件运行的平台,即软件.硬件和网络三种环境的合集,也就是说:测试环境=软件+硬件+网络     硬件:包括PC机.笔记本.服务器.各种终端等.例如要测试photoshop软件,是要在PC机上测,还是笔记本上测?是在cpu为酷睿的计算机上测,还是要在炫龙的cpu上测?不同的硬件环境photoshop的处理速度是不一样的.     软件:这里主要指的是软件运行的操作系统.例如测试photoshop,是指window

腾讯云安装openvz,快速搭建测试环境

CSDN送了腾讯云的测试资格,准备拿来作为cici的软件发布首页,想在上面做个demo,无奈没有设备环境,于是想要用openvz来虚拟一些vps: 第一步:选择腾讯云的os模板,centos6.3 第二步:安装openvz           安装方法参见:http://openvz.org/Quick_installation 第三步:下载os模板,创建4个vps,分别是ubutnu centos6.5 suse centos7.0 第四步:开启vps 这里发现vps上不了网,估计是腾讯对na

Hadoop 2.x伪分布式环境搭建测试

Hadoop 2.x伪分布式环境搭建测试 标签(空格分隔): hadoop hadoop,spark,kafka交流群:459898801 1,搭建hadoop所需环境 卸载open JDK rpm -qa |grep java rpm -e –nodeps [java] 1.1,在/opt/目录下创建四个目录: modules/ software/ datas/ tools/ 解压hadoop-2.5.0及jdk-7u67-linux-x64.tar.gz至modules目录下. $tar -

MFC程序使用GTest搭建测试框架

一.起源 最近对单元测试比较感兴趣,之后就上网搜了一些测试的框架,C++项目使用的测试框架基本上都使用的GoogleTest,之后就开启了gtest的学习之路. 主要是根据<玩转Google开源C++单元测试框架Google Test系列(gtest)>这个系列的博客来学习的. 因为平时的项目主要是MFC项目,就想着给MFC程序搭建一个测试框架出来,上网搜主要都是<gtest测试MFC项目>类似的. 跟着网上的教程走了很多遍,都没有成功,网上又没有更多的相关资料,就放弃在MFC项目

KALI GSM Sniffer 搭建测试(本人亲自搭建测试)

声明 本文仅为技术测试和探讨,请勿用于非法用途. 一.测试硬件和软件要求 1.摩托罗拉c118手机一部 2.2.5mm 3极耳机线一根 3.USB转TTL模块一个 4.笔记本一个(kali linux 1.0.7)64位 建立Arm码的编译环境 二.建立Arm代码的编译环境 1.打开kali linux1.0.7,用1.0.9版本也可以.首先我们需要安装一下我们必要的编译环境.因为Osmocom-bb嗅探平台是需要自己在本地编译的.所以编译环境一定要先整好,避免编译失败.注意,这里使用的系统是k