[英]Tomcat load balancer solutions
我正在尋找與 Tomcat 一起使用的良好負載平衡器。 我們的應用程序不會在會話上下文中存儲任何內容,因此為同一用戶重定向到同一服務器並不重要。 我只是想要一些可以以循環方式或基於每個服務器的獨立負載對請求進行排隊的東西。 我還希望能夠將應用程序服務器添加到可用於處理請求的應用程序服務器中,而無需重新啟動負載平衡器。 如果這很重要,我們將在 linux 上運行該應用程序。
如果您只需要一個 linux 上的軟件負載平衡器,請使用 Apache Webserver2、Mod-Jk 和 Tomcat 集群:
在您的網絡服務器上:
安裝 apache2 和 modjk:
sudo apt-get install apache2 libapache2-mod-jk sudo a2enmod jk
創建一個可用於 apache2 的workers.properties
文件。 在某些情況下,它會自動在您的 /etc/apache2 目錄中創建。 該文件包含 Tomcat 服務器的 lb 配置、節點名稱、ips 和端口,即:
worker.list=balancer,lbstats #node1 worker.node1.type=ajp13 worker.node1.host=YOUR_TOMCAT-NODE-IP worker.node1.port=YOUR_TOMCAT-NODE-AJP-PORT worker.node1.lbfactor=10 #more nodes here ... (change name in between) #lb config worker.balancer.type=lb #turn off sticky session worker.balancer.sticky_session=0 #add all defined node names to this list (node1, node2, ...): worker.balancer.balance_workers=node1 #lb status information (optional) worker.lbstats.type=status
如果沒有自動創建,請在 apache2 配置文件中創建一個 Mod-Jk 部分。
JkWorkersFile /etc/apache2/workers.properties JkLogFile /var/log/apache2/mod_jk.log JkShmFile /tmp/jk-runtime-status JkLogLevel info
將您的應用程序掛載到負載均衡器(apache2 配置文件):
JkMount /My-Java-App-Name balancer JkMount /My-Java-App-Name/* balancer JkMount /modjkstatus lbstats
在您的 Tomcat 服務器上:
安裝 tomcat(使用 tarball 包,恕我直言,比 apt verison 好得多)。 更改 server.xml:
禁用server.xml
的 http 連接器(通過注釋掉它們)。
啟用 AJP/1.3 連接器並為此節點設置您在 workers.properties 中定義的端口。
將具有正確節點名稱的 jvmRoute 添加到“Engine”元素:
<Engine jvmRoute="node1" ...
為最簡單的配置添加一個“集群”元素
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
將您的應用程序部署到所有 tomcat,並將可distributable
元素添加到您的應用程序 web.xml。
<distributable/>
確保網絡服務器可以訪問您的 tomcat 服務器上的 ajp 端口,而其他任何人都不能。
一個接一個地啟動 webserver 和 tomcats 並檢查日志(/var/log/apache2/mod_jk.log,也是)。
訪問您的應用程序: http : //mywebserver.com/MyApp
檢查(並拒絕訪問)lb 狀態頁面http://mywebserver.com/modjkstatus
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.