首页 Linux基础正文

sersync+rsync多实例网站数据同步

1、网络拓扑图


2、环境部署准备

Sersync  A服务 Centos6.6 ip 192.168.1.101

Rsync     B服务 Centos6.6 ip 192.168.1.103

Rsync     C服务 Centos6.6 ip 192.168.1.104


1、检查系统环境变量

[root@A-server ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@A-server ~]# uname -r
2.6.32-504.el6.x86_64
[root@A-server ~]# uname -m
x86_64

2、在B和C服务器创建rsyncd.conf配置文件

vim /etc/rsyncd.conf

#Rsync server
#created by shnne 22:54 2017-9-16
##rsyncd.conf start##
uid = root
gid = root
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[www]
comment = www by shnne 22:54 2017-9-16
path = /data0/www/www/
#####################################
[bbs]
comment = bbs by shnne 22:54 2017-9-16
path = /data0/www/bbs/
#####################################
[blog]
comment = blog shnne 22:54 2017-9-16
path = /data0/www/blog/

3、创建目录

mkdir -p /data0/www/{www,bbs,blog}

4、设置相关权限认证

echo "rsync_backup:shnne" >/etc/rsync.password
chmod 600 /etc/rsync.password
#检查权限是否正确
cat /etc/rsync.password
ll /etc/rsync.password

5、开启rsync守护进程

rsync --daemon
ps -ef|grep rsync
lsof -i tcp:873
netstat -antup|grep 873

6、将rsync服务加入开机自启动

echo "/usr/local/bin/rsync --daemon" >>/etc/rc.local

7、重启rsync

pkill rsync
rsync --daemon
ps -ef|grep rsync

8、在A上配置rsync权限

echo "shnne" >/etc/rsync.password
chmod 600 /etc/rsync.password
#检查
cat /etc/rsync.password
ll /etc/rsync.password

9、在A上手工测试rsync同步情况

mkdir -p /data0/www/{www,bbs,blog}
touch /data0/www/www/www.log /data0/www/bbs/bbs.log /data0/www/blog/blog.log
  
#手动测试,执行同步命令
rsync -avzP /data0/www/www/ rsync_backup@192.168.1.103::www/ --password-file=/etc/rsync.password
rsync -avzP /data0/www/www/ rsync_backup@192.168.1.104::www/ --password-file=/etc/rsync.password
  
rsync -avzP /data0/www/bbs/ rsync_backup@192.168.1.103::bbs/ --password-file=/etc/rsync.password
rsync -avzP /data0/www/bbs/ rsync_backup@192.168.1.104::bbs/ --password-file=/etc/rsync.password
  
rsync -avzP /data0/www/blog/ rsync_backup@192.168.1.103::blog/ --password-file=/etc/rsync.password
rsync -avzP /data0/www/blog/ rsync_backup@192.168.1.104::blog/ --password-file=/etc/rsync.password


10.在A安装sersync

64位下载地址https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz

32位下载地址:https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5_32bit_binary_stable_final.tar.gz

shnne博客提供地址:点击下载

压缩包里面有两个文件confxml.xml sersync2

sersync2 这个是sersync主程序

confxml.xml 这个是sersync配置文件

cd /server/tools
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local
cd /usr/local/
mv GNU-Linux-x86/ sersync
mkdir -p bin config logs
mv confxml.xml conf/
mv sersync2 bin/sersync
/bin/cp conf/confxml.xml conf/confxml.xml$(date +%F) #备份配置文件
cd conf/

11、修改配置文件,将第24-28行内容删除掉,换成下面内容

<localpath watch="/data0/www/www">
       <remote ip="192.168.1.103" name="www"/>
       <remote ip="192.168.1.104" name="www"/>
</localpath>
   <!-- ################################### -->
<localpath watch="/data0/www/bbs">
       <remote ip="192.168.1.103" name="bbs"/>
       <remote ip="192.168.1.104" name="bbs"/>
</localpath>
   <!-- ################################### -->
<localpath watch="/data0/www/blog">
      <remote ip="192.168.1.103" name="blog"/>
      <remote ip="192.168.1.104" name="blog"/>
</localpath>

修改38-44行,认证部分
将<auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
修改为<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>

将<timeout start="false" time="100"/><!-- timeout=100 -->
修改为<timeout start="true" time="100"/><!-- timeout=100 -->

修改45行
将<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
修改为
<failLog path="/usr/local/sersync/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
保存退出
wq!


12、开启sersync守护进程同步数据

先配置sersync环境变量
echo 'export PATH=$PATH:/usr/local/sersync/bin' >>/etc/profile
tail -1 /etc/profile
source /etc/profile
启动命令:
sersync -r -d -o /usr/local/sersync/conf/confxml.xml

参数:

-o:指定配置文件,如果不指定他默认是二进制下的配置文件

-d:后台运行

-r:主服务器和备服务器可能两边数据不一致,-r表示数据初始化一次,保证数据一致

启动的过程及结果

[root@A conf]# sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -r 	rsync all the local files to the remote servers before the sersync work
option: -d 	run as a daemon
option: -o 	config xml name:  /usr/local/sersync/conf/www_confxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost	host port: 8008
daemon start,sersync run behind the console 
use rsync password-file :
user is	rsync_backup
passwordfile is 	/etc/rsync.password
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) 
Max threads numbers is: 32 = 12(Thread pool nums) + 20(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /data0/www/www && rsync -artuz -R --delete ./  --timeout=100 rsync_backup@192.168.1.104::www --password-file=/etc/rsync.password >/dev/null 2>&1 
run the sersync: 
watch path is: /data0/www/www

13、切换到sersync配置文件目录下

cd /usr/local/sersync/conf
cp confxml.xml www_confxml.xml

编辑www_confxml.xml,保留www模块,删除bbs 和 blog模块


cp confxml.xml bbs_confxml.xml

编辑bbs_confxml.xml,保留bbs模块,删除www和blog模块

图片和www的那个差不多


cp confxml.xml blog_confxml.xml

编辑blog_confxml.xml模块,保留blog模块,删除www和bbs模块

图片和www的那个差不多


14、多实例初始化同步命令

sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml
sersync -r -d -o /usr/local/sersync/conf/bbs_confxml.xml
sersync -r -d -o /usr/local/sersync/conf/blog_confxml.xml
  
  
cat>>/etc/rc.local<<EOF
sersync -d -o /usr/local/sersync/conf/www_confxml.xml
sersync -d -o /usr/local/sersync/conf/bbs_confxml.xml
sersync -d -o /usr/local/sersync/conf/blog_confxml.xml
EOF


Sersync参数                                   说明

./sersync -r                                  -r参数作用是在开启实时监控之前对主服务器目录与远程目标主机目录进行一次整体同步。如果需要将sersync运行前,主服务器目录下已经存在的所有文件或目录全部同步到远端,则要以-r参数运行sersync,将本地与远端整体同步一次。特别说明:如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步

./sersync -o shnne.xml                    不指定-o参数时,sersync会使用sersync可执行文件目录下的默认配置文件confxml.xml,如果需要使用其他的配置文件,可以使用-o参数制定其他配置文件,通过-o参数,我们可以制定多个不同的配置文件,从而实现sersync多进程多实例的数据同步,本文的例子就是如此

./sersync -n num                         -n参数为指定默认的线程池的线程总数,例如 ./sersync -n 5则指定线程总数为5,如果不指定,默认启动线程池数量是10,如果cpu使用过高,可以通过这个参数调低,如果机器配置较高,可以用-n跳高默认的线程总数,提高同步效率

./sersync -d                               -d参数为后台启动服务,在通常情况下,使用-r参数对本地到远程整体同步一遍后,在后台运行此参数启动守护进程实时同步,在第一次整体同步时,-d和-r参数经常会联合使用。 ./sersync -d -r

./sersync -m                               -m 参数为不进行同步,只运行插件pluginName ./sersync -m pluginName 例如./sersync -m command,则在监控到事件后,不对远程目标服务器进行同步,而是直接运行command插件

-n 8 -o shnne.xml -r -d               多个参数可以配合使用,例如./sersync -n 16 -o config.xml -r -d,表示设置线程池工作线程为16个,指定shnne.xml 作为配置文件,在实时监控前做一次整体同步,以守护进程方式在后台运行




评论