这里的配置是采取单向同步,采取 主web机 向 从web机 推送代码,如要双向同步,请自行配置
安装配置 rsync (所有服务器都需安装)
服务器:host1、host2 ···
yum install rsync -y
编辑 rsyncd.conf 配置文件,如果没有则创建一个,host1可以不配置此文件
vim /etc/rsyncd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#rsync通用配置文件,配置的注释不要写在配置后面,否则会有问题 #文件同步后,用户组变为www uid = www gid = www use chroot = 0 #允许ip访问设置,可根据实际需要进行配置 # hosts allow = 192.168.0.1/255.255.255.0 198.162.145.1 hosts allow = * max connections = 0 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log log format = %t %a %m %f %b #方括号中为模块声明 [pic] #指定当前模块在rsync服务器上的同步路径,该参数是必须指定的 path = /srv/b2c/public #注释、说明 comment = pic ignore errors #是否允许客户端上传文件 read only = no list = yes #指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块,如果已设置好公钥连接,下面两项配置可注释 #auth users = www #保存密码和用户名文件,需要自己生成 #secrets file = /etc/rsyncd.passwd |
vim /etc/rsyncd.passwd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#host2文件内容 用户名:密码 多个用户名密码则添加多行 www:123456 #host1文件内容只需要填写host1的密码 123456 #修改密码文件权限为600 chmod 600 /etc/rsyncd.passwd #host2启动 rsync 服务并设置开机自启 #以守护进程方式启动rsync服务 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf #添加开机自启动 echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf">>/etc/rc.local #验证文件是否能够同步 rsync -avzrtpog --delete --progress /data/httpd/ www@host2::pic --password-file=/etc/rsyncd.passwd(若已配置公钥登录,此password-file参数可以忽略) |
安装配置 inotify (只在host1安装)
yum install inotify-tools
配置rsync.sh同步监控脚本
vim /root/rsync.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/bash src=/data/httpd/ des=host2 user=www #多个ip就用空格间断,每个IP用双引号包起来 host="host2" /usr/bin/inotifywait -mrq --exclude=public/images --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib $src | while read file do for hostip in $host do rsync -avzrtpog --delete --progress --exclude=public/images ${src} ${user}@${hostip}::${des} --password-file=/etc/rsyncd.passwd echo "${file}" >> /tmp/rsync.log 2>&1 done done |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
chmod +x /root/rsync.sh #运行rsync.sh同步监控脚本和配置守护进程 nohup sh /root/rsync.sh > /dev/null & #开机自启 echo "nohup sh /root/rsync.sh > /dev/null &" >> /etc/rc.local #如果inotify报错upper limit on inotify watches reached vim /etc/sysctl.conf #增加 fs.inotify.max_user_watches=8192000 #防止句柄数过多报错 #使配置生效 sysctl -p |