您好,登錄后才能下訂單哦!
1.系統(tǒng)結(jié)構(gòu)圖
2.準(zhǔn)備
主機(jī)tomcatA:關(guān)閉iptables
主機(jī)tomcatB:關(guān)閉iptables
主機(jī)apache:關(guān)閉iptables,關(guān)閉selinux
3.安裝軟件
安裝tomcat請參考:http://blog.csdn.net/kairui123/article/details/71247618
安裝apache:yum install httpd
4.配置appche
ProxyRequests off //是否開啟正向代理 <Location /lbstate> SetHandler balancer-manager </Location> <VirtualHost *:80> ServerAdmin www.creazyrui.com DocumentRoot /var/www/html ServerName www.creazyrui.com </VirtualHost>
參數(shù)解釋:
loadfactor:指定權(quán)重
route:指定主機(jī)
5.配置tomcat
<!-- You should set jvmRoute to support load-balancing via AJP ie : <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> --> <Engine name="Catalina" defaultHost="localhost"> <!-- You should set jvmRoute to support load-balancing via AJP ie : --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> <!-- <Engine name="Catalina" defaultHost="localhost"> --> 在最后追加一下內(nèi)容: <display-name> Welcome to tomcat </displaay-name> <description> welcome to tomcat </description> <distributable/> //這個元素告訴tomcat,這個時分布式的引用 //給集群中tomcat服務(wù)器全部配置以上文件并且修改jvmRoute=“”
6.添加頁面并測試
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test tomcat jiqun</title> <style type="text/css"> div{border: 1px dashed #0099cc;background-color: #D1EFF9;font-size:14px;margin:5px;padding:5px} </style> </head> <body> <div> <h4>當(dāng)前請求所在服務(wù)器信息:</h4> session標(biāo)識:<%=session.getId() %> <br/> IP地址:<%=java.net.InetAddress.getLocalHost() %><br/> 臨時目錄:<%=System.getProperty("java.io.tmpdir") %> </div> <div> <h4>session創(chuàng)建表單:</h4> <form action="index.jsp" method="POST"> session名稱:<input type="text" name="sessionName"> session值:<input type="text" name="sessionValue"> <input type="submit" value="創(chuàng)建session"> </form> </div> <!--根據(jù)session創(chuàng)建表單里床過來的參數(shù)創(chuàng)建session --> <% String sessionName=request.getParameter("sessionName"); String sessionValue=request.getParameter("sessionValue"); if(sessionName!=null && !sessionName.equals("")){ session.setAttribute(sessionName, sessionValue); } %> <div> <h4>當(dāng)前請求所在服務(wù)器的session列表</h4> <% Enumeration e=session.getAttributeNames(); while(e.hasMoreElements()){ String name=(String)e.nextElement(); String value=session.getAttribute(name).toString(); out.println(name+"= "+value+"<br>"); } %> </div> </body> </html>
測試結(jié)果:
7.tomcat的會話管理
1.StandarManager:默認(rèn)會話管理器,使用于單個運行單個運行狀態(tài)的tomcat實例管理,當(dāng)tomcat正常關(guān)閉時,會將session會話寫入一個以SESSION.ser文件,并在下次啟動時讀取 2.PersistentManager:當(dāng)會話長時間處于空閑狀態(tài)時將被寫入swap會話對象。 3.DeltaManager:用于tomcat集群會話管理通過session復(fù)制實現(xiàn)session共享,將改變的session同步與集群中的每一個節(jié)點 4.BackupManager:用于tomcat集群中,但與DeltaManager不同,他將會話只同步給集群中一個的節(jié)點,而不是所有。
定義StandarManager,PersistentManager會話管理器
1.定義StandarManager會話管理器,默認(rèn)使用 <Manage className="org.apache.catalina.session.StandarManager" maxInactiveInterval="7200"/> 默認(rèn)保存在$CATALINA_HOME/work/Catalina/<hostname>/<webapp-name>/下的session 參數(shù): maxActiveSession:允許最多的會話數(shù)量,-1表示不限制 maxInactiveInterval:非活動的會話超時時間,默認(rèn)偽60s pathname:會話文件路徑 2.定義PersistentManager會話管理器,將session會話寫入文件 <Manager calssName="org.apache.catalina.session.PersisitentManager" saveOnRestart="true"> <Store className="org.apache.catalina.session.FileStore" diretory="/dir/path"/> </Manager> 參數(shù): diretory:指定文件的路徑 3.定義PersistentManager會話管理器,將session會話寫入數(shù)據(jù)庫 <Manager calssName="org.apache.catalina.session.PersisitentManager" saveOnRestart="true"> <Store className="org.apache.catalina.session.JDBCStore" diretory="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/bdname?user=user;password=pw" /> </Manager>
8.tomcat實現(xiàn)session復(fù)制
a.編輯每個server.xml文件,將一下內(nèi)容添加在engine|host標(biāo)簽中,配置Cluster標(biāo)簽
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" //這里表示自動獲取ip,但是在linux上會稱為127.0.0.1,win上會自動獲取正確的ip port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <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>
b.在各個節(jié)點上添加組播路由
route add -net ip netmask 255.255.255.255 dev eth011
測試結(jié)果:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。