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

征服 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條評論
主站蜘蛛池模板: 精品综合久久久久久蜜月 | 停停色| 国产69精品久久久久777 | 999久久久国产 | 男人天堂网在线观看 | 亚洲欧美一区二区三区四区 | 国产精品热久久毛片 | 日韩成人在线视频 | 久久精品阿娇 | 大杳蕉伊人狼人久久一本线 | 中文字幕观看 | 五月激情婷婷综合 | 91精品国产91久久久久 | 亚洲欧美精品 | 国产人成精品综合欧美成人 | 亚洲图片在线观看 | 四虎免费在线视频 | 五月天婷五月天综合网在线 | 国产91在线chines看 | 美女毛片免费 | 一级毛片片 | 欧美vs日韩vs国产在线观看 | 亚洲精品第四页中文字幕 | 日韩欧美色综合 | 欧美日韩久久中文字幕 | 伊人伊色 | 91精品国产一区二区三区左线 | 综合色网站 | 久久美女网 | 成人一a毛片免费视频 | 亚洲综合色网 | 亚洲欧美综合区自拍另类 | 亚洲男人的天堂在线视频 | 欧洲视频一区 | 一级做a爱片久久蜜桃 | 色婷婷狠狠五月综合天色拍 | 欧洲黄色网| 中文字幕亚洲国产 | 视色视频在线 | 免费日韩在线视频 | 五月天久久综合 |