亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

征服 Nginx + Tomcat

系統 1807 0
2年前一直折騰Apache,現如今更習慣Nginx。 ?搭建網站又遇到2年前遇到的問題——Session同步。 ?(參考我以前的帖子—— 征服 Apache + Tomcat )只不過現今擔當負載均衡的Apache換成了Nginx! ?
今天簡要說明一下Nginx+Tomcat負載均衡實現, 重點介紹Nginx+Tomcat+Session共享實現 。?


相關內容:?
征服 Apache + SSL ?
征服 Apache + SVN ?
征服 Apache + SVN +? LDAP ?
征服 Apache + Tomcat ?
征服 Nginx ?
征服 Nginx + Tomcat ?


Nginx負載均衡,其實主要就是用upstream、server指令,再配以權重等等參數。如果為了讓nginx支持session共享,還需要額外增加一個模塊。?

一、Nginx負載均衡 ?
在http{...}中配置一個upstream{...},參考如下:?
引用

??? upstream tomcat {?
??????? server 10.11.155.26:8080;?
??????? server 10.11.155.41:8080;?
??? }?

接著修改location節點,配置代理:?
引用
location / {?
????? ...?
??????????? proxy_pass http://tomcat;?

????? ...?
}

當訪問根路徑時,會輪播路由到兩臺服務器上,至于后端服務器是tomcat還是jetty之類的,都無所謂,照葫蘆畫瓢就是了。 ?
當然,有的機器性能好,或者負載低,可以承擔高負荷訪問量,可以通過權重(weight),提升訪問頻率。數值越高,被分配到的請求數越多。?
server指令參數如下:?
  • weight——權重,數值越大,分得的請求數就越多,默認值為1。
  • max_fails——對訪問失敗的后端服務器嘗試訪問的次數。默認值為1,當設置為0時將關閉檢查。
  • fail_timeout——失效超時時間,當多次訪問失敗后,對該節點暫停訪問。
  • down——標記服務器為永久離線狀態,用于ip_hash指令。
  • backup——僅當非backup服務器全部宕機或繁忙時啟用。

例如,可以這樣配置:?
引用

??? upstream tomcat {?
??????? server 10.11.155.26:8080 weight=5;?
??????? server 10.11.155.41:8080 weight=10;?
??? }?

后者分得的請求數就會較高。?

二、Nginx+Tomcat+Session共享 ?
為了讓Nginx支持Tomcat的Session共享,需要對其升級,增加jvmroute模塊。?

1.下載 nginx-upstream-jvm-route 組件、對nginx源碼做補丁。 ?
我把nginx-upstream-jvm-route下載到了/opt/software路徑下。?
先切換到nginx源碼目錄下,執行:?
Shell代碼?? 收藏代碼
  1. patch?-p0?<?/opt/software/nginx_upstream_jvm_route/jvm_route.patch??

引用
patching file src/http/ngx_http_upstream.c?
Hunk #1 succeeded at 4095 (offset 358 lines).?
Hunk #3 succeeded at 4227 (offset 358 lines).?
Hunk #5 succeeded at 4326 (offset 358 lines).?
patching file src/http/ngx_http_upstream.h?
Hunk #1 succeeded at 90 (offset 5 lines).?
Hunk #3 succeeded at 118 (offset 5 lines).

說明補丁做好了! ?

2.升級nginx ?
先別急著折騰nginx-upstream-jvm-route,先看看nginx當時安裝時的參數:?
Shell代碼?? 收藏代碼
  1. nginx?-V??

引用
nginx version: nginx/1.2.0?
configure arguments: --prefix=/opt/servers/nginx --user=nginx --group=www --pid-path=/var/run/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-pcre=/opt/software/pcre-8.10 --with-zlib=/opt/software/zlib-1.2.5 --with-http_stub_status_module --with-http_realip_module --with-http_gzip_static_module

記得先備份nginx.conf! ?
使用追加參數(--add-module),增設nginx-upstream-jvm-route模塊, --add-module=/opt/software/nginx_upstream_jvm_route ,編譯安裝。?
Shell代碼?? 收藏代碼
  1. ./configure?--prefix=/opt/servers/nginx?--user=nginx?--group=www?--pid-path=/var/run/nginx.pid?--error-log-path=/var/log/nginx/error.log?--http-log-path=/var/log/nginx/access.log?--with-pcre=/opt/software/pcre- 8.10?--with-zlib=/opt/software/zlib- 1.2. 5?--with-http_stub_status_module?--with-http_realip_module?--with-http_gzip_static_module?--add-module=/opt/software/nginx_upstream_jvm_route?&&?make?&&?make?insatll??

如果沒有錯誤提示,nginx就成功升級了! ?

3.修改upstream配置 ?
要讓Nginx支持Tomcat的jvmRoute,并共享session,在upstream下作如下修改:?
引用

??? upstream tomcat {?
??????? server 10.11.155.26:8080 srun_id=tomcat1;?
??????? server 10.11.155.41:8080 srun_id=tomcat2;?

??????? jvm_route $cookie_JSESSIONID|sessionid reverse;?
??? }?

srun_id 跟tomcat配置有關。?

4.Tomcat集群配置(Tomcat6、7通用) ?
該配置參考 征服 Apache + Tomcat ,以下僅作簡要說明。?
a.修改server.xml?
找到 Engine 節點,并設置 jvmRoute ,這里指定 tomcat1 。?
Xml代碼?? 收藏代碼
  1. < Engine? name= "Catalina"? defaultHost= "localhost"? jvmRoute= "tomcat1" >??

可以直接粘貼以下代碼,并對應修改 Receiver 節點中的 address 屬性,指向本機:?
Xml代碼?? 收藏代碼
  1. < Cluster? className= "org.apache.catalina.ha.tcp.SimpleTcpCluster"??
  2. ?????????? channelSendOptions= "8" >??
  3. ???? < Manager? className= "org.apache.catalina.ha.session.DeltaManager"??
  4. ????????????? expireSessionsOnShutdown= "false"??
  5. ????????????? notifyListenersOnReplication= "true" />??
  6. ???? < Channel? className= "org.apache.catalina.tribes.group.GroupChannel" >??
  7. ??????? < Membership? className= "org.apache.catalina.tribes.membership.McastService"??
  8. ??????????????? address= "224.0.0.0"??
  9. ??????????????? port= "45564"??
  10. ??????????????? frequency= "500"??
  11. ??????????????? dropTime= "3000" />??
  12. ??????? < Receiver? className= "org.apache.catalina.tribes.transport.nio.NioReceiver"??
  13. ???????????????? address= "10.11.155.26"??
  14. ???????????????? port= "4000"??
  15. ???????????????? autoBind= "100"??
  16. ???????????????? selectorTimeout= "5000"??
  17. ???????????????? maxThreads= "6" />??
  18. ??????? < Sender? className= "org.apache.catalina.tribes.transport.ReplicationTransmitter" >??
  19. ??????????? < Transport? className= "org.apache.catalina.tribes.transport.nio.PooledParallelSender" />??
  20. ??????? </ Sender >??
  21. ??????? < Interceptor? className= "org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />??
  22. ??????? < Interceptor? className= "org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />??
  23. ???? </ Channel >??
  24. ???? < Valve? className= "org.apache.catalina.ha.tcp.ReplicationValve"??
  25. ??????????? filter= ".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" />??
  26. ???? < Valve? className= "org.apache.catalina.ha.session.JvmRouteBinderValve" />??
  27. ???? < ClusterListener? className= "org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener" />??
  28. ???? < ClusterListener? className= "org.apache.catalina.ha.session.ClusterSessionListener" />??
  29. ?? </ Cluster >??

注:如果本機上有多個tomcat并存, Receiver 節點中的 port 屬性,使其綁定在不同的端口上。?
Membership 節點 address 屬性配置多播地址,可使用 route 命令將其打開,參考如下:?
Shell代碼?? 收藏代碼
  1. route?add?-net? 224.0. 0.0/ 8?dev?eth0???

b.修改應用的 web.xml ?
在web.xml末尾增加 <distributable /> ?
Xml代碼?? 收藏代碼
  1. < web-app >??
  2. ...??
  3. ???????? < distributable? />???
  4. </ web-app >??


至此,已完成所有配置,重啟tomcat、nginx,訪問服務測試頁面(見附件),強行關閉其中一臺tomcat,令請求轉向另一個臺tomcat,測試session是否同步:?
征服 Nginx + Tomcat ?
session共享成功,非粘性實現。 ?


相關內容:?
征服 Apache + SSL ?
征服 Apache + SVN ?
征服 Apache + SVN +? LDAP ?
征服 Apache + Tomcat ?
征服 Nginx ?
征服 Nginx + Tomcat ?

征服 Nginx + Tomcat


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久最近最新中文字幕大全 | 国产精品成人久久久 | 亚洲欧美另类专区 | 99热这里只有免费国产精品 | 男人边吃奶边爱边做视频日韩 | 精品久久香蕉国产线看观看亚洲 | 香港三级做爰大爽视频 | 日本不卡免费高清视频 | 伊人久久婷婷丁香六月综合基地 | 狠狠色噜噜狠狠狠狠97 | 亚洲人成依人成综合网 | 中文字幕一区二区三区永久 | 国产日韩欧美一区二区 | 国产网红在线观看 | 午夜精品久久久久 | 欧美精品九九99久久在观看 | 久久久久久亚洲精品 | 国产一区二区三区欧美精品 | 国产真实偷人视频在线播放 | 欧美特黄一级大黄录像 | 妖精视频永久在线入口 | 狠狠操女人 | b毛片| 久久久久国产精品免费网站 | 超碰最新上传 | 四虎国产精品成人永久免费影视 | 久久成年人视频 | 久久性视频 | 伊人久久综合 | 综合激情婷婷 | 精品国产三级 | 亚洲国产精品久久久久婷婷老年 | 97午夜理伦片在线影院 | 久久成人精品免费播放 | 一本伊大人香蕉高清在线观看 | 欧美一级毛片免费观看视频 | 奇米四色影视 | 亚洲经典在线中文字幕 | 黄 色 三 级 网站 | 精品亚洲国产国拍 | 日韩高清毛片 |