搭建Tomcat集群详解
?
一、為什么需要Tomcat集群
Tomcat的最大并發數是可以配置的,實際運用中,最大并發數與硬件性能和CPU數量都有很大關系的。更好的硬件,更多的處理器都會使Tomcat支持更多的并發。
Tomcat默認的HTTP實現是采用阻塞式的Socket通信,每個請求都需要創建一個線程處理,當一個進程有500個線程在跑的話,那性能已經是很低很低了。Tomcat 默認配置的最大請求數是150,也就是說同時支持150個并發。具體能承載多少并發,需要看硬件的配置,CPU 越多性能越高,分配給JVM的內存越多性能也就越高,但也會加重GC的負擔。當某個應用擁有 250 個以上并發的時候,應考慮應用服務器的集群。
操作系統對于進程中的線程數有一定的限制:
Windows 每個進程中的線程數不允許超過 2000
Linux 每個進程中的線程數不允許超過 1000
在Java中每開啟一個線程需要耗用1MB的JVM內存空間用于作為線程棧之用,此處也應考慮。
?
此外,為了實現服務器升級不影響用戶使用,有必要配置兩個tomcat在一個或多個服務器中。下面介紹下如何在一臺服務器中配置2個Tomcat。
?
二、部署集群項目
部署兩個Tomcat,注意端口號的問題,詳細的部署在這就不詳細說明。記錄這兩個Tomcat的訪問端口號,如訪問的端口號分別為8080、8081。
為了區分后面訪問到哪個tomcat,兩個tomcat項目首頁html的內容分別設置tomcat1、tomcat2。
關于一臺服務器如何配置多個tomcat可參考之前我寫過的一篇文章:
http://blog.csdn.net/tjcyjd/article/details/9307483
?
三、配置Nginx負載均衡
首先了解下nginx的一些知識,nginx模塊一般被分成三大類:handler、filter和upstream。前面的章節中,讀者已經了解了handler、filter。利用這兩類模塊,可以使nginx輕松完成任何單機工作。而我們下邊用到的upstream模塊,將使nginx跨越單機的限制,完成網絡數據的接收、處理和轉發。
數據轉發功能,為nginx提供了跨越單機的橫向處理能力,使nginx擺脫只能為終端節點提供單一功能的限制,而使它具備了網路應用級別的拆分、封裝和整合的戰略功能。在云模型大行其道的今天,數據轉發是nginx有能力構建一個網絡應用的關鍵組件。當然,鑒于開發成本的問題,一個網絡應用的關鍵組件一開始往往會采用高級編程語言開發。但是當系統到達一定規模,并且需要更重視性能的時候,為了達到所要求的性能目標,高級語言開發出的組件必須進行結構化修改。此時,對于修改代價而言,nginx的upstream模塊呈現出極大的吸引力,因為它天生就快。作為附帶,nginx的配置系統提供的層次化和松耦合使得系統的擴展性也達到比較高的程度。
從本質上說,upstream屬于handler,只是他不產生自己的內容,而是通過請求后端服務器得到內容,所以才稱為upstream(上游)。請求并取得響應內容的整個過程已經被封裝到nginx內部,所以upstream模塊只需要開發若干回調函數,完成構造請求和解析響應等具體的工作。
?
nginx.conf詳細配置如下:
?
upstream tomcatCluster {server localhost:8080 weight=10; ##weight配置權重,權重越高訪問這個tomcat的頻率就越高server localhost:8081 weight=20;}server {listen 80;server_name www.xxx.com;location = / {proxy_pass http://tomcatCluster/index.html;}location / {if ($host != 'www.xxx.com') {rewrite ^/(.*)$ http://tomcatCluster/index.html;}proxy_pass http://tomcatCluster;include proxy.conf;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;} }
四、測試
?
重啟Nginx
?
/usr/local/nginx/sbin/nginx -s reload?
?
瀏覽器輸入地址:
http://localhost/index.html
刷新幾遍發現,發現頁面有時候顯示tomcat1,有時候顯示tomcat2,出現的幾率分別為1/3,2/3,因為我們配置了權重值weight分別為10、20。
?
五、注意session問題
這里沒講到session問題,光是這樣配置,兩個tomcat的會話session肯定不一樣,所以還需要解決session共享問題,在此就不多說,可參考之前寫過的一篇文章:
http://blog.csdn.net/tjcyjd/article/details/78145669
?
總結
以上是生活随笔為你收集整理的搭建Tomcat集群详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 后疫情时代中国零售业转型之路
- 下一篇: 鸿蒙开发套件全面升级,助力鸿蒙生态蓬勃发