美文网首页Unix/Linux服务器技术分享我用 Linux
Nginx+tomcat+redis 实现负载与session

Nginx+tomcat+redis 实现负载与session

作者: J书越来越垃圾了 | 来源:发表于2017-02-20 00:52 被阅读76次

    [TOC]

    ** 部分内容源于网络,文档是个人学习笔记与记录**

    安装需要准备的包

    commons-pool2-2.2.jar
    jedis-2.7.2.jar
    tomcat-redis-session-manage-tomcat7.jar
    #目前上面这些组件不支持tomcat8.0
    apache-tomcat-7.0.75.tar.gz
    jdk-8u45-linux-x64.tar.gz    #用以支持JAVA
    nginx-1.7.8.tar.gz
    nginx_upstream_check_module-master.zip   #后台健康监测插件,需要安装Nginx时编译进去
    

    YUM源为epel

    规划---(测试机的配置基本一致,本文只书写其一)

    IP 备注
    192.168.247.151 Nginx+Redis
    192.168.247.152 tomcat(test1)
    192.168.247.153 tomcat(test2)

    192.168.247.151

    安装Nginx

    为了支持Nginx的rewrite功能,首先安装pcre*模块

    yum -y install pcre*
    

    为了进行后台的健康检测,所以下载淘宝的检测插件,安装Nginx直接编译进去

    /usr/local/src

    nginx_upstream_check_module-master.zip 和nginx-1.7.8.tar.gz

    unzip  nginx_upstream_check_module-master.zip
    tar -zxvf nginx-1.7.8.tar.gz
    cd nginx-1.7.8
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre --add-module=/usr/local/src/nginx_upstream_check_module-master
    make
    make install
    

    注意:如果是Nginx安装后进行的编译

    cd nginx-1.7.8
    patch -p1 < ../nginx_http_upstream_check_module/check_1.7.?+.patch    #版本根据Nginx选择
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre --add-module=/usr/local/src/nginx_upstream_check_module-master
    make     #千万不能  make install  不然就真的覆盖了
    mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-1.7.0.bak
    cp ./objs/nginx /usr/local/nginx/sbin/
    /usr/local/nginx/sbin/nginx    #启动Nginx
    

    Nginx安装完毕。配置Nginx

    /usr/local/nginx/conf/nginx.conf

    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;
        keepalive_timeout  65;
        #开启负载均衡,指向后台tomcat集群
        upstream test {
            server 192.168.247.152:8080;
            server 192.168.247.153:8080;
            #开启健康检测机制
            check interval=3000 rise=2 fall=5 timeout=1000 type=http;
            check_http_send "HEAD /test HTTP/1.0\r\n\r\n";
            check_http_expect_alive http_2xx http_3xx;
            }
            
        server{
            listen  80;
            #server_name test.test.com; #设置域名
            #健康检测界面
            location = /nstatus {
                check_status;
                access_log off;
                allow all;
                }
            #测试页面 自己在tomcat上新建的
            location /test {
                proxy_pass http://test;
                proxy_set_header Host $host; 
                proxy_redirect off; 
                proxy_set_header X-Real-IP $remote_addr; 
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
               }
            }
    }
    

    启动Nginx 输入健康检测地址即可看到后台tomcat状态

    安装Redis 实现session共享

    下载redis包官网http://redis.io

    注:redis的test需要tcl的支持,所以可先检查下是否安装了tcl

    yum - y install
    wget http://download.redis.io/redis-stable.tar.gz
    tar –zxvf redis-stable.tar.gz
    cd redis-stable
    make
    

    完毕后 src下会多出几个文件

    redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server

    可手动将其复制到/usr/local/bin目录下,也可执行make install

    此处选择make install

    make install
    

    注意:若此时执行redis-server –v (查看版本命令),若提示redis-server command not found,则需要将/usr/local/bin目录加到环境变量,如何添加,此处不做详细介绍,可查看修改/etc/profile,(查看环境变量命令:echo $PATH)

    redis安装完毕

    修改redis配置文件

    创建redis目录用以存放redis 日志 数据库 进程

    mkdir -p /var/redis/{data,log,run}
    

    拷贝解压包下的redis.conf文件至/etc/redis

    cp -p /usr/local/src/redis-stable/redis.conf /etc/redis.conf
    vim /etc/redis.conf
    
    port 6379
    daemonize yes #开启后台进程
    pidfile /var/redis/run/6379.pid
    logfile /var/redis/log/redis.log
    dbfilename dump.rdb
    dir /var/redis/data  #数据库路径 默认是./
    requirepass centos #设置密码为centos
    #bind 127.0.0.1  默认是开启的,只允许本地登陆,所以,要不添加IP,要不给注释了 
    

    启动redis

    redis-server /etc/redis.conf
    ps -aux | grep redis
    redis-cli    #客户端连接,进入redis
    
    AUTH centos  #密码认证
    SHUTDOWN
    exit
    
    service redis start
    

    设置redis开机启动

    cp -p /usr/local/src/redis-stable/utils/redis_init_script /etc/init.d/redis
    ll    #看有没有执行权限
    

    修改脚本的pid,conf等路径,添加开机启动权限

    #开机启动
    #chkconfig: 2345 90 10
    #description: Redis is a persistent ket-value database
    #added by zili on 20170218  
    
    REDISPORT=6379
    EXEC=/usr/local/bin/redis-server
    CLIEXEC=/usr/local/bin/redis-cli
    
    PIDFILE=/var/redis/run/6379.pid
    CONF="/etc/redis.conf"
    ...
    #如果是在生产环境,那么就规划好端口等,尽量使用变量去实现,加以区分
    比如
    PIDFILE=/var/redis/run/${REDISPORT}.pid
    CONF="/etc/redis_${REDISPORT}.conf"
    
    service redis star | stop #等均可使用了,不能使用就查看权限 ll
    chkconfig redis on
    

    192.168.254.152/153

    安装tomcat

    tomcat 安装依赖JAVA的JDK 所以判断JDK是否安装并进行安装

    rpm -qa | grep java
    

    删除openjdk

    rpm -e --nodeps java-1.7....... # -e 删除 --nodeps强行删除
    

    下载 jdk-8u45-linux-x64.tar.gz 解压 到 /usr/java/

    配置全局变量 vim /etc/profile 在末尾添家,注意路径!特别是JDK文件名字

    export JAVA_HOME=/usr/java/jdk1.8.0_45
    export JRE_HOME=/usr/java/jdk1.8.0_45/jre
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
    export PATH=$PATH:$JAVA_HOME/bin
    
    java -version  #不报错,能看版本,安装成功
    

    下载tomcat包 apache-tomcat-7.0.75.tar.gz (注意redis组件目前不支持tomcat8.0)

    以及三个是jar插件 commons-pool2-2.2.jar jedis-2.7.2.jar tomcat-redis-session-manage-tomcat7.jar

    解压 tomcat安装包 到/usr/local/tomcat

    tar -zxvf apache-tomcat-7.0.75.tar.gz 
    mv apache-tomcat-7.0.75 /usr/local/tomcat
    mv  3个插件  /usr/local/tomcat/lib
    /usr/local/tomcat/bin/startup.sh
    

    浏览器即可访问tomcat 默认端口8080

    tomcat配置

    manager-gui等配置,去conf文件下修改 tomcat-users.xml

    添加相应权限 注!只可以本地访问manager

     <role rolename="tomcat"/>
      <role rolename="role1"/>
      <user username="tomcat" password="tomcat" roles="tomcat"/>
      <user username="both" password="tomcat" roles="tomcat,role1"/>
      <user username="role1" password="tomcat" roles="role1"/>
      <role rolename="admin"/>
      <role rolename="admin-gui"/>
      <role rolename="manager-gui"/>
      <user username="vic" password="tomcat" roles="manager-gui,admin-gui,admin"/>
    </tomcat-users>
    

    重启生效

    编辑test下的测试页面 主要测试session

    <%@ page language="java" %><html>
      <head><title>152</title></head>
      <body>
        <h1><font color="green">152</font></h1>
        <table align="centre" border="1">
          <tr>
           <td>Session ID</td>
            <% session.setAttribute("tomcat.suzf.net","tomcat.suzf.net"); %>
            <td><%= session.getId() %></td>
          </tr>
          <tr>
            <td>Created on</td>
            <td><%= session.getCreationTime() %></td>
          </tr>
        </table>
      </body>
    </html> 
    

    session共享保存设置

    vim /usr/local/tomcat/conf/context.xml
    
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />        
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 
        host="192.168.247.151"             <!-- Redis地址 -->
        port="6379"                        <!-- Redis端口 -->
        password="centos"                  <!-- Redis密码 -->
        database="0"                       <!-- 存储Session的Redis库编号 -->
        maxInactiveInterval="60"           <!-- Session失效的间隔(秒) -->
    />
    

    重启生效

    如若出现500错误 查看防火墙,selinux,iptables等以及redis是否启动

    完毕

    相关文章

      网友评论

        本文标题:Nginx+tomcat+redis 实现负载与session

        本文链接:https://www.haomeiwen.com/subject/ziojwttx.html