Apache+Tomcat集羣部署,session共享實現

1 軟件環境 1.1 Windows64位操做系統。 1.2 Apache Http Server 2.4.25 Windows 64位版本 1.3 Tomcat 7 64位版本。 1.4 Apache mod_jk.so Windows 64位版本。 2 軟件安裝配置 2.1 Apache Http Server&mod_jk配置。  解壓軟件包。  在apache安裝目錄下conf目錄中找到http.conf,找到配置中的根路徑參數,進行修改,SRVROOT後面的值修改成apache的安裝路徑或者其餘你想要的設置的路徑。css

Define SRVROOT "D:/workgroup/tomcats/apache/Apache24"
ServerRoot "${SRVROOT}"

監聽端口Listen 修改成你想要的端口,默認80,後期訪問系統使用。保證端口未被佔用。  將mod_jk.so拷貝到Apache安裝路徑的modules文件夾下  在apache安裝目錄下conf目錄中找到http.conf,在文件最後加上 include conf/mod_jk.conf  http.conf 同目錄下新建mod_jk.conf文件,添加內容以下:html

#指定模塊路徑
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路徑
JkWorkersFile conf/workers.properties
#指定哪些請求交給tomcat處理,"controller"爲在workers.propertise裏指定的負載分配控制器名
JkMount /* controller

#指定jk的日誌輸出文件
JkLogFile logs/mod_jk.log
#指定日誌級別,我這裏設置的警告
JkLogLevel warn
#包含標準的mod_jk行爲 (默認)
#info
#包含錯誤信息
#error
#用來配置log文件的日期/時間格式. 使用strftime()的格式化字符串,默認是[%a %b %d %H:%M:%S %Y]
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"    
#Options Description(選項的說明)
# %b 發送的字節, 不包括 HTTP headers (CLF format)
# %B 發送的字節, 不包括 HTTP headers
# %H 協議
# %m 請求方式(get/post)
# %p 服務器響應請求的規範端口.
# %q 查詢字符串 (若是存在以?開頭,不然是空串)
# %r 請求的第一行.
# %s HTTP狀態碼
# %T 請求間隔, 處理請求耗費的時間 秒.微秒
# %U 請求的url路徑,不包含查詢字符串.
# %v 響應請求的規範服務器名字
# %V 根據UseCanonicalName設置的服務器名字.
# %w Tomcat worker 名字
#JkRequestLogFormat 設置我的用戶請求的log格式.
JkRequestLogFormat "%w %V %T"

 在http.conf同目錄下新建 workers.properties文件,內容以下:web

#這裏能夠配置任意多個Tomcat,此處配置了2個Tomat服務器.
#host和port根據本身實際配置.實例配置的是本機兩個tomcat,分別使用不一樣的端口.避免衝突
#若是Tomcat再也不同一機器上,不必改端口的。
#server 列表
worker.list=controller,status,tomcat1,tomcat2 
#========tomcat1========
worker.tomcat1.port=8009        #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat1.host=127.0.0.1        #tomcat的主機地址,如不爲本機,請填寫ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1  #server的加權比重,值越高,分得的請求越多
#========tomcat2========
worker.tomcat2.port=9009        #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat2.host=127.0.0.1        #tomcat的主機地址,如不爲本機,請填寫ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=2        #server的加權比重,值越高,分得的請求越多 
#========controller,負載均衡控制器========
worker.controller.type=lb
#指定此負載平衡器負責的Tomcat應用節點。
worker.controller.balance_workers=tomcat1,tomcat2   #指定分擔請求的tomcat
#此處指定集羣是否須要會話複製,若是設爲true,則代表爲會話粘性,不進行會話複製,當某用戶的請求第一次分發到哪臺
#Tomcat後,後繼的請求會一直分發到此Tomcat服務器上處理;若是設爲false,則代表需求會話複製。
worker.controller.sticky_session=false
#描述是用於httpd自身狀態監控的status
worker.status.type=status

 使用Windows命令行以管理員身份進入Apache程序的文件夾下的bin文件夾,輸入httpd -k install,完成Apache服務的安裝。  而後雙擊bin目錄下的ApacheMonitor.exe,點擊右邊的start啓動服務器,若是正常,以下圖: 這裏寫圖片描述  若啓動失敗,經過查看Windows日誌解決 右鍵 計算機,點擊管理->系統工具->時間查看器->Windows日誌->應用程序,顯示以下: 這裏寫圖片描述 2.2 Tomcat 配置。  修改集羣下的每一個Tomcat的Server.xml文件 一、定義一個AJP 1.3 同一主機上的tomcat,各個鏈接端口不能相同(多個主機之間不限制),默認值爲8009。apache

<Connector port="8009 " protocol="AJP/1.3" redirectPort="8443" />

二、增長jvmRoute的值,保證同workers.properties裏邊配置的節點值一致。tomcat

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

三、開啓集羣配置。服務器

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
              managerClassName="org.apache.catalina.ha.session.DeltaManager"
                 expireSessionsOnShutdown="false"
                 useDirtyFlag="true"
                 notifyListenersOnReplication="true">
            <Membership
                className="org.apache.catalina.ha.mcast.McastService"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>
            <Receiver
                className="org.apache.catalina.ha.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>
            <Sender
                className="org.apache.catalina.ha.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="15000"
                waitForAck="true"/>
            <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                   filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
            <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>
            <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>

2.3 集羣環境實現session共享配置  在集羣中的每一個項目的web.xml中增長以下代碼:session

<distributable/>

須要注意的是,這樣作之後存入session的對象必須爲序列化的對象。 http://blog.csdn.net/bingge1022/article/details/73277201負載均衡

相關文章
相關標籤/搜索