做网站哪个公司最,专业的餐饮加盟网站建设,有什么免费建站网站,网站推广的常用方法有哪些?在分布式应用中会遇到一个问题#xff0c;就是多个服务器间的文件如何能始终保持一致。一种经典的办法是将需要保持一致的文件存储在NFS上#xff0c;这种方法虽然简单方便但却将本来多点的应用在文件存储上又变成了单点#xff0c;这违背了分布式应用部署的初衷。为了保留多… 在分布式应用中会遇到一个问题就是多个服务器间的文件如何能始终保持一致。一种经典的办法是将需要保持一致的文件存储在NFS上这种方法虽然简单方便但却将本来多点的应用在文件存储上又变成了单点这违背了分布式应用部署的初衷。为了保留多点特性文件仍然保存在各服务器上那就需要在每个服务器中保持文件的同步。服务器同步的解决方案有很多。比较流行的有inotify-toolsrsync和Openduckbill(依赖于inotify-tools)。现在介绍一个解决方案sersync相对上面两个项目有以下优点sersync是使用c编写而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤所以在结合rsync同步的时候节省了运行时耗和网络资源。因此更快。sersync配置起来很简单其中bin目录下已经有基本上静态编译的2进制文件配合bin目录下的xml配置文件直接使用即可。使用多线程进行同步尤其在同步较大文件时能够保证多个服务器实时保持同步状态。有出错处理机制通过失败队列对出错的文件重新同步如果仍旧失败则按设定时长对同步失败的文件重新同步。自带crontab功能只需在xml配置文件中开启即可按要求隔一段时间整体同步一次。无需再额外配置crontab功能。能够实现socket与http插件扩展。sersync2完全安装配置说明一 —-基本功能使用当前版本的sersync依赖于rsync进行同步。如下图所示在同步主服务器上开启sersync将监控路径中的文件同步到目标服务器因此需要在主服务器配置sersync在同步目标服务器配置rsync。对于rsync配置在google上可以找到很多资料以下只是一些必要的配置和使用说明仅供参考请根据您的实际情况修改。如图所示需要在同步主服务器上配置sersync在同步目标服务器配置rsync并在目标服务器开启rsync守候进程这样在主服务器产生的文 件就会被sersync实时同步到多个目标服务器。在centos系统下默认已经安装了rsync只需进行配置并开启rsync守候进程即可。配置同步目标服务器rsync在多台目标服务器上配置如下vi /etc/rsyncd.confuidroot
gidroot
max connections36000
use chrootno
log file/var/log/rsyncd.log
pid file/var/run/rsyncd.pid
lock file/var/run/rsyncd.lock[tongbu1]
path/opt/tongbu1
comment xoyo video files
ignore errors yes
read only no
hosts allow 192.168.0.100/24
hosts deny *上面配置文件表明允许主服务器假设ip为192.168.0.100访问rsync同步模块名为[tongbu1]将同步过来的文件放入path指定的目录/opt/tongbu1。如果有多台从服务器则每一台都需要进行类似的rsync配置上面的uid gid要换成您服务器的相应用户主意rysnc要有对被同步目录的操作权限。配置好之后使用如下命令开启rsync守护进程:rsync --daemon在主服务器上安装配置sresync在google code下载sersync的可执行文件版本里面有配置文件与可执行文件这里用sersync2.5进行说明新版本配置形式类似。1.在主服务器上开启sersync守护进程,使sersync在后台运行开启实时同步。./sersync -d过程如下:[rootlocalhost GNU-Linux-x86]# lsconfxml.xml sersync2[rootlocalhost GNU-Linux-x86]# ./sersync2 -dset the system paramexecuteecho 50000000 /proc/sys/fs/inotify/max_user_watchesexecuteecho 327679 /proc/sys/fs/inotify/max_queued_eventsparse the command paramdaemon thread num: 10parse xml config filehost ip : localhost host port: 8008config xml parse successplease set /etc/rsyncd.conf max connections0 Manuallysersync working thread 12 1(primary thread) 1(fail retry thread) 10(daemon sub threads)please according your cpu use -n param to adjust the cpu raterun the sersync:watch path is: /opt/tongbu 表明sersync已经开启可以在本地监控路径下建立文件查看远程是否同步成功。 2.在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步./sersync -r如果需要将sersync运行前已经存在的所有文件或目录全部同步到远程要以-r参数运行sersync将本地与远程整体同步一次。如果设置了过滤器即在xml文件中filter为true则暂时不能使用-r参数进行整体同步。-r参数将会无效。3.查看启动参数帮助./sersync --help4.指定配置文件./sersync -o XXXX.xml对于sersync使用可执行文件目录下的默认配置文件confxml.xml如果需要使用另一个配置文件可以使用o参数指定其它配置文件。5.指定默认的线程池的线程总数./sersync -n num例如 ./sersync -n 5 则指定线程总数为5如果不指定默认启动线程池数量是10如果cpu使用过高可以通过这个参数调低如果机器配置较高可以用n跳高线程总数。6.不进行同步只运行插件./sersync -m pluginName例如./sersync -m command则在监控到文件事件后不对远程目标服务器进行同步而是直接运行command插件。7.多个参数可以配合使用./sersync -n 8 -o abc.xml -r -d表示设置线程池工作线程为8个指定abc.xml作为配置文件在实时监控前作一次整体同步以守护进程方式在后台运行。8.通常情况下对本地到远程整体同步一遍后在后台运行实时同步。./sersync -dsersync2 完全安装配置说明二 —-可选功能与xml高级配置XML文件说明sersync可选功能是通过xml配置文件来实现的基本配置文件如下01?xmlversion1.0encodingISO-8859-1?02headversion2.503hosthostiplocalhostport8008/host04filterstartfalse05excludeexpression(.*)\.gz/exclude06excludeexpression^info/*/exclude07/filter08inotify09deletestarttrue/10createFolderstarttrue/11createFilestarttrue/12/inotify13debugstartfalse/14sersync15localpathwatch/opt/tongbu16remoteip192.168.0.104nametongbu1/17!--remote ip192.168.8.39 nametongbu/--18!--remote ip192.168.8.40 nametongbu/--19/localpath20rsync21commonParamsparams-artuz/22authstartfalseusersrootpasswordfile/etc/rsync.pas/23userDefinedPortstartfalseport874/!-- port874 --24timeoutstartfalsetime100/!-- timeout100 --25sshstartfalse/26/rsync27failLogpath/tmp/rsync_fail_log.shtimeToExecute60/!--default every 60min execute once--28crontabstartfalseschedule600!--600mins--29crontabfilterstartfalse30excludeexpression*.gz/exclude31excludeexpressioninfo/*/exclude32/crontabfilter33/crontab34pluginstartfalsenamecommand/35/sersync下面做逐行的进行解释说明host hostiplocalhost port8008/hosthostip与port是针对插件的保留字段对于同步功能没有任何作用保留默认即可。filter文件过滤功能对于sersync监控的文件会默认过滤系统的临时文件(以“.”开头以“”结尾)除了这些文件外可以自定义其他需要过滤的文件。filter starttrue
exclude expression(.*)\.gz/exclude
exclude expression^info/*/exclude
/filter将start设置为 true在exclude标签中填写正则表达式默认给出两个例子分别是过滤以”.gz”结尾的文件与过滤监控目录下的info路径监控路径/info /*可以根据需要添加但开启的时候自己测试一下正则表达式如果出现错误控制台会有提示。相比较使用rsync 的exclude功能被过滤的路径不会加入监控大大减少rsync的通讯量。inotify监控参数设定优化对于inotify监控参数可以进行设置根据您项目的特点优化srsync。inotify
delete starttrue/
createFolder starttrue/
createFile starttrue/
/inotify对于大多数应用可以尝试把createFile监控文件事件选项设置为false来提高性能减少 rsync通讯。因为拷贝文件到监控目录会产生create事件与close_write事件所以如果关闭create事件只监控文件拷贝结束时的事 件close_write同样可以实现文件完整同步。注意强将createFolder保持为true如果将createFolder设为false则不会对产生的目录进行监控该目录下的子文件与子目录也不会被监控。所以除非特殊需要请开启。默认情况下对创建文件目录事件与删除文件目录事件都进行监控如果项目中不需要删除远程目标服务器的文件目录则可以将delete 参数设置为false则不对删除事件进行监控。Debug开启debug startfalse/设置为true开启debug模式会在sersync正在运行的控制台打印inotify事件与rsync同步命令。XFS文件系统fileSystem xfsfalse/对于xfs文件系统的用户需要将这个选项开启才能使sersync正常工作.文件监控与远程同步设置localpath watch/opt/tongbu
remote ip192.168.0.104 nametongbu1/
!--remote ip192.168.8.39 nametongbu/--
!--remote ip192.168.8.40 nametongbu/--
/localpath详见sersync2 完全安装配置说明一 —-基本功能使用Rsync参数配置rsync
commonParams params-artuz/
auth startfalse usersroot passwordfile/etc/rsync.pas/
userDefinedPort startfalse port874/!-- port874 --
timeout startfalse time100/!-- timeout100 --
ssh startfalse/
/rsynccommonParams可以用户自定义rsync参数默认是-artuzauth start”false” 设置为true的时候使用rsync的认证模式传送需要配置user与passwrodfile(–password-file/etc/rsync.pas)来使用。userDefinedPort 当远程同步目标服务器的rsync端口不是默认端口的时候使用(–port874)。timeout设置rsync的timeout时间–timeout100。ssh 使用rsync e ssh的方式进行传输。失败日志脚步配置failLog path/tmp/rsync_fail_log.sh timeToExecute60/对于失败的传输会进行重新传送再次失败就会写入rsync_fail_log然后每隔一段时间timeToExecute进行设置执行该脚本再次重新传送然后清空该脚本。可以通过path来设置日志路径。Crontab定期整体同步功能crontab startfalse schedule600!--600mins--
crontabfilter startfalse
exclude expression*.gz/exclude
exclude expressioninfo/*/exclude
/crontabfilter
/crontabcrontab可以对监控路径与远程目标主机每隔一段时间进行一次整体同步可能由于一些原因两次失败重传都失败了这个时候如果开启了crontab功 能还可以进一步保证各个服务器文件一致如果文件量比较大crontab的时间间隔要设的大一些否则可能增加通讯开销。schedule这个参数是设置crontab的时间间隔默认是600分钟如果开启了filter文件过滤功能那么crontab整体同步也需要设置过滤否则虽然实时同步的时候文件被过滤了但crontab整体同步的时候 如果不单独设置crontabfilter还会将需过滤的文件同步到远程crontab的过滤正则与filter过滤的不同也给出了两个实例分别对 应与过滤文件与目录。总之如果同时开启了filter与crontab则要开启crontab的crontabfilter并按示例设置使其与filter的过滤一一对应。插件设置plugin startfalse namecommand/当设置为true的时候将文件同步到远程服务器后会调用name参数指定的插件。详见请看插件设置。 转载于:https://blog.51cto.com/zhangshaoxiong/1307054