192.168.10.101 rsync服务器
192.168.10.104 rsync服务器
192.168.10.106 rsync服务器
192.168.10.107 发布机,安装inotify-tool工具
查看安装包
rpm -qf/usr/bin/rsync
返回结果:
rsync-2.6.8-3.1
卸载安装包
rpm -ersync-2.6.8-3.1
tar -zxvf rsync-3.0.7.tar.gz
cd rsync-3.0.7
./configure
make
make install
查看rsync安装情况
which rsync
返回结果:
/usr/local/bin/rsync
查看版本
rsync --version
返回结果:
rsync version 3.0.7 protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell,Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, no symtimes
rsync comes with ABSOLUTELY NOWARRANTY. This is free software, and you
are welcome to redistribute it undercertain conditions. See the GNU
General Public Licence for details.
[govtk_chinavvv@tkweb ~]$
备注:看看是否是新版本了,如果提示找不到该命令,那是shell缓存的原因,重新登录一遍应该就好了
编辑三台rsync服务器的/etc/hosts文件,添加如下内容:
vi /etc/hosts
192.168.10.107fabu
修改192.168.10.106 rsync服务器端配置文件
vi /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
#模块的最大并发连接数量,以保护服务器,超过设置值,连接请求将被暂时限制
max connections =10
#是否检查口令文件的权限,yes为检查口令文件的权限。如果设置为yes,密码文件的权限必须为root用户权限
strict modes = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
#定义一个模块的开始,nginx就是对应的模块名称。模块名称可以自定义
[nginx]
#需要备份的文件目录
path =/opt/webapps
comment = nginxfile
#忽略一些无关的IO错误
#ignore errors
#设置为no,表示客户端可以上传。如果设置为yes,表示只读
read only = no
#设置为no,表示客户端可以下载。
write only = no
#可以连接rsync服务器的主机
hosts allow =192.168.10.107
#禁止连接rsync服务器的主机
hosts deny = *
list = false
uid = root
gid = root
#定义可以连接该模块的用户名,该用户名和linux系统用户没有任何的关系。
auth users =backup1
#密码文件的存放路径和名称,可自定义
secrets file =/etc/rsync.pass
修改rsync配置文件权限
chmod 600/etc/rsyncd.conf
192.168.10.106 rsync服务器创建用户认证文件
touch/etc/rsync.pass
#修改密码文件,路径和名称与配置文件中的一致。用户名与配置文件中的authusers设定值#一致,密码可以随便定义
vi /etc/rsync.pass
backup1:sginfo123456
修改此文件权限
chmod 600/etc/rsync.pass
修改192.168.10.101 rsync服务器端配置文件
vi/etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[tomcat1]
path = /opt/webapps
comment = tomcat1 file
#ignore errors
read only = no
write only = no
hosts allow = 192.168.1.107
hosts deny = *
list = false
uid = root
gid = root
auth users = backup2
secrets file = /etc/rsync.pass
修改rsync配置文件权限
chmod 600 /etc/rsyncd.conf
192.168.10.101 rsync服务器创建用户认证文件
touch/etc/rsync.pass
vi /etc/rsync.pass
backup2:sginfo123456
修改此文件权限
chmod 600/etc/rsync.pass
修改192.168.10.104rsync服务器端配置文件
vi/etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[tomcat2]
path = /opt/webapps
comment = tomcat2 file
#ignore errors
read only = no
write only = no
hosts allow = 192.168.1.107
hosts deny = *
list = false
uid = root
gid = root
auth users = backup3
secrets file = /etc/rsync.pass
修改rsync配置文件权限
chmod 600 /etc/rsyncd.conf
192.168.10.104 rsync服务器创建用户认证文件
touch/etc/rsync.pass
vi /etc/rsync.pass
backup3:sginfo123456
修改此文件权限
chmod 600/etc/rsync.pass
分别启动192.168.10.106,192.168.10.101,192.168.10.104三台服务器上rsync服务,执行以下命令
/usr/bin/rsync--daemon --config=/etc/rsyncd.conf
查看日志文件
more/var/log/rsync.log
添加开机自启动
分别编辑192.168.10.101,192.168.10.104,192.168.10.106的开机自启动文件
vi/etc/rc.d/rc.local
结尾添加如下内容:
su - root -c"/usr/bin/rsync --daemon --config=/etc/rsyncd.conf"
查看rsync是否安装
rsync --version
查看linux内核版本,linux内核,确定版本在2.6.13以上
uname -r
安装inotify-tools
解压
tar -zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/opt/inotify
make&&make install
创建并编辑密码文件
touch /etc/rsync.pass
vi /etc/rsync.pass
sginfo123456
备注:密码要与以上三台服务器上密码文件的密码一致
修改此文件权限
chmod 600/etc/rsync.pass
创建inotifyrsync.sh脚本文件
touch/opt/inotifyrsync.sh
添加以下内容:
#!/bin/bash
host1=192.168.10.106
host2=192.168.10.101
host3=192.168.10.104
#/opt/webapps/ROOT/表示直接备份ROOT目录下的所有文件,/opt/webapps/ROOT表示备份#的是ROOT目录
src=/opt/webapps/ROOT
dst1=nginx
dst2=tomcat1
dst3=tomcat2
user1=backup1
user2=backup2
user3=backup3
#有时会遇到这样的情况:向inotify监控的目录(这里是/web/wwwroot/)写入一个很大文件#时,由于写入这个大文件需要一段时间,
#此时inotify就会持续不停的输出该文件被更新的信息, 这样就会持续不停的触发rsync去执行同步操作,占用了大量系统资源,那
#么针对这种情况,最理想的做法是等待文件写完后再去触发rsync同步。 在这种情况下,可以修改inotify的监控事件,
#即:“-eclose_write,delete,create,attrib”。
/opt/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T%w%f%e' -e close_write,delete,create,attrib $src | while read files
do
#--exclude="classes"表示排除名为classes的文件夹备份,为相对路径,注意一定不要写成绝对路径
/usr/bin/rsync -vzrtopg --delete --progress--exclude="classes" --password-file=/etc/rsync.pass $src $user1@$host1::$dst1
/usr/bin/rsync -vzrtopg --delete --progress--exclude="classes" --password-file=/etc/rsync.pass $src $user2@$host2::$dst2
/usr/bin/rsync -vzrtopg --delete --progress--exclude="classes" --password-file=/etc/rsync.pass $src $user3@$host3::$dst3
echo "${files} was rsynced">>/tmp/rsync.log 2>&1
done
修改inotifyrsync.sh的权限
chmod 755 inotifyrsync.sh
登录192.168.10.107
/opt/inotifyrsync.sh &
exit
查看日志情况
more/tmp/rsync.log
查看进程运行情况
[root@chinavvv2~]# ps -ef|grep -v grep|grep rsync
root 9161 8651 0 14:12 pts/2 00:00:00 /bin/bash ./inotifyrsync.sh
root 9163 9161 0 14:12 pts/2 00:00:00 /bin/bash ./inotifyrsync.sh
vi/etc/rc.d/rc.local
结尾添加如下内容:
su - root -c"/opt/inotifyrsync.sh &"
/proc/sys/fs/inotify/max_user_watches默认值: 8192指定了每个inotifyinstance相关联的watches的上限,也就是说每个inotify实例可监控的最大目录数量。如果监控的文件数目巨大,需要根据实际情况适当增加此值的大小,例如:
echo30000 > /proc/sys/fs/inotify/max_user_watches
192.168.10.107上设置
发布机上安装tomcat,修改server文件:
将8080端口修改为80端口,将appBase="webapps"修改为appBase="/opt/webapps"
修改ROOT程序三个配置文件
启动tomcat
192.168.10.101上设置
上传index.html文件到192.168.10.101/opt/webapps/ROOT/sysadmin目录下
重启rsync
ps -ef|grep -vgrep|grep rsync
root 2202 1 0 11:22 ? 00:00:00 /usr/local/bin/rsync --daemon--config=/etc/rsyncd.conf
[root@chinavvv4ROOT]# kill 2202
[root@chinavvv4ROOT]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
重启inotifyrsync.sh脚本
[root@chinavvv2opt]# ps -ef|grep -v grep|grep rsync
root 2415 4349 0 11:26 pts/2 00:00:00 /bin/bash ./inotifyrsync.sh
root 2417 2415 0 11:26 pts/2 00:00:00 /bin/bash ./inotifyrsync.sh
[root@chinavvv2opt]# kill 2415
[root@chinavvv2opt]# kill 2417
[1]+ 已终止 ./inotifyrsync.sh
[root@chinavvv2opt]# ./inotifyrsync.sh &
[1] 2591
报错1:
rsync:getaddrinfo: host1 873: Temporary failure in name resolution
rsync error: errorin socket IO (code 10) at clientserver.c(122) [sender=3.0.7]
处理方法:
检查inotifyrsync.sh脚本文件
定位问题所在
$user1@host1::$dst1
修改为
$user1@$host1::$dst1
@ERROR: Unknownmodule 'web1'
报错2:
192.168.10.101/var/log/rsyncd.log日志报错,如下:
name lookup failedfor 192.168.10.107: Temporary failure in name resolution
处理方法:
登录rsync服务器
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
192.168.10.107 fabu
重启192.168.10.101上的rsync服务
重启192.168.10.107上的inotifyrsync.sh
报错3:
192.168.10.104/var/log/rsyncd.log日志报错,如下:
rsync denied onmodule tomcat2 from unknown (192.168.10.107)
处理方法:
vi/etc/rsyncd.conf
hosts allow =192.168.1.107
修改为
hosts allow =192.168.10.107
重启192.168.10.104上的rsync服务
重启192.168.10.107上inotifyrsync.sh脚本