nginx+tomcat+redis負(fù)載均衡及session共享

在網(wǎng)上google好多文章帐我,好多文章不是缺這就是缺那坎炼,最終還是順利搞定,在之前一個(gè)項(xiàng)目上測試成功拦键。親自動(dòng)手嘗試過谣光,對這套架構(gòu)才能更加了解,并遇到一些小坑芬为,特以此文記錄萄金。

一、安裝nginx

創(chuàng)建安裝目錄:mkdir /usr/local/soft && cd /usr/local/soft
命令下載Nginx壓縮包:wget http://nginx.org/download/nginx-1.10.3.tar.gz
解壓壓縮包:tar zxvf nginx-1.10.3.tar.gz
進(jìn)入安裝目錄: cd /usr/local/nginx-1.10.3
嘗試安裝:./configure

在最后提示:

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

Nginx共依賴以下三個(gè)包:
1.gzip 模塊需要 zlib 庫 ( 下載: http://www.zlib.net/ )
2.rewrite 模塊需要 pcre 庫 ( 下載: http://www.pcre.org/ )
3.ssl 功能需要 openssl 庫 ( 下載: http://www.openssl.org/ )

依賴包安裝順序依次為:openssl碳柱、zlib捡絮、pcre, 最后安裝Nginx包
1)下載并安裝openssl

wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
解壓壓縮包:tar zxvf openssl-1.0.1t.tar.gz
安裝:cd openssl-1.0.1t && ./config && make && make install

2)下載并安裝zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
解壓:tar zxvf zlib-1.2.8.tar.gz 
安裝:cd zlib-1.2.8/ && ./configure && make && make install

3)下載并安裝PCRE

wget https://ftp.pcre.org/pub/pcre/pcre-8.37.tar.gz
解壓:tar zxvf pcre-8.37.tar.gz
安裝:cd pcre-8.37/ && ./configure && make && make install

4)再次嘗試安裝Nginx

安裝命令:cd nginx-1.10.3/ && ./configure && make && make install

5)測試開啟Nginx

嘗試啟動(dòng):cd /usr/local/nginx/sbin/ && ./nginx
搜索該文件:whereis libpcre.so.1
提示:libpcre.so: /lib64/libpcre.so.0 /usr/local/lib/libpcre.so /usr/local/lib/libpcre.so.1
 或 libpcre.so: /usr/local/lib/libpcre.so.1 /usr/local/lib/libpcre.so
執(zhí)行:ln -s /usr/local/lib/libpcre.so.1 /lib64
 或:ln -s /usr/local/lib/libpcre.so.1 /lib
再次嘗試啟動(dòng):./nginx

打開瀏覽器,顯示如下則成功莲镣。

welcome.png

二福稳、安裝redis

1)安裝

下載:wget http://download.redis.io/releases/redis-3.2.1.tar.gz
tar xzf redis-3.2.1.tar.gz
cd redis-3.2.1
make && make install

完成后啟動(dòng)redis服務(wù)

redis-server

2)修改配置文件
redis.conf配置文件修改,先復(fù)制一份。

cp redis.conf /usr/local/redis.conf

redis.conf文件

protected-mode yes修改為no
daemonize no 修改為yes
#屏蔽bind信息
#bind 127.0.0.1

3)測試
啟動(dòng)指定配置文件

redis-server /usr/local/redis.conf

客戶端訪問

$ redis-cli   
127.0.0.1:6379> exit

4)開放端口
配置好后瑞侮,需要開放redis端口6379

iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

保存規(guī)則

service iptables save

重啟防火墻

service iptables restart

三的圆、配置tomcat基于redis的session共享

1)配置第三方類庫,支持session共享
準(zhǔn)備的包
commons-pool-1.6.jar半火,(http://commons.apache.org/proper/commons-pool/download_pool.cgi
tomcat-redis-session-manager-1.2-tomcat-7越妈,(https://github.com/jcoleman/tomcat-redis-session-manager/downloads
jedis-2.1.0.jar(http://central.maven.org/maven2/redis/clients/jedis/2.1.0/jedis-2.1.0.jar

將這個(gè)三個(gè)包放入tomcat的/lib中

修改context.xml
新增redis session管理第三方支持

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

2)配置跨域訪問
準(zhǔn)備包:
java-property-utils-1.10.jar
cors-filter-2.5.jar

修改web.xml,新增如下配置钮糖。(web.xml可為具體項(xiàng)目的web.xml梅掠。也可以為tomcat/conf/web.xml,二者的作用范圍不同)

<filter>  
  <filter-name>CORS</filter-name>  
  <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>  
  <init-param>  
      <param-name>cors.allowOrigin</param-name>  
      <param-value>*</param-value>  
  </init-param>  
  <init-param>  
      <param-name>cors.supportedMethods</param-name>  
      <param-value>GET, POST, HEAD, PUT, DELETE</param-value>  
  </init-param>  
  <init-param>  
      <param-name>cors.supportedHeaders</param-name>  
      <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified,app_key</param-value>  
  </init-param>  
  <init-param>  
      <param-name>cors.exposedHeaders</param-name>  
      <param-value>Set-Cookie</param-value>  
  </init-param>  
  <init-param>  
      <param-name>cors.supportsCredentials</param-name>  
      <param-value>true</param-value>  
  </init-param>  
  </filter>  
  <filter-mapping>  
      <filter-name>CORS</filter-name>  
      <url-pattern>/*</url-pattern>  
  </filter-mapping>

前端需要修改

var utils = angular.module('Utils', []);    
    utils.config(['$httpProvider', config]);    
    function config($httpProvider) {    
            $httpProvider.defaults.withCredentials = true;    
    }  

四店归、配置nginx負(fù)載均衡

部署圖:

部署圖.png

修改nginx配置文件
在http{ }內(nèi)新增

http {
    include       mime.types;
    default_type  application/octet-stream;
    #Tomcat
    upstream gs {
     #server 192.168.110.238:9080 max_fails=1 fail_timeout=10s;
     server 192.168.110.250:9080 max_fails=1 fail_timeout=10s;
     server 192.168.110.151:8080 max_fails=1 fail_timeout=10s;
    }  

    location ~ \.(do|jsp)$ {#/do,jsp結(jié)尾都轉(zhuǎn)發(fā)到tomcat集群
        proxy_pass http://gs;
        proxy_redirect off;
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For
        $proxy_add_x_forwarded_for;
    }

    location /webapp{
        root  /html;#/html為前端工程根目錄
        index index.html index.htm;
    }

    location /arcgis {/arcgis
        root /html;
    }
}

重啟nginx:

/usr/local/nginx/sbin/nginx -s reload

五阎抒、注意

1、Tomcat里面web.xml的session-timeout不能設(shè)為-1消痛,不然session保存到redis會(huì)馬上失效且叁,不能實(shí)現(xiàn)session共享。
2秩伞、在tomcat/conf中修改了配置文件逞带,但是還是用eclipse啟動(dòng)的tomcat欺矫,會(huì)出現(xiàn)修改配置文件被沖掉的情況,可以
a展氓、不在eclipse中啟動(dòng)
b穆趴、在eclipse,server工程中修改配置文件

3带饱、存放到session里面的對象毡代,必須進(jìn)行序列化,實(shí)現(xiàn)Serializable接口勺疼,不然保存不到redis中去教寂。

4、后續(xù)需要優(yōu)化的是nginx,redis注冊服務(wù)执庐,和nginx的Index頁面配置等酪耕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市轨淌,隨后出現(xiàn)的幾起案子迂烁,更是在濱河造成了極大的恐慌,老刑警劉巖递鹉,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盟步,死亡現(xiàn)場離奇詭異,居然都是意外死亡躏结,警方通過查閱死者的電腦和手機(jī)却盘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媳拴,“玉大人黄橘,你說我怎么就攤上這事∏龋” “怎么了塞关?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長子巾。 經(jīng)常有香客問我帆赢,道長,這世上最難降的妖魔是什么线梗? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任椰于,我火速辦了婚禮,結(jié)果婚禮上缠导,老公的妹妹穿的比我還像新娘。我一直安慰自己溉痢,他們只是感情好僻造,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布憋他。 她就那樣靜靜地躺著,像睡著了一般髓削。 火紅的嫁衣襯著肌膚如雪竹挡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天立膛,我揣著相機(jī)與錄音揪罕,去河邊找鬼。 笑死宝泵,一個(gè)胖子當(dāng)著我的面吹牛好啰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播儿奶,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼框往,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闯捎?” 一聲冷哼從身側(cè)響起椰弊,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓤鼻,沒想到半個(gè)月后秉版,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茬祷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年清焕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牲迫。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡耐朴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盹憎,到底是詐尸還是另有隱情筛峭,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布陪每,位于F島的核電站影晓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏檩禾。R本人自食惡果不足惜挂签,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盼产。 院中可真熱鬧饵婆,春花似錦、人聲如沸戏售。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搓译,卻和暖如春悲柱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背些己。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工豌鸡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人段标。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓涯冠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親怀樟。 傳聞我的和親對象是個(gè)殘疾皇子功偿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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