zoukankan      html  css  js  c++  java
  • lsyncd+rsync实现实时自动同步

    本文来自己网络

    本示例所需要的软件是:lsyncd与rsync

    一般rsync软件是通过crond这支后台进行(计划任务)来实现自动同步数据,如今已有更好的开源软件来代替使用crond了,那就是lsyncd( Live Syncing (Mirror) Daemon),它的工作原理:监视本地(rsync client)的目录,当源数据有文件或目录更新时,更新本地文件或目录到远端机器(rsync server),保持实时文件同步,但是它更新数据时需要远端rsync server运行rsync demon

    一、配置环境

    系统版本CentOS 6.5

    客户端(目标):rsync(接收同步资源服务器)

    服务端(源):lsyncd(发送资源服务器)

    clip_image001

    二、客户端安装

    1. 安装rsync

    1.1.1.yum install rsync

    默认情况下rsync已安装检查安装

    rpm qa|grep rsync

    如果没有,运行以下命令安装:

    #yum install rsync

    1.1.2.检查rsync 运行状态

    chkconfig --list rsync

    rsync off (默认为开启)

    1.1.3.在xinetd配置中打开rsync服务

    [root@node2 ~]# vi /etc/xinetd.d/rsync

    disable = no ## 默认yes 改成 no

    1.1.4.再次检查rsync状态

    chkconfig --list rsync

    rsync on(已开启服务)

    1.1.5. 确认xinetd服务开启

    [root@node2 ~]# chkconfig --level 345 xinetd on

    启动xinetd
    [root@node2 ~]# service xinetd start
    Starting xinetd: [ OK ]

    2、配置rsyncd

    2.1.编辑配置文件

    root@node2 ~]#mkdir /data/logs/sync/ -p

    root@node2 ~]# vi /etc/rsyncd.conf

    log file = /data/logs/sync/rsyncd.log

    pid file = /data/logs/sync/rsyncd.pid

    lock file = /var/run/rsync.lock

    use chroot = yes

    [www]

    path = /data/www

    hosts allow = 192.168.0.211 (服务端ip)

    uid = www

    gid = www

    read only = false

    2.2.重启服务

    service xinetd restart

    2.3确认873端口监听

    [root@node2 ~]# netstat -anp | grep 873
    tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3169/xinetd

    2.4建立资源同步目录

    mkdir /data/www –p

    chown www:www /data/www

    三、服务器端安装

    1、安装lsyncd:

    1.1.安装lsyncd

    需要lua支持。

    安装服务:lsyncd(注意:阿里云yum源epel有该服务,没有的话需要安装(yum -y install epel-release)

    yum install lua lsyncd

    1.2建立配置文件lsyncd.conf

    [root@node1~]#mkdir /data/logs/sync/ -p

    [root@node1~]# vi /etc/lsyncd.conf
    settings {

    logfile = "/data/logs/sync/lsyncd.log",

    statusFile = "/data/logs/sync/lsyncd.stat",

    statusInterval =1,

    }

    sync{

    default.rsync,

    source="/data/www/",

    target="192.168.0.212::www",

    exclude = { ".*", "*.log" },

    excludeFrom="/etc/rsync_exclude.lst",

    init=false,

    rsync = {

    binary = "/usr/bin/rsync",

    archive = true,

    compress = true,

    verbose = true

    }

    }

    说明:

    /data/www/ #要实时同步的目录
    192.168.0.212 #要实时同步到的远端机器即接收服务器地址。
    www #对应server端192.168.0.211的rsync的tag

    exclude = { ".*", "*.log" } #排除不需要同步的文件
    excludeFrom="/etc/rsync_exclude.lst",#设置排除不需要同步的文件的列表,可以不需要同步的文件,文件夹写在rsync_exclude.lst中,文件夹目录相对于:/data/www

    如果要同步多台就在这个文件中每同步一台加一项如下:

    sync{

    default.rsync,

    source="/data/www/",

    target="192.168.0.212::www",

    init=galse,

    rsyncOps={"-avz","--delete"}

    }

    sync{

    default.rsync,

    source="/www/html/",

    target="192.168.0.213::www",

    init=galse,

    rsyncOps={"-avz","--delete"}

    }

    1.3设置不需要同步的文件或文件夹

    # vim /etc/rsync_exclude.lst

    conf

    app/log

    1.4建立资源同步目录

    mkdir /data/www -p

    1.5配置max_user_watches

    echo 65535000 > /proc/sys/fs/inotify/max_user_watches

    echo fs.inotify.max_user_watches=65535000 >> /etc/sysctl.conf

    1.6启动lsyncd
    [root@node1~]# /etc/init.d/lsyncd start 或service lsyncd start

    确认lsyncd是否启动

    [root@node1~]# /etc/rc.d/init.d/lsyncd status 或service lsyncd status

    lsyncd (pid 21125) is running...

    把lsyncd加入到随机器启动当中

    [root@node1~]# chkconfig lsyncd on

    2.同步测试

    在服务器端(192.168.0.211)上的目录/data/wwwx下新建文件test-server

    [root@node1 www]#cd /data/www

    [root@node1 www]# touch test-server

    [root@node1 www]# ll

    total 0

    -rw-r--r-- 1 root root 0 Jan 23 14:52 test-server

    [root@node1 www]#

    查看日志,观察同步过程

    [root@node1 www]# tail -f /data/logs/sync/lsyncd.log

    Sat Jan 23 14:56:13 2016 Normal: Calling rsync with filter-list of new/modified files/dirs

    /test-server

    /

    sending incremental file list

    ./

    test-server

    sent 130 bytes received 30 bytes 13.91 bytes/sec

    total size is 0 speedup is 0.00

    Sat Jan 23 14:56:24 2016 Normal: Finished a list after exitcode: 0

    如上,server端新增加的文件test-server已经被同步到客户端上

    在客户端192.168.0.212查看:

    root@node2 www]# ll

    total 0

    -rw-r--r-- 1 www www 0 Jan 23 14:55 test-server

    [root@node2 www]#

    注意:lsyncd只同步lsyncd服务启动后,所配置目录/data/www 所发生的更新,所以配置之前请保证需要同步的两边一致。

    四、服务器端和客户端互相同步

    参照如上配置,在客户端部署服务器端(也就是lsyncd)相关设置,在服务器部署原来的客户端相关配置(也就是rsync)

    北丐洪七公--Jeff
    Dignity comes from strength, strength comes from struggle!
    本文版权归作者和博客园共有,欢迎转载,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    Linkerd 2.10(Step by Step)—将 GitOps 与 Linkerd 和 Argo CD 结合使用
    Linkerd 2.10(Step by Step)—多集群通信
    Linkerd 2.10(Step by Step)—使用 Kustomize 自定义 Linkerd 的配置
    Linkerd 2.10(Step by Step)—控制平面调试端点
    Linkerd 2.10(Step by Step)—配置超时
    Linkerd 2.10(Step by Step)—配置重试
    Linkerd 2.10(Step by Step)—配置代理并发
    本地正常运行,线上环境诡异异常原因集合
    Need to invoke method 'xxx' declared on target class 'yyy', but not found in any interface(s) of the exposed proxy type
    alpine 安装常用命令
  • 原文地址:https://www.cnblogs.com/wangyifu/p/7202563.html
Copyright © 2011-2022 走看看