Nginx+tomcat+redis 实现负载与session

[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是否启动

完毕

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容