lsync 负载实现代码双向同步

参考文件: https://www.zyku.net/centos/1713.html

检查错误命令: lsyncd -pidfile /tmp/lsyncd.pid  /etc/lsyncd.conf

注意事项,配置不支持#注释,配置不支持#注释,配置不支持#注释 重要的事情说三遍浪费我半天时间

 

使用多台Linux服务器通过Nginx做负载均衡,根据配置的转发规则,不同的请求会被转发到其不同的服务器上进行处理,那么这个时候就存在一个问题,多台服务器上的数据如何能保持一致,比如:用户在A服务器上传了一张图片,但是B服务器上没有,如果其他用户的请求被分配到了B服务器上,那么请求就会变成404,为了避免这类问题,就需要每台服务器之间数据保持实时双向同步。

本文主要介绍使用Lsyncd工具在两台服务器上做实时双向同步。

注意:Lsyncd存在数据被替换风险,操作前请做好数据备份!

Lsyncd 是一个简单高效的文件同步工具,通过lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。

首先在两台服务器上分别安装 Lsyncd:

安装lsyncd依赖包:

yum  install  lua lua-devel pkgconfig gcc asciidoc

,安装lsyncd:

 
yum  install  lsyncd

复制lsyncd配置文件:

cp  /usr/share/doc/lsyncd-2 .2.2 /examples/lrsync .lua  /etc/lsyncd .conf

CentOS 7搭建lsyncd实现两台服务器文件实时双向同步可用于负载均衡

查看lsyncd版本:

CentOS 7搭建lsyncd实现两台服务器文件实时双向同步可用于负载均衡

到这一步lsyncd已经安装好了。

下面进行两台服务器之间做免密登录设置,互相可以免密登录:

分别在两台服务器执行下面命令,生成key(以下操作两台服务器都要同时进行):

ssh -keygen            #默认全部回车

然后执行下面命令:

ssh -copy- id  ip        #这里的ip地址为想要连接的那台服务器ip地址,并非本机ip

命令执行后输入“yes”,然后输入密码,即可连接到第二台服务器,如下图所示:

CentOS 7搭建lsyncd实现两台服务器文件实时双向同步可用于负载均衡

然后执行下面命令测试一下从这台服务器登录到另外一台服务器,不输入密码是否能成功:

ssh  ip

到这里我们就完成了两台服务器之间互相无密码登录。

配置lsyncd:

在A服务器根目录创建创建一个目录“download”,B服务器创建一个目录“public”,进行演示这两个目录互相实时同步。

编辑lsyncd配置文件:

vim  /etc/lsyncd .conf

在A服务器配置文件中添加如下配置信息(B服务器同样需要添加,修改下源目录和远程目录即可):

----
-- User configuration  file  for  lsyncd.
--
-- Simple example  for  default  rsync .
--
settings {
     logfile      = "/var/log/lsyncd.log" ,
     statusFile   = "/tmp/lsyncd.stat" ,
     inotifyMode  =  "CloseWrite or Modify" ,
     maxProcesses = 5,
     maxDelays = 1,
     -- nodaemon = true ,
}
 
sync  {
     default. rsync ,
     source  "/download" ,                       
     target =  "root@116.85.xx.xx:/public" ,       
     -- excludeFrom =  "/etc/rsyncd.d/rsync_exclude.lst" ,
rsync  = {
     binary =  "/usr/bin/rsync" ,
     archive =  true ,
     compress =  true ,
     verbose =  true ,
     }  
}

启动lsyncd服务,并设置开机启动:

systemctl start lsyncd

启动完成后查看lsyncd状态,确保lsyncd启动成功:

systemctl status lsyncd

设置开机启动:

systemctl  enable  lsyncd

启动成功后,我们可以测试一下看看效果,如下图所示:

CentOS 7搭建lsyncd实现两台服务器文件实时双向同步可用于负载均衡

 

假如要排除某个文件或者文件夹可以这样配置

 

转载于:https://www.cnblogs.com/wujf-myblog/p/10170222.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值