Nginx+tomcat+redis 實(shí)現(xiàn)負(fù)載與session

[TOC]

** 部分內(nèi)容源于網(wǎng)絡(luò)杠袱,文檔是個(gè)人學(xué)習(xí)筆記與記錄**

安裝需要準(zhǔn)備的包

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   #后臺(tái)健康監(jiān)測(cè)插件,需要安裝Nginx時(shí)編譯進(jìn)去

YUM源為epel

規(guī)劃---(測(cè)試機(jī)的配置基本一致饮醇,本文只書寫其一)

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*

為了進(jìn)行后臺(tái)的健康檢測(cè),所以下載淘寶的檢測(cè)插件,安裝Nginx直接編譯進(jìn)去

/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安裝后進(jìn)行的編譯

cd nginx-1.7.8
patch -p1 < ../nginx_http_upstream_check_module/check_1.7.?+.patch    #版本根據(jù)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     #千萬(wàn)不能  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    #啟動(dòng)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;
    #開(kāi)啟負(fù)載均衡,指向后臺(tái)tomcat集群
    upstream test {
        server 192.168.247.152:8080;
        server 192.168.247.153:8080;
        #開(kāi)啟健康檢測(cè)機(jī)制
        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; #設(shè)置域名
        #健康檢測(cè)界面
        location = /nstatus {
            check_status;
            access_log off;
            allow all;
            }
        #測(cè)試頁(yè)面 自己在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; 
           }
        }
}

啟動(dòng)Nginx 輸入健康檢測(cè)地址即可看到后臺(tái)tomcat狀態(tài)

安裝Redis 實(shí)現(xiàn)session共享

下載redis包官網(wǎng)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下會(huì)多出幾個(gè)文件

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

可手動(dòng)將其復(fù)制到/usr/local/bin目錄下停撞,也可執(zhí)行make install

此處選擇make install

make install

注意:若此時(shí)執(zhí)行redis-server –v (查看版本命令),若提示redis-server command not found悼瓮,則需要將/usr/local/bin目錄加到環(huán)境變量戈毒,如何添加,此處不做詳細(xì)介紹横堡,可查看修改/etc/profile副硅,(查看環(huán)境變量命令:echo $PATH)

redis安裝完畢

修改redis配置文件

創(chuàng)建redis目錄用以存放redis 日志 數(shù)據(jù)庫(kù) 進(jìn)程

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 #開(kāi)啟后臺(tái)進(jìn)程
pidfile /var/redis/run/6379.pid
logfile /var/redis/log/redis.log
dbfilename dump.rdb
dir /var/redis/data  #數(shù)據(jù)庫(kù)路徑 默認(rèn)是./
requirepass centos #設(shè)置密碼為centos
#bind 127.0.0.1  默認(rèn)是開(kāi)啟的,只允許本地登陸翅萤,所以恐疲,要不添加IP,要不給注釋了 

啟動(dòng)redis

redis-server /etc/redis.conf
ps -aux | grep redis
redis-cli    #客戶端連接套么,進(jìn)入redis

AUTH centos  #密碼認(rèn)證
SHUTDOWN
exit

service redis start

設(shè)置redis開(kāi)機(jī)啟動(dòng)

cp -p /usr/local/src/redis-stable/utils/redis_init_script /etc/init.d/redis
ll    #看有沒(méi)有執(zhí)行權(quán)限

修改腳本的pid,conf等路徑,添加開(kāi)機(jī)啟動(dòng)權(quán)限

#開(kāi)機(jī)啟動(dòng)
#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"
...
#如果是在生產(chǎn)環(huán)境培己,那么就規(guī)劃好端口等,盡量使用變量去實(shí)現(xiàn)胚泌,加以區(qū)分
比如
PIDFILE=/var/redis/run/${REDISPORT}.pid
CONF="/etc/redis_${REDISPORT}.conf"
service redis star | stop #等均可使用了省咨,不能使用就查看權(quán)限 ll
chkconfig redis on

192.168.254.152/153

安裝tomcat

tomcat 安裝依賴JAVA的JDK 所以判斷JDK是否安裝并進(jìn)行安裝

rpm -qa | grep java

刪除openjdk

rpm -e --nodeps java-1.7....... # -e 刪除 --nodeps強(qiáng)行刪除

下載 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  #不報(bào)錯(cuò)零蓉,能看版本,安裝成功

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

以及三個(gè)是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個(gè)插件  /usr/local/tomcat/lib
/usr/local/tomcat/bin/startup.sh

瀏覽器即可訪問(wèn)tomcat 默認(rèn)端口8080

tomcat配置

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

添加相應(yīng)權(quán)限 注穷缤!只可以本地訪問(wèn)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下的測(cè)試頁(yè)面 主要測(cè)試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共享保存設(shè)置

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"                       <!-- 存儲(chǔ)Session的Redis庫(kù)編號(hào) -->
    maxInactiveInterval="60"           <!-- Session失效的間隔(秒) -->
/>

重啟生效

如若出現(xiàn)500錯(cuò)誤 查看防火墻敌蜂,selinux,iptables等以及redis是否啟動(dòng)

完畢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末津肛,一起剝皮案震驚了整個(gè)濱河市章喉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌身坐,老刑警劉巖秸脱,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異部蛇,居然都是意外死亡摊唇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門涯鲁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)巷查,“玉大人嘹害,你說(shuō)我怎么就攤上這事∷北悖” “怎么了笔呀?”我有些...
    開(kāi)封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)髓需。 經(jīng)常有香客問(wèn)我许师,道長(zhǎng),這世上最難降的妖魔是什么僚匆? 我笑而不...
    開(kāi)封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任微渠,我火速辦了婚禮,結(jié)果婚禮上咧擂,老公的妹妹穿的比我還像新娘逞盆。我一直安慰自己,他們只是感情好松申,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布云芦。 她就那樣靜靜地躺著,像睡著了一般贸桶。 火紅的嫁衣襯著肌膚如雪舅逸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天皇筛,我揣著相機(jī)與錄音琉历,去河邊找鬼。 笑死水醋,一個(gè)胖子當(dāng)著我的面吹牛旗笔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拄踪,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蝇恶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了宫蛆?” 一聲冷哼從身側(cè)響起艘包,我...
    開(kāi)封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤的猛,失蹤者是張志新(化名)和其女友劉穎耀盗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體卦尊,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叛拷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岂却。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忿薇。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裙椭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出署浩,到底是詐尸還是另有隱情揉燃,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布筋栋,位于F島的核電站炊汤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏弊攘。R本人自食惡果不足惜抢腐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望襟交。 院中可真熱鬧迈倍,春花似錦、人聲如沸捣域。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)焕梅。三九已至提完,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丘侠,已是汗流浹背徒欣。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜗字,地道東北人打肝。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挪捕,于是被迫代替她去往敵國(guó)和親粗梭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容