一 實驗目的
本實驗使用Apache的mod_proxy模塊連接Tomcat, Nginx在前端做負載均衡,并使用Memcahced+MSM的方式保持Tomcat的會話,實現會話共享。
二 實驗拓撲
說明:為測試方便,Memcached與Tomcat安裝在同一機器中,正式環境應該安裝在不同機器中。
三 實驗環境
主機 | IP | 安裝組件 |
node1 | 192.168.237.132 | nginx |
node2 | 192.168.237.129 | httpd+tomcat+memcached |
node3 | 192.168.237.130 | httpd+tomcat+memcached |
四 實驗步驟
1 在node2和node3上安裝tomcat
#安裝Java環境 rpm -ivh jdk-7-linux-x64.rpm #首先應下載jdk安裝包 注:如系統已安裝了openjdk的包,應先卸載。例:yum remove java-1.7.0-openjdk* #設置Java的環境變量 vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/latest export PATH=$PATH:$JAVA_HOME:/bin source /etc/profile.d/java.sh #解壓tomcat包 tar xvzf apache-tomcat-7.0.73.tar.gz -C /usr/local/ ln -sv /usr/local/apache-tomcat-7.0.73 /usr/local/tomcat #設置tomcat環境變量 vim /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$PATH:$CATALINA_HOME/bin source /etc/profile.d/tomcat.sh #啟動tomcat catalina.sh start
測試訪問,瀏覽器中輸入192.168.237.129:8080, 如下圖所示:
2 在node2和node3上安裝httpd并配置通過ajp協議代理至tomcat
#安裝httpd yum install httpd #配置httpd使得通過ajp協議代理至tomcat vim /etc/httpd/conf/httpd.conf #DocumentRoot "/var/www/html" #注釋掉主配置文件中的根目錄 #配置虛擬主機 vim /etc/httpd/conf.d/tomcat.conf <VirtualHost *:80> servername a.com ProxyRequests Off ProxyVia On ProxyPreserveHost On <Proxy *> Require all granted </Proxy> ProxyPass / ajp://127.0.0.1:8009/ ProxyPassReverse / ajp://127.0.0.1:8009 <Location /> Require all granted </Location> </VirtualHost>
測試訪問,瀏覽器中輸入192.168.237.129, 如下圖所示:
3 在node2和node3上配置安裝Memcahed+MSM
#安裝memcached yum install memcached #啟動memcached systemctl start memcached #修改tomcat配置文件 vim /usr/local/tomcat/conf/server.conf #在<Host>下添加如下內容 <Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true"> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:192.168.237.129:11211,n2:192.168.237.130:11211" failoverNodes="n1" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" /> </Context> #創建jsp會話測試文件 mkdir -pv /usr/local/tomcat/webapps/test/{classes,lib,META-INF,WEB-INF} vim / /usr/local/tomcat/webapps/test/index.jsp <%@ page language="java" %> <html> <head><title>TomcatA</title></head> <body> <h1><font color="red">TomcatA.magedu.com</font></h1> <table align="centre" border="1"> <tr> <td>Session ID</td> <% session.setAttribute("magedu.com","magedu.com"); %> <td><%= session.getId() %></td> </tr> <tr> <td>Created on</td> <td><%= session.getCreationTime() %></td> </tr> </table> </body> </html> 注:在node3上把TomcatA變成TomcatB, red變成blue即可
測試訪問,瀏覽器中輸入192.168.237.129/test和192.168.237.130/test, 應如下圖所示:
#下載MSM的類庫文件并放到/usr/local/tomcat/lib中 [root@node2 ~]# mv javolution-5.4.3.1.jar memcached-session-manager-1.8.3.jar memcached-session-manager-tc7-1.8.3.jar msm-javolution-serializer-1.8.3.jar spymemcached-2.11.1.jar /usr/local/tomcat/lib/ #重新啟動tomcat catalina.sh stop catalina.sh start
4 在node1上配置Nginx并配置負載均衡
#安裝nginx yum install nginx #配置負載均衡 upstream tomcat_server { server 192.168.237.129; server 192.168.237.130; } server { listen 80; server_name 192.168.237.132; location / { root /usr/local/tomcat/webapps; proxy_pass http://tomcat_server; }
測試訪問,瀏覽器中輸入192.168.237.132/test, 查看session是否變化。
可以看出已經實現了session保持。
原創文章,作者:N25_zzc,如若轉載,請注明出處:http://www.www58058.com/66780
總結的很好,請繼續保持~~~加油??!