由于项目组有附件上传的功能,没有专门的文件服务器,将附件都存放在了ROOT底下,负载均衡后发现经常找不到图片,明显是因为两台服务器资源不同步的问题造成的,于是开始研究服务器目录同步,使用Rsync+Sersync实现目录同步,具体步骤:
1:制定两台服务器中的一台为主服务器(安装软件rsync+sersync,但是不需要启动rsync),另一台为从服务器(安装软件rsync,需要启动rsync)
2:从服务器安装完rsync需要对/etc/rsyncd.conf 进行配置:
uid = root #拥有目录权限用户
gid = root #拥有目录权限的组
use chroot = no #内网使用可以不用配置
max connections = 200 #最大连接数
timeout = 300 #超时时间
pid file = /var/run/rsyncd.pid #启动进程写入此PID文件
lock file = /var/run/rsyncd.lock #lock文件来配合最大连接数参数
log file = /var/log/rsyncd.log #日志文件
ignore errors = yes #忽略I/O错误
read only = false #允许读写
list = false #不列出列表
hosts allow = 192.168.1.0/24 #允许网段
hosts deny = * #拒绝其他网段
auth users = users #认证用户
secrets file = /opt/app/rsyncd/auth.pass #密码文件
[web] #同步目录
path = /backup/web
设置 /opt/app/rsyncd/auth.pass文件格式为user:password
给 /opt/app/rsyncd/auth.pass添加600权限 chmod 600 /opt/app/rsyncd/auth.pass
启动rsync rsnyc --daemon
3:主服务器部署
主服务器安装完sersync后需要配置confxml.xml,在sersync的安装目录下
<sersync>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-artuz"/>
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/>
<!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>
启动sersync :/opt/soft/sersync/sersync/sersync2 -d -r -o /opt/soft/sersync/sersync/confxml.xml
location ~ .*\.(gif|jpg|jpeg|png|flv|mp3)$ { #静态
proxy_pass http://192.168.1.12:80/
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)