折雨的天空
给nginx集群配置了一个简单的文件同步
2014-2-26 我好笨


session共享用ipbash的方式解决了







但是文件同步存在一个问题,上传文件的暂时没去弄,多向同步比较麻烦,对于我一个linux新手来说,太困难了。



这里配置的文件同步主要用于程序文件分发,避免修改程序后,需要向三个服务器上传文件的尴尬







配置过程完全参照网上一篇文章,但是遇到一些问题,记录在最后,网上文章地址是:







http://showerlee.blog.51cto.com/2047005/1248429








以下内容为复制网上文章备份:










sersync 推送端  192.168.100.74



rsync   接收端  192.168.100.29







环境搭建:(接收端,推送端)







一.首先关闭selinux与iptables



# vi /etc/sysconfig/selinux



---------



SELINUX=disabled



---------



# setenforce 0



# service iptables stop







在使用sersync之前,我们必须安装配置好rsync服务器







rsync (接收端)







一.安装rsync(centos6.3默认已安装)



# yum install rsync -y



# yum install xinetd -y







二.启动rsync依赖服务



# /etc/init.d/xinetd start



# chkconfig xinetd on







三.配置:



# vi /etc/rsyncd.conf



--------------------



uid = root



gid = root



use chroot = no



max connections = 10



strict modes = yes



port = 873



address = 192.168.100.29







[data] # rsync模块名,后面配置sersync会用到



path = /data  # 该同步目录只要uid所指定的用户有写权限即可



comment = mirror for test



ignore errors



read only = no



list = no



auth users = user



secrets file = /etc/rsync.pas # 密码认证文件,必须为600权限,否则rsync传输会报错



hosts allow = *



# hosts deny = 0.0.0.0/0



pid file = /var/run/rsyncd.pid



lock file = /var/run/rsync.lock



log file = /var/log/rsyncd.log



--------------------







四.创建同步目录



# mkdir /data







五.配置认证文件



# echo "user:123456" > /etc/rsync.pas



# chmod 600 /etc/rsync.pas



# rsync --daemon --config=/etc/rsyncd.conf







六.重启xinetd使其配置生效:



# /etc/init.d/xinetd restart







七.设置开机启动:



# echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.local







sersync (推送端)







一.下载sersync源码包



# wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz



注:若在64位平台安装则可下载64位sersync源码包,本例用32位



# wget http://sersync.googlecode.com/files/sersync2.5_64bit_binary_stable_final.tar.gz







二.创建sersync目录结构



# mkdir /usr/local/sersync



# mkdir /usr/local/sersync/conf



# mkdir /usr/local/sersync/bin



# mkdir /usr/local/sersync/log



# tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz



# cd GNU-Linux-x86/



# cp confxml.xml /usr/local/sersync/conf



# cp sersync2 /usr/local/sersync/bin







三.配置sersync







1.首先创建连接rsyncd的密码文件



# echo "123456" >/etc/rsync.pas



# chmod 600 /etc/rsync.pas







2.配置confxml.xml



# cd /usr/local/sersync/conf



# vi confxml.xml



按照注释进行修改



-----------------------------



<?xml version="1.0" encoding="ISO-8859-1"?>



<head version="2.5">



   # 设置本地IP和端口



   <host hostip="localhost" port="8008"></host>



   # 开启DUBUG模式  



   <debug start="false"/>



   # 开启xfs文件系统



   <fileSystem xfs="false"/>



   # 同步时忽略推送的文件(正则表达式),默认关闭



   <filter start="false">



       <exclude expression="(.*)\.svn"></exclude>



       <exclude expression="(.*)\.gz"></exclude>



       <exclude expression="^info/*"></exclude>



       <exclude expression="^static/*"></exclude>



   </filter>



   <inotify>



   # 设置要监控的事件



       <delete start="true"/>



       <createFolder start="true"/>



       <createFile start="true"/>



       <closeWrite start="true"/>



       <moveFrom start="true"/>



       <moveTo start="true"/>



       <attrib start="true"/>



       <modify start="true"/>



</inotify>







   <sersync>



   # 本地同步的目录路径



       <localpath watch="/data">



   # 远程IP和rsync模块名  



           <remote ip="192.168.100.29" name="data"/>  



           <!--<remote ip="192.168.8.39" name="tongbu"/>-->



           <!--<remote ip="192.168.8.40" name="tongbu"/>-->



       </localpath>



       <rsync>



   # rsync指令参数



           <commonParams params="-auvzP"/>



   # rsync同步认证



           <auth start="true" users="user" passwordfile="/etc/rsync.pas"/>



   # 设置rsync远程服务端口,远程非默认端口则需打开自定义




           <userDefinedPort start="false" port="874"/><!-- port=874 -->



   # 设置超时时间



           <timeout start="true" time="100"/><!-- timeout=100 -->



   # 设置rsync+ssh加密传输模式,默认关闭,开启需设置SSH加密证书



           <ssh start="false"/>



       </rsync>



    # sersync传输失败日志脚本路径,每隔60会重新执行该脚本,执行完毕会自动清空。



       <failLog path="/usr/local/sersync/log/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->



    # 设置rsync+crontab定时传输,默认关闭



       <crontab start="false" schedule="600"><!--600mins-->



           <crontabfilter start="false">



               <exclude expression="*.php"></exclude>



               <exclude expression="info/*"></exclude>



           </crontabfilter>



       </crontab>



   # 设置sersync传输后调用name指定的插件脚本,默认关闭



       <plugin start="false" name="command"/>



   </sersync>



   # 插件脚本范例



   <plugin name="command">



       <param prefix="/bin/sh" suffix="" ignoreError="true"/>  <!--prefix /opt/tongbu/mmm.sh suffix-->



       <filter start="false">



           <include expression="(.*)\.php"/>



           <include expression="(.*)\.sh"/>



       </filter>



   </plugin>



   # 插件脚本范例



   <plugin name="socket">



       <localpath watch="/opt/tongbu">



           <deshost ip="192.168.138.20" port="8009"/>



       </localpath>



   </plugin>



   <plugin name="refreshCDN">



       <localpath watch="/data0/htdocs/cms.xoyo.com/site/">



           <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>



           <sendurl base="http://pic.xoyo.com/cms"/>



           <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>



       </localpath>



   </plugin>



</head>



-----------------------------







3.创建推送端sersync同步目录



# mkdir /data







4.设置环境变量:



# echo "export PATH=$PATH:/usr/local/sersync/bin/" >> /etc/profile



# source /etc/profile







5.启动sersync



# sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml



注:重启操作如下:



# killall sersync2 && sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml








6.设置开机启动



# echo "sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml" >> /etc/rc.local












以下为配置过程中遇到的问题,上文中,配置了两台服务器,一台主,一台从,我配置的三台,一台主,两台从。








上文没有明显的地方说明,主从都要安装rsync,其实都是要安装的,只是主的那台,不用配置conf文件。








从的conf文件中,IP地址必须是自己的IP,我就在这里吃亏了。


发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容