memcached介紹:
Memcached是一個高性能的分布式內存對稱緩存系統;通過緩存查詢數據庫結果,介紹數據庫訪問次數,以提高web應用的速度、提高擴展性。
Memcached特點:
協議簡單
基于libevent的事件處理
內置內存存儲方式
memcached不互相通信的分布式
一、使用環境準備
實驗環境:
TomcatA(node2):172.16.2.13
TomcatB(node3):172.16.2.14
memcached(node1):172.16.2.12
memcached(node4): 172.16.2.15
Nginx(node5): 172.16.2.16
實驗使用軟件:
二、配置tomcat節點
TomcatA節點:
1、安裝jdk
[root@node2 tomcat]# rpm -ivh jdk-7u67-linux-x64.rpm Preparing... ########################################### [100%] 1:jdk ########################################### [100%] Unpacking JAR files... rt.jar... jsse.jar... charsets.jar... tools.jar... localedata.jar... jfxrt.jar..
[root@node2 tomcat]# cat /etc/profile.d/java.sh export JAVA_HOME=/usr/java/latest export PATH=$PATH/bin:$PATH [root@node2 tomcat]# source /etc/profile.d/java.sh
驗證jdk安裝
[root@node2 src]# java -version java version "1.7.0_67" Java(TM) SE Runtime Environment (build 1.7.0_67-b01) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
2、安裝tomcat
[root@node2 tomcat]# tar xf apache-tomcat-7.0.55.tar.gz -C /usr/local [root@node2 tomcat]# cd /usr/local [root@node2 local]# ln -sv apache-tomcat-7.0.55/ tomcat `tomcat' -> `apache-tomcat-7.0.55/'
[root@node2 src]# cat /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$CATALINA_HOME/bin:$PATH [root@node2 src]# source /etc/profile.d/tomcat.sh
驗證tomcat安裝
[root@node2 bin]# cat /etc/profile.d/tomcat.sh export CATALINA_HOME=/usr/local/tomcat export PATH=$CATALINA_HOME/bin:$PATH [root@node2 bin]# source /etc/profile.d/tomcat.sh [root@node2 bin]# catalina.sh version Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/latest Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Server version: Apache Tomcat/7.0.55 Server built: Jul 18 2014 05:34:04 Server number: 7.0.55.0 OS Name: Linux OS Version: 2.6.32-504.el6.x86_64 Architecture: amd64 JVM Version: 1.7.0_67-b01 JVM Vendor: Oracle Corporation
node3安裝與node2安裝相同,這里就不在演示了
3、測試tomcat安裝是否成功
啟動taomcat [root@node2 ~]# catalina.sh start [root@node3 ~]# catalina.sh start
訪問測試:
三、配置memcached節點
安裝memcached
[root@node1 ~]# yum -y install memcached libmemcached
啟動memcached
[root@node1 ~]# /etc/init.d/memcached start Starting memcached: [ OK ]
查看監聽端口:默認為11211
[root@node1 ~]# ss -tlnp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:11211 *:*
node4節點配置與node1節點配置相同這里就不在演示了
四、配置tomcat節點支持memcached
TomcatA節點:
添加memcached的相關組件
[root@node2 tomcat]# cp memcached-session-manager-tc7-1.8.2.jar memcached-session-manager-1.8.2.jar javolution-5.5.1.jar msm-javolution-serializer-1.8.2.jar spymemcached-2.10.2.jar /usr/local/tomcat/lib/
添加一個容器:在默認的虛擬主機中添加
<Host name="localhost" appBase="webapps unpackWARs="true" autoDeploy="true"> <Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true"> <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:172.16.2.12:11211,n2:172.16.2.15:11211" 定義memca節點 failoverNodes="n2" 故障轉移主機,n2為上面的定義的主機 requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"當請求的內容匹配此處定義的時忽略 transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory "/> </Context> </Host>
創建對應的測試目錄和默認文檔
[root@node2 tomcat]# mkdir /usr/local/tomcat/webapps/test/{lib,classes,WEB-INF} 創建虛擬目錄 [root@node2 tomcat]# 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>
重新啟動tomcat
[root@node2 tomcat]# catalina.sh stop [root@node2 tomcat]# catalina.sh start
訪問測試:
TomcatB節點與TomcatA節點配置相同,而index.jsp內容如下 [root@node3 tomcat]# cat /usr/local/tomcat/webapps/test/index.jsp <%@ page language="java" %> <html> <head><title>TomcatB</title></head> <body> <h1><font color="blue">TomcatB.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節點測試:
五、配置Nginx節點
1、安裝Nginx
[root@node5 ~]# yum -y install nginx
2、配置nginx負載tomcat
[root@node5 ~]# vim /etc/nginx/nginx.conf http { upstream tomcat { server 172.16.2.13:8080; server 172.16.2.14:8080; } } [root@node5 ~]# vim /etc/nginx/conf.d/default.conf location / { # root /usr/share/nginx/html; index index.jsp index.html index.htm; proxy_pass http://tomcat/; }
3、啟動nginx
[root@node5 ~]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [root@node5 ~]# /etc/init.d/nginx start Starting nginx: [ OK ]
4、訪問測試:會發現只有標題會發生變化,而session id不會發生變化
六、模擬memcached故障,查看session有node4節點負責,但沒有發生變化
1、模擬故障:停止node1的memcached
[root@node1 ~]# /etc/init.d/memcached stop Stopping memcached: [ OK ]
2、訪問測試,
實驗完成,大家在做的時候要是遇到問題可以一起解決,僅供跟人學習使用,請大神勿噴,謝謝。
原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/6746