• Linux+Nginx+Tomcat+Redis实现负载均衡,应用集群及session共享


    一.环境介绍

    Linux: CentOS 7 64位系统 
    Nginx: 版本1.9.5 
    Tomcat: 版本7.0 
    Redis: 3.0.4

    使用nginx做负载均衡, 2台tomcat应用服务器, 使用redis统一存储session 
    准备2台linux服务器

    服务器A: ip 192.168.186.128 用于安装nginx(端口80)和tomcat1(端口8080) 
    服务器B: ip 192.168.186.129 用于安装tomcat2(端口8080)和redis(端口6379)

    本文着重介绍负载均衡,应用集群配置以及解决session共享问题, 而对于nginx, tomcat, redis的安装将略过

    二.配置

    nginx配置:
    修改nginx.conf文件
    user  www;
    worker_processes  1;
    pid        logs/nginx.pid;
    events {    
          worker_connections  1024;
    }
    http {    
        include       mime.types;    
        default_type  application/octet-stream;    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      
                '$status $body_bytes_sent "$http_referer" '                      
                '"$http_user_agent" "$http_x_forwarded_for"';    
        #access_log  logs/access.log  main;    
        sendfile        on;    
        tcp_nopush     on;    
        #keepalive_timeout  0;    
        keepalive_timeout  65;    
        gzip  on;    
        #负载均衡配置    
        upstream tomcat.com {        
            server localhost:8080 max_fails=3 weight=1 fail_timeout=60s;        
            server 192.168.186.129:8080 max_fails=3 weight=3 fail_timeout=60s;    
        }    
        server {        
            listen       80;        
            server_name  localhost;        
            charset utf-8;        
            location / {            
                root   /alidata/www;            
                index  index.html index.htm;        
            }
            #将所有动态请求(即以jsp结尾的请求转发tomcat服务器)
            location ~ .*.jsp$ {            
                index    index.jsp;            
                proxy_pass    http://tomcat.com;        
            }        
            location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {            
                expires      30d;        
            }        
            location ~ .*.(js|css)?$ {              
                expires      1h;        
            }        
            error_page  404              /404.html;        
            error_page   500 502 503 504  /50x.html;        
            location = /50x.html {            
                root   html;        
            }    
        }
    }

    负载均衡配置中的参数解析:

    server localhost:8080 max_fails=3 weight=1 fail_timeout=60s; 
    max_fails: 最大的失败连接数, 即当连接此服务器3次都失败时, nginx则将不会再转发请求至这台服务器上 
    weight: 即权重, 数值越大则分配的请求将会越多, 
    fail_timeout: 连接失败的超时时间, 即超过指定时间还未连接成功,就会将请求转发至其他服务器

    tomcat的配置:

    添加以下3个jar文件到tomcat的lib目录中(用于tomcat服务器session保存至redis数据库, 实现session共享):

    tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar 
    jedis-2.0.0.jar 
    commons-pool-1.5.5.jar

    点击下载

    修改两个tomcat服务器conf目录下context.xml文件, 在节点中添加如下配置:


    <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" /> 
    <Manager className="com.radiadesign.catalina.session.RedisSessionManager" 
    host="192.168.186.129" 
    port="6379" 
    database="0" 
    maxInactiveInterval="60" /> 

    连接参数请改为您的实际环境中的参数。

    在tomcat1的应用访问根目录下新建jsp,在body中添加如下代码:

    <%
        session.setAttribute("name", "tomcat1");
    %>
    success access tomcat1;
    在tomcat1的session中存入key为name, value为tomcat1的记录
    同样在tomcat2的应用访问根目录下新建jsp,在body中添加如下代码:
    <%
        String name = (String) session.getAttribute("name");
    %>
    success access tomcat2;<br/>
    <%=name %>

    依次启动reids, tomcat1, tomcat2, nginx

    访问http://192.168.186.128/index.jsp 
    会发现页面均匀的显示

    success access tomcat1; 
    success access tomcat2;

    并且查看redis数据库时会发现, 有session信息存入redis数据库

    至此, 配置成功! 
    此案例仅用于介绍负载均衡,应用集群配置以及解决session共享问题, 而实际应用中, 还需要对nginx, tomcat, redis等进行配置优化以达到最佳性能, 此处不作详细说明, 有兴趣可以一起讨论

  • 相关阅读:
    SQL数据转移
    怎么将控制台的打印输出到文本文件中
    用来控制 XML 序列化的属性
    excel内容转成xml
    HTTP状态码
    char、varchar、nchar、nvarchar的区别
    C# Cookie编程
    android的原理--为什么我们不需要手动关闭程序
    HTTP协议及HTTP包
    HTTP 方法:GET 对比 POST
  • 原文地址:https://www.cnblogs.com/maomi233/p/9179200.html
Copyright © 2020-2023  润新知