最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx 連接tomcat時(shí)會(huì)話粘性問題分析及解決方法

 更新時(shí)間:2015年10月15日 10:54:05   投稿:mrr  
這篇文章主要介紹了Nginx 連接tomcat時(shí)會(huì)話粘性問題分析及解決方法的相關(guān)資料,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在多臺(tái)后臺(tái)服務(wù)器的環(huán)境下,我們?yōu)榱舜_保一個(gè)客戶只和一臺(tái)服務(wù)器通信,我們勢(shì)必使用長(zhǎng)連接。使用什么方式來(lái)實(shí)現(xiàn)這種連接呢,常見的有使用nginx自帶的ip_hash來(lái)做,我想這絕對(duì)不是一個(gè)好的辦法,如果前端是CDN,或者說一個(gè)局域網(wǎng)的客戶同時(shí)訪問服務(wù)器,導(dǎo)致出現(xiàn)服務(wù)器分配不均衡,以及不能保證每次訪問都粘滯在同一臺(tái)服務(wù)器。如果基于cookie會(huì)是一種什么情形,想想看, 每臺(tái)電腦都會(huì)有不同的cookie,在保持長(zhǎng)連接的同時(shí)還保證了服務(wù)器的壓力均衡。

問題分析:

1. 一開始請(qǐng)求過來(lái),沒有帶session信息,jvm_route就根據(jù)round robin的方法,發(fā)到一臺(tái)tomcat上面。

2. tomcat添加上session 信息,并返回給客戶。

3. 用戶再此請(qǐng)求,jvm_route看到session中有后端服務(wù)器的名稱,它就把請(qǐng)求轉(zhuǎn)到對(duì)應(yīng)的服務(wù)器上。

暫時(shí)jvm_route模塊還不支持默認(rèn)fair的模式。jvm_route的工作模式和fair是沖突的。對(duì)于某個(gè)特定用戶,當(dāng)一直為他服務(wù)的 tomcat宕機(jī)后,默認(rèn)情況下它會(huì)重試max_fails的次數(shù),如果還是失敗,就重新啟用round robin的方式,而這種情況下就會(huì)導(dǎo)致用戶的session丟失。

總的說來(lái),jvm_route是通過session_cookie這種方式來(lái)實(shí)現(xiàn)session粘性,將特定會(huì)話附屬到特定tomcat上,從而解決session不同步問題,但無(wú)法解決宕機(jī)后會(huì)話轉(zhuǎn)移問題。
假如沒有這個(gè)jvm_route,用戶再請(qǐng)求的時(shí)候,由于沒有session信息,nignx就會(huì)再次隨機(jī)的發(fā)送請(qǐng)求到后端的tomcat服務(wù)器,這種情況,對(duì)于普通的頁(yè)面訪問是沒有問題的。對(duì)于帶有登錄驗(yàn)證信息的請(qǐng)求,其結(jié)果就是永遠(yuǎn)登錄不了應(yīng)用服務(wù)器。

這個(gè)模塊通過session cookie的方式來(lái)獲取session粘性。如果在cookie和url中并沒有session,則這只是個(gè)簡(jiǎn)單的round-robin 負(fù)載均衡。

要解決以上類似的問題,從網(wǎng)上查了下,大致有如下幾種方式:

1)ip_hash(不推薦使用)

 nginx中的ip_hash技術(shù)能夠?qū)⒛硞€(gè)ip的請(qǐng)求定向到同一臺(tái)后端,這樣一來(lái)這個(gè)ip下的某個(gè)客戶端和某個(gè)后端就能建立起穩(wěn)固的session,ip_hash是在upstream配置中定義的: 

 upstream backend {  
  server 192.168.12.10:8080 ;  
  server 192.168.12.11:9090 ;  
  ip_hash;  
  } 

不推薦使用的原因如下:

  1/ nginx不是最前端的服務(wù)器。

   ip_hash要求nginx一定是最前端的服務(wù)器,否則nginx得不到正確ip,就不能根據(jù)ip作hash。譬如使用的是squid為最前端,那么nginx取ip時(shí)只能得到squid的服務(wù)器ip地址,用這個(gè)地址來(lái)作分流是肯定錯(cuò)亂的。

       2/ nginx的后端還有其它方式的負(fù)載均衡。

   假如nginx后端又有其它負(fù)載均衡,將請(qǐng)求又通過另外的方式分流了,那么某個(gè)客戶端的請(qǐng)求肯定不能定位到同一臺(tái)session應(yīng)用服務(wù)器上。

   3/ 多個(gè)外網(wǎng)出口。

    很多公司上網(wǎng)有多個(gè)出口,多個(gè)ip地址,用戶訪問互聯(lián)網(wǎng)時(shí)候自動(dòng)切換ip。而且這種情況不在少數(shù)。使用 ip_hash 的話對(duì)這種情況的用戶無(wú)效,無(wú)法將某個(gè)用戶綁定在固定的tomcat上 。

2)nginx_upstream_jvm_route(nginx擴(kuò)展,推薦使用) ——我試了下1.8版本的,發(fā)現(xiàn)新的版本已經(jīng)不支持了?。?!擦。。不過1.4.2的版本據(jù)說是支持的。

nginx_upstream_jvm_route 是一個(gè)nginx的擴(kuò)展模塊,用來(lái)實(shí)現(xiàn)基于 Cookie 的 Session Sticky 的功能。

簡(jiǎn)單來(lái)說,它是基于cookie中的JSESSIONID來(lái)決定將請(qǐng)求發(fā)送給后端的哪個(gè)server,nginx_upstream_jvm_route會(huì)在用戶第一次請(qǐng)求后端server時(shí),將響應(yīng)的server標(biāo)識(shí)綁定到cookie中的JSESSIONID中,從而當(dāng)用戶發(fā)起下一次請(qǐng)求時(shí),nginx會(huì)根據(jù)JSESSIONID來(lái)決定由哪個(gè)后端server來(lái)處理。

1/ nginx_upstream_jvm_route安裝

下載地址(svn):http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/

假設(shè)nginx_upstream_jvm_route下載后的路徑為/usr/local/nginx_upstream_jvm_route,

(1)進(jìn)入nginx源碼路徑

patch -p0 < /usr/local/nginx_upstream_jvm_route/jvm_route.patch

(2)./configure  --with-http_stub_status_module --with-http_ssl_module --prefix=/usr/local/nginx --with-

pcre=/usr/local/pcre-8.33 --add-module=/usr/local/nginx_upstream_jvm_route

(3)make & make install

2/ nginx配置

upstream tomcats_jvm_route 
    { 
       # ip_hash;  
       server  192.168.33.10:8090 srun_id=tomcat01;  
       server  192.168.33.11:8090 srun_id=tomcat02; 
       jvm_route $cookie_JSESSIONID|sessionid reverse; 
    } 

 3/ tomcat配置

修改192.168.33.10:8090tomcat的server.xml,

將 

<Engine name="Catalina" defaultHost="localhost" > 

修改為:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat01"> 

 同理,在192.168.33.11:8090server.xml中增加jvmRoute="tomcat02"。

4/ 測(cè)試

啟動(dòng)tomcat和nginx,訪問nginx代理,使用Google瀏覽器,F(xiàn)12,查看cookie中的JSESSIONID,
形如:ABCD123456OIUH897SDFSDF.tomcat01 ,刷新也不會(huì)變化

3)基于cookie的Nginx Sticky模塊

總結(jié)

以上所述是小編給大家介紹的Nginx 連接tomcat時(shí)會(huì)話粘性問題分析及解決方法,希望對(duì)大家有所幫助,如果大家有 任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • Nginx的一些常用配置匯總

    Nginx的一些常用配置匯總

    nginx配置說簡(jiǎn)單也簡(jiǎn)單,說復(fù)雜也復(fù)雜,入門簡(jiǎn)單,精通難,下面這篇文章主要給大家介紹了關(guān)于Nginx的一些常用配置,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • nginx如何將http訪問的網(wǎng)站改成https訪問

    nginx如何將http訪問的網(wǎng)站改成https訪問

    這篇文章主要介紹了nginx如何將http訪問的網(wǎng)站改成https訪問,幫助大家更好的理解和使用nginx,感興趣的朋友可以了解下
    2021-02-02
  • nginx proxy_pass反向代理配置中url后加不加/的區(qū)別介紹

    nginx proxy_pass反向代理配置中url后加不加/的區(qū)別介紹

    這篇文章主要給大家介紹了關(guān)于nginx proxy_pass反向代理配置中url后加不加/的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 詳解常用的nginx rewrite重寫規(guī)則

    詳解常用的nginx rewrite重寫規(guī)則

    這篇文章主要介紹了詳解常用的nginx rewrite重寫規(guī)則,Nginx的rewrite功能是使用nginx提供的全局變量或自己設(shè)置的變量,結(jié)合正則表達(dá)式和標(biāo)志位實(shí)現(xiàn)url重寫以及重定向。感興趣的可以一起來(lái)了解一下
    2019-03-03
  • nginx實(shí)現(xiàn)IP地址透?jìng)鞯氖纠a

    nginx實(shí)現(xiàn)IP地址透?jìng)鞯氖纠a

    默認(rèn)后端服務(wù)器只能看到是前端nginx調(diào)度器訪問的本機(jī),本文主要介紹了nginx實(shí)現(xiàn)IP地址透?jìng)鞯氖纠a,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Windows下使用Nginx+Tomcat做負(fù)載均衡的完整步驟

    Windows下使用Nginx+Tomcat做負(fù)載均衡的完整步驟

    這篇文章主要介紹了Windows下使用Nginx+Tomcat做負(fù)載均衡的完整步驟,幫助大家搭建負(fù)載均衡集群,感興趣的朋友可以了解下
    2020-09-09
  • Nginx日志按日期切割詳解(按天切割)

    Nginx日志按日期切割詳解(按天切割)

    由于nginx的日志本身只是支持按照server_name或者大小進(jìn)行劃分,對(duì)于習(xí)慣了apache的按照一個(gè)網(wǎng)站每天一個(gè)日志的我來(lái)說是不可以接受的,所以就實(shí)現(xiàn)了按天切割的功能,這篇文章主要介紹了關(guān)于Nginx日志按日期切割的相關(guān)資料,需要的朋友可以參考下。
    2017-03-03
  • 解決nginx:[emerg]?getpwnam(“nginx“)failed報(bào)錯(cuò)問題

    解決nginx:[emerg]?getpwnam(“nginx“)failed報(bào)錯(cuò)問題

    編譯安裝nginx時(shí),啟動(dòng)服務(wù)報(bào)錯(cuò)nginx:[emerg]getpwnam("nginx")failed,原因是沒有為nginx創(chuàng)建用戶,解決方法是創(chuàng)建一個(gè)nginx用戶,該用戶是你在編譯時(shí)指定的用戶
    2025-02-02
  • 為高負(fù)載網(wǎng)絡(luò)優(yōu)化Nginx和Node.js的方法

    為高負(fù)載網(wǎng)絡(luò)優(yōu)化Nginx和Node.js的方法

    如果不先對(duì)Nginx和Node.js的底層傳輸機(jī)制有所了解,并進(jìn)行針對(duì)性優(yōu)化,可能對(duì)兩者再細(xì)致的調(diào)優(yōu)也會(huì)徒勞無(wú)功。一般情況下,Nginx通過TCP socket來(lái)連接客戶端與上游應(yīng)用
    2013-02-02
  • CentOS 7下安裝Nginx服務(wù)器

    CentOS 7下安裝Nginx服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了CentOS 7下安裝Nginx服務(wù)器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評(píng)論

定远县| 赣榆县| 上虞市| 南宫市| 泸溪县| 通化县| 石楼县| 德清县| 吴忠市| 通道| 汪清县| 高青县| 额尔古纳市| 抚远县| 长丰县| 融水| 山阳县| 横山县| 吉林市| 乌兰浩特市| 平舆县| 务川| 扶风县| 长顺县| 巴里| 日喀则市| 肇东市| 汝城县| 皋兰县| 醴陵市| 英超| 台前县| 宝丰县| 仪征市| 海原县| 东兴市| 蒙阴县| 女性| 迁西县| 安岳县| 平湖市|