关于Nginx负载均衡目录同步问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Nginx负载均衡目录同步问题相关的知识,希望对你有一定的参考价值。

参考技术A 近期外包接单,做了一个简单的系统,本以为如此简单一个Tomcat就足以满足,结果客户要求需要两台服务器负载均衡,之前负载均衡都是由专门的人负责,第一次自己实现nginx,走了不少弯路。

由于项目组有附件上传的功能,没有专门的文件服务器,将附件都存放在了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/;

       

Linux下Nginx实现负载均衡

关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境

1、启动Nginx

在Nginx安装成功的前提下,启动Nginx

已root模式登陆(权限需要),接着找到Nginx的安装目录,启动Nginx,并且指定Nginx启动所需的配置文件,该文件也在Nginx的安装目录下.

 

2、查看Niginx是否开启

打开Linux中的火狐浏览器,输入127.0.0.1.

ok,Nginx启动成功!

 

3、新建Nginx配置文件

(1)、查看Nginx配置文件信息

因为nginx.conf配置文件里面包含一些nginx主要的配置信息,所以,如果配置错误,整个nginx服务器就会发生异常,所以尽量操作这个默认的配置文件.

 

(2)、添加新的配置文件,实现负载均衡

ok,新建成功!

 

(3)、编辑配置文件

i、进入root模式(权限问题,该文件是只读文件),修改配置文件.

ii、配置信息如下:

 

iii、保存并推出

先按esc键 输入:wq! 回车退出.

 

(4)、加载新的配置文件

 

 

(5)、查看负载均衡是否成功

浏览器输入127.0.0.1:8080 查看跳转情况,如果能跳到两个站点,说明负载均衡成功!

以上是关于关于Nginx负载均衡目录同步问题的主要内容,如果未能解决你的问题,请参考以下文章

关于nginx的负载均衡问题

用docker搭建nginx负载均衡测试环境

通过Nginx+tomcat+redis实现反向代理 负载均衡及session同步

分布式部署与NGINX负载均衡

反向代理负载均衡!优秀的Nginx

面试官:关于负载均衡你了解多少