实现功能
两台服务器,监听tomcat服务,如果主服务器上的tomcat挂了,则让虚拟IP飘到备用服务器,同时两台服务器上的文件要实时同步备份。
主服务器:serverA
备用服务器:serverB
首先,对主服务器serverA:
创建四个脚本:
1)tomcat_check.sh:监听tomcat服务,如果挂了重启tomcat并sleep 2s,再次检查tomcat启动了没,如果还没启动则killall keepalived。这样虚拟IP就飘到serverB上了。
tomcat_check.sh是在keepalived.conf中配置定时重复执行的。
2)start_bkp.sh:全量备份
执行 rsync -vzrtopglLu ...将serverA的制定目录全量备份到serverB
这个脚本不用重复执行,用 nohup ./start_bkp.sh & 执行一次就行了。
3)start_rsync.sh:增量备份
先执行inotifywait -mrq --format ...判断哪些文件被修改了或者新增了,对这些修改了的文件通过 rsync -avz 进行增量备份
这个脚本的执行是在check_keepalived.sh里。
4)check_keepalived.sh:当VIP没绑在serverA上时,执行增量备份。
具体来说,判断VIP是否飘在主服务器serverA上,如果是,就不用备份了,如果否:判断start_rsync.sh是否正在执行,如果start_rsync.sh 没在执行则启动。
这个脚本在crontab 中执行。
第二步,对备用服务器ServerB
把start_rsync.sh, check_keepalived.sh拷过去。其中start_rsync.sh的IP地址要改成serverB的IP地址。
然后crontab -e
*/1 * * * * sh check_keepalived.sh
出现的问题:
keepalived.conf中vrrp_script不执行:
未解决
tail -f /var/log/messages 看日志
暂时的解决方法:
改用crontab
新增定时任务: crontab -e
然后执行
/sbin/service crond start
注意:如果想看crontab 执行日志,可以在crontab -e
rsync 问题
1. Connection refused
rsync: failed to connect to 192.168.0.34 (192.168.0.34): Connection refused (111)
首先确定主备服务器的rsync都开了。大概率是没开导致的,有时候rsync会自己莫名其妙就关了,以为启动着的结果ps -aux | grep rsync一看发现没起。。
rsync重新启动步骤:
先杀死上一次rsync进程及其pid文件
cat /root/rsyncscript/rsync/run/rsyncd.pid 查看pid
kill -9 pid
rm -rf /root/rsyncscript/rsync/run/rsyncd.pid 删除pid文件
开启rsync服务:sudo rsync --daemon --config=/etc/rsyncd.conf
然后在防火墙开启rsync需要的873端口:
iptables -A INPUT -ptcp --dport 873 -j ACCEPT
注意:
1) centos下好像不用重启iptables或者保存,直接就生效了;
注:防火墙关闭命令:
service iptables stop
或者
systemctl stop firewalld.service
2 chdir failed
存备份文件的那个服务器里找不到对应的路径,新建一个目录即可。
3. The --password-file option may only be used when accessing an rsync daemon
rsync防火墙改不了,遂走ssh方法
在rsyncd.conf里加passwd文件,在执行rsync时 增加参数 --password-file=FILE。但是报错:
The --password-file option may only be used when accessing an rsync daemon
认真看:
这个错没解决,不知道咋回事
4. connection reset by peer
出现这个错至少说明主备服务器上rsync服务以及873端口都是正常启动着的。。。
解决方法:在配置文件里加
read only = false
我原来的配置文件里没写read only这个参数,加上了就好了。