描述

Lsyncd是Rsync + ssh是一种高级操作配置,它使用SSH来操作文件和目录,直接在目标上移动,而不是通过线路重新传输移动目.可以最快的速度去让目标主机做到同步功能

环境

nginx1: 10.0.0.87
nginx2: 10.0.0.88

安装使用aliyun的源即可apt安装

apt-get install lsyncd
apt install rsync

查看安装的版本

root@k8s-etcd1:/etc/nginx# lsyncd --version
Version: 2.1.6

创建必要文件夹

mkdir /etc/lsyncd #ubuntu需要手动创建配置文件定义
mkdir /var/log/lsyncd
touch /var/log/lsyncd/lsyncd.{log,status}

配置免密登陆

ssh-keygen -t rsa
ssh-copy-id root@10.0.0.88
ssh root@10.0.0.88 (无需密码即可登陆)

编辑配置文件

cd /etc/lsyncd/
vim lsyncd_nginx.lua

settings {
        logfile = "/var/log/lsyncd/lsyncd-nginx.log",  --定义日志文件
        statusFile = "/var/log/lsyncd/lsyncd-nginx.status"  --定义状态文件
}
sync {
        default.rsyncssh,    
        source = "/etc/nginx", --源目录
        host = "10.0.0.88", --目的主机
        targetdir = "/etc/nginx", --远程目录
        delete = true,
        delay = 0,    --延迟
--       exclude={                 
--            ".txt"             --排除
--        },
    rsync = {
               binary = "/usr/bin/rsync",
               archive = true, --归档
               compress = true, --压缩
               verbose = true,
               owner = true,   --属主
               perms = true,   --权限
               _extra = {"--bwlimit=2000"},
                },

        ssh = {
             port = 22
              }
}

运行

root@k8s-etcd1:/etc/nginx#lsyncd lsyncd_nginx.lua #指定配置文件运行
root@k8s-etcd1:/etc/nginx# ps -ef'grep lsyncd'grep -v grep
root      16693      1  0 17:35 ?        00:00:00 lsyncd /etc/lsyncd/lsyncd_nginx.lua

测试实时同步时间

这个11G的文件目标数据同步过来之后大概是5分钟左右,具体需要根据服务器配置等优化

root@k8s-etcd1:/etc/nginx# dd if=/dev/zero of=test bs=1M count=10240
10240+0 records in

目标主机查看是否数据一致

root@k8s-etcd2:/etc/nginx# cd /etc/nginx/
root@k8s-etcd2:/etc/nginx# du -sh test
11G test