Tomcat -- apache+tomcat集羣

主要參考了這篇文章
http://blog.csdn.net/flyliuweisky547/article/details/21293071?utm_source=tuicool&utm_medium=referral
這位博主在tomcat方面講得十分清楚,感謝該博主分享。
環境信息
操做系統:win7(64位)
tomcat版本:apache-tomcat-8.0.36-windows-x64.zip
apache版本:httpd-2.4.23-x64-vc14.zip
mod_jk版本:tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip
#1.下載如上所需軟件
到官網上下載如上軟件,tomcat和mod_jk直接解壓便可。
apache安裝詳見
http://www.javashuo.com/article/p-dgcbzwqh-bd.html
#2.部署tomcat集羣
##1.建立Tomcat-cluster目錄
輸入圖片說明
如上文件夾tomcat1與tomcat2下分別解壓了下載的tomcat。
##2.配置tomcat1
1.在E:\Tomcat-Cluster\tomcat1\apache-tomcat-8.0.36\webapps 目錄下建立文件夾TestCluster。
2.將ROOT文件夾下的WEB-INF文件夾拷貝到TestCluster下。
3.打開TestCluster\WEB-INF\web.xml,在</web-app>上面添加上<distributable/>。
4.在TestCluster文件夾建立index.jsp,作爲測試使用html

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
    <%@ page import="java.text.SimpleDateFormat"%>  
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <title>TestCluster</title>  
      </head>  
      <body>  
            Server Info:  
        <%  
          String dtm = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());  
          System.out.println("["+request.getLocalAddr()+":"+ request.getLocalPort()+"]" + dtm);  
          out.println("<br>["+request.getLocalAddr()+":" +request.getLocalPort()+"]" + dtm+"<br>");   
        %>  
        Session Info:  
        <%  
            session.setAttribute("name","dennisit");  
            System.out.println("[Session Info] Session ID:"+session.getId());  
            out.println("<br>[Session Info] Session ID:" + session.getId()+"<br>");  
        %>  
      </body>  
    </html>

5.修改tomcat1的server.xml文件(E:\Tomcat-Cluster\tomcat1\apache-tomcat-8.0.36\conf)
修改信息以下java

<Server port="7005" shutdown="SHUTDOWN">
<Connector port="7080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
<Connector port="7009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat1">

打開Cluster註釋web

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

##3.配置tomcat2
1.webapps 目錄下建立文件夾TestCluster。
二、三、4同tomcat1。
5.修改tomcat2配置信息
將800五、8080、8009改成900五、9090、9009。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat2">
#3.啓動tomcat集羣
雙擊E:\Tomcat-Cluster\tomcat1\apache-tomcat-8.0.36\bin\startup.bat
雙擊E:\Tomcat-Cluster\tomcat2\apache-tomcat-8.0.36\bin\startup.bat 有可能會出現閃退,請看我另外一篇解決閃退問題的文章
http://www.javashuo.com/article/p-rtvymsxp-cz.html
##4.測試
在瀏覽器輸入:
http://localhost:7080/TestCluster/index.jsp
便可訪問集羣下tomcat1節點
輸入圖片說明
在瀏覽器輸入:
http://localhost:9080/TestCluster/index.jsp
訪問集羣下tomcat2節點
輸入圖片說明
能夠發現,tomcat1與tomcat2兩個節點的session同樣。
自此,能夠實現tomcat集羣。
#3.整合apache與tomcat集羣
有兩種方式
1.apache自帶的mod_proxy_balancer
2.tomcat推薦的mod_jk
我這裏使用mod_jk方式
##1.下載mod_jk模塊
最開始已經下載好了
##2.解壓mod_jk模塊
解壓後可獲得mod_jk.so,將它拷貝到Apache24\modules目錄下。
##3.新建workers.properties
在Apache24\conf下新建workers.properties文件apache

#worker列表
worker.list=controller,Tomcat1,Tomcat2  
#========Tomcat1========  
worker.Tomcat1.port=7009  
worker.Tomcat1.host=localhost  
worker.Tomcat1.type=ajp13  
worker.Tomcat1.lbfactor=1  
#========Tomcat2========  
worker.Tomcat2.port=9009  
worker.Tomcat2.host=localhost  
worker.Tomcat2.type=ajp13  
worker.Tomcat2.lbfactor=1  
#========controller========  
worker.controller.type=lb  
worker.controller.balanced_workers=Tomcat1,Tomcat2  
worker.controller.sticky_session=false

##4.新建mod_jk.conf
在Apache24\conf下新建mod_jk.conf文件windows

#加載mod_jk模塊
LoadModule jk_module modules/mod_jk.so  
#配置mod_jk
JkWorkersFile conf/workers.properties  
#將apache下全部的請求都交給controller處理  
JkMount /* controller

##5.修改httpd.conf
在httpd.conf結尾處加上include conf/mod_jk.conf
#4測試
重啓apache服務器,在瀏覽器輸入http://localhost/TestCluster/index.jsp
兩次請求結果以下
輸入圖片說明
輸入圖片說明
能夠發現,兩次請求分別轉發給tomcat1與tomcat2了,並且兩個節點的session是同樣。
結尾:
1.apache和tomcat整合以後,apache是接收請求的入口,它根據設置的條件,決定將請求轉發給哪一個tomcat處理。
2.一般的應用場景,apache只處理靜態頁面,動態頁面會交給tomcat處理。瀏覽器