x一個網友的一個Tomcat下面跑了10幾個應用,經常造成內存溢出,希望能夠拆分到多個Tomcat裡面。從CSDN上面找到我。
現狀分析:
其每個應用都有各自的二級域名,能夠通過互聯網訪問
其有幾個應用放在一起,也就是只有部分應用希望運行在一個tomcat裡面
目前使用了jk的連接器
建議:
運行多個tomcatr實例,通過偵聽的端口進行區分。
對於每個tomcat,配置各自需要服務的虛擬主機
使用Apache的Proxy進行代理轉發,轉到對應的tomcat上面,重點在端口不同
取消jk連接,減少復雜度。雖然損失了一些Apache對靜態文本的性能,但整體看還是值得的
結果:
tomcat的server.xml裡面配置了各自的虛擬主機,比如 www.aaa.com 和 oa.aaa.com。第一個是主域名,第二個是二級域名。tomcat端口為8080。第二個tomcat配置了一個 sales.aaa.com 用來支持銷售,端口為8081。詳細的配置文件請參考tomcat的虛擬主機配置,這裡就不寫了。
測試各個虛擬主機的運行是否正常,使用 http:// oa.aaa.com:8080/ 這樣的方式進行測試。
apache的 httpd.conf配置
打開代理所需要的.so支持模塊,在httpd.conf裡面,取消下面四行的注釋:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
制作各自的虛擬主機
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.aaa.com
ProxyPass / http:// www.aaa.com:8080/
ProxyPassReverse / http:// www.aaa.com:8080/
</VirtualHost>
<VirtualHost *:80>
ServerName oa.aaa.com
ProxyPass / http:// oa.aaa.com:8080/
ProxyPassReverse / http:// oa.aaa.com:8080/
</VirtualHost>
<VirtualHost *:80>
ServerName sales.aaa.com
ProxyPass / http://sales.aaa.com:8081/
ProxyPassReverse / http://sales.aaa.com:8081/
</VirtualHost>