做了负载均衡的服务器上,经常有多个中间件需要文件资源同步的需要。理想的同步过程应该是,不同步相同的部分,将源服务器上有差异的部分同步到客户服务器上,并删除客户服务器上和源服务器不相同的内容,并定期执行。本文使用rsync+crontab实现。
第一步:rpm包安装rsync和crontab
如果没有安装对应的包,下载对应的rpm包,使用命令:rpm -ivh XXX.rpm安装。
本文使用的是centos6.5,centos下rsync默认是在xinetd下启动,所以需要安装xinetd,方法同上。
安装完成之后使用命令:service xinetd start启动rsync服务
第二步:在有文件源的服务器上配置rsync服务
# 创建rsync服务目录
mkdir /etc/rsyncd
# 创建配置文件
touch /etc/rsyncd/rsyncd.conf
# 创建密码文件
touch /etc/rsyncd/rsyncd.secrets
#权限修改(一定要修改为以下权限)
chown root:root /etc/rsyncd/rsyncd.secrets
chmod 600 /etc/rsyncd/rsyncd.secrets
rsyncd.conf配置如下(直接复制过去修改):
# GLOBAL OPTIONS
uid = root
gid = root
use chroot = no
read only = yes
#limit access to private LANs
hosts allow=10.10.19.74
hosts deny=
max connections = 5
pid file = /var/run/rsyncd.pid
secrets file = /etc/rsyncd/rsyncd.secrets
#lock file = /var/run/rsync.lock
#motd file = /etc/rsyncd/rsyncd.motd
#This will give you a separate log file
#log file = /var/log/rsync.log
#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
# MODULE OPTIONS
[uploadhome]
path = /home/kevin/tomcat_upload/tomcat_upload/webapps/uploadServer/upload
list=yes
ignore errors
auth users = anxiaolong
comment = upload home
exclude = important/
rsyncd.secrets文件里面写用户名和密码,格式为XXX:XXX
配置好之后重启下xinetd服务,命令:service xinetd restart
第三步:配置目标服务器上的rsync
目标服务器是作为客户端下载服务端的资源,只需要安装rsync包和xinetd包即可,安装完成之后启动xinetd服务即可。
在/tmp目录下使用vim新建两个文件,rsync.passwd需要有读写的权限,rsync需要有执行的权限。
把客户端同步文件的命令写到rsync.sh中:rsync -avzP --delete --password-file=/tmp/rsyncd.passwd anxiaolong@10.10.19.73::uploadhome /home/kevin/tomcat_upload/tomcat_upload/webapps/uploadServer/upload
把密码写到rsync.passwd中
执行脚本就可以同步
第四步:将同步的脚本添加到crontab定期执行(本文设置为5分钟同步一次)
下再crontab的rpm包安装上
启动crontab服务
在crontab配置下添加定期执行命令
修改保存后,重启crontab服务
针对crontab的定期执行参照下图