服务器name->ip drbd1: 192.168.171.136 drbd2: 192.168.171.135
-
apt-get
安装三个软件xinetd
、lsyncd
、rsync
,配置好ssh免密钥登录 root@drbd2# vi /etc/rsyncd.conf
[diskb] --> 名字标识,用于rsync命令冒号后面 path = /mnt/diskb --> 目录的路径 list = true --> 列出服务器上提供同步数据的目录,默认是yes,为了安全建议no uid = root --> 运行命令的用户,默认是nobody,如果系统不存在这个用户,会出错 gid = root --> 运行命令的用户组,默认是nobody,如果系统不存在这个用户,会出错 read only = false --> 只读选项,意思是不让客户端上传文件到服务器 hosts allow = 192.168.171.136 --> 允许这个ip访问,通常与hosts deny配合使用 hosts deny = * --> 禁止除允许列表中的所有地址的访问
root@drbd2# vi /etc/xinetd.d/rsync
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
-
root@drbd2# service xinetd restart
重启xinetd服务之后,在drbd1上用命令测试一下 -
root@drbd1# rsync -avz --delete /mnt/diskb/ 192.168.171.135::diskb
#测试命令,如果能够同步成功,就往下走,否则检查一下配置,直到成功
命令解析: a:--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性 v:--verbose 详细模式输出 z:--compress 对备份的文件在传输时进行压缩处理 ---其他的参数--- u:--update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件) q:--quiet 精简输出模式 --delete 删除那些DST中SRC没有的文件
root@drbd1# vi /etc/lsyncd.conf
settings { logfile ="/tmp/lsyncd.log", --> 日志文件路径 statusFile ="/tmp/lsyncd.status", --> 状态文件路径 inotifyMode = "CloseWrite", --> 在文件结束写之后同步,也可以写Modify maxProcesses = 7, --> 同时进程最大个数 } sync { default.rsync, --> 同步模式,有rsync、rsyncssh、direct三种 source = "/mnt/diskb", --> 监听的目录 target = "192.168.171.135::diskb", --> 也可以写为服务端地址以及rsync的名字标识 delete = "running", --> 为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除 delay = 5, --> 累计事件,等待rsync同步延时时间,即5秒内,对同一文件的修改只同步一次 rsync = { --> rsync参数 binary = "/usr/bin/rsync", archive = true, compress = true, --> 开启压缩 verbose = true } }
-
root@drbd1# lsyncd -log all /etc/lsyncd.conf
启动进程 -
root@drbd1# vi /etc/rc.local
在exit 0
之前,加入lsyncd -log all /etc/lsyncd.conf
,完成开机自动执行 - 至此配置好了一半:即
drbd1
的目录/mnt/diskb
中的任意修改都会同步到drbd2
的/mnt/diskb
中,如果要实现另一半操作,交换主从,再配置一遍即可 - 单个文件的同步的配置:
/etc/rsyncd.conf
片段:
sync { default.rsync, source = "/tmp", target = "drbd2::html", delete = "running", delay = 5, rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, _extra = {"--include-from=/etc/lsyncd.include", "--exclude=*"} } } --> _extra 参数是执行rsync命令时,不修改直接带上的参数。 --> 2.1.*版本之前有rsyncOps={"--include-from=/etc/lsyncd.include","--exclude=*"}的写法,现在被_extra替代
- 包含文件
/etc/lsyncd.include
:
single.file test.file
其他要包含的文件,每个占一行
网友评论