您好,登錄后才能下訂單哦!
1.系統結構圖
2.準備
主機tomcatA:關閉iptables
主機tomcatB:關閉iptables
主機apache:關閉iptables,關閉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>
參數解釋:
loadfactor:指定權重
route:指定主機
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"> --> 在最后追加一下內容: <display-name> Welcome to tomcat </displaay-name> <description> welcome to tomcat </description> <distributable/> //這個元素告訴tomcat,這個時分布式的引用 //給集群中tomcat服務器全部配置以上文件并且修改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>當前請求所在服務器信息:</h4> session標識:<%=session.getId() %> <br/> IP地址:<%=java.net.InetAddress.getLocalHost() %><br/> 臨時目錄:<%=System.getProperty("java.io.tmpdir") %> </div> <div> <h4>session創建表單:</h4> <form action="index.jsp" method="POST"> session名稱:<input type="text" name="sessionName"> session值:<input type="text" name="sessionValue"> <input type="submit" value="創建session"> </form> </div> <!--根據session創建表單里床過來的參數創建session --> <% String sessionName=request.getParameter("sessionName"); String sessionValue=request.getParameter("sessionValue"); if(sessionName!=null && !sessionName.equals("")){ session.setAttribute(sessionName, sessionValue); } %> <div> <h4>當前請求所在服務器的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>
測試結果:
7.tomcat的會話管理
1.StandarManager:默認會話管理器,使用于單個運行單個運行狀態的tomcat實例管理,當tomcat正常關閉時,會將session會話寫入一個以SESSION.ser文件,并在下次啟動時讀取 2.PersistentManager:當會話長時間處于空閑狀態時將被寫入swap會話對象。 3.DeltaManager:用于tomcat集群會話管理通過session復制實現session共享,將改變的session同步與集群中的每一個節點 4.BackupManager:用于tomcat集群中,但與DeltaManager不同,他將會話只同步給集群中一個的節點,而不是所有。
定義StandarManager,PersistentManager會話管理器
1.定義StandarManager會話管理器,默認使用 <Manage className="org.apache.catalina.session.StandarManager" maxInactiveInterval="7200"/> 默認保存在$CATALINA_HOME/work/Catalina/<hostname>/<webapp-name>/下的session 參數: maxActiveSession:允許最多的會話數量,-1表示不限制 maxInactiveInterval:非活動的會話超時時間,默認偽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> 參數: diretory:指定文件的路徑 3.定義PersistentManager會話管理器,將session會話寫入數據庫 <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實現session復制
a.編輯每個server.xml文件,將一下內容添加在engine|host標簽中,配置Cluster標簽
<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.在各個節點上添加組播路由
route add -net ip netmask 255.255.255.255 dev eth011
測試結果:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。