tomcat安装与配置:
在server1和server2
tomcat的安装需要java环境,所以先配置java环境
tar zxf jdk-7u79-linux-x64.tar.gz
mv jdk1.7.0_79/ /usr/local/
cd /usr/local/
ln -s jdk1.7.0_79/ java
配置java环境变量
vim /etc/profile
在里面添加下面几行
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
JAVA_HOME 后跟上面jdk解压目录
我将解压包移到/usr/local下 并创建了名为java的软连接,所以写/usr/local/jav
查看路径:
echo $JAVA_HOME
echo $CLASSPATH
echo $PATH
which java
which javac
环境配好之后就开始安装tomcat:
tar zxf apache-tomcat-7.0.37.tar.gz
mv apache-tomcat-7.0.37 /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat
ll
cd tomcat/
在网上下载下面几个包,放到lib下(不用解压):
启动tomcat:
bin/startup.sh
查看8080端口,tomcat默认占用8080端口:
netstat -anplt | grep :8080
tomcat默认发布目录:
webapps/ROOT/
cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
在浏览器访问 localhost:8080/test.jsp 测试tomcat
出现以下界面就说明安装成功:
配置tomcat:
vim /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.66.1:11211,n2:172.25.66.2:11211"
failoverNodes="n1" ##在server2 上设置为n2
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
两个节点:
n1:172.25.66.1:11211
n2:172.25.66.2:11211
代表两个memcache服务
T1代表 server1 上的tomcat
T2代表 server2 上的tomcat
M1代表 server1 上的 memcache
M2代表 server2 上的 memcache
T1的session存到M2上
T2的session存到M1上
当T1出问题后,T2接管T1的工作,从M2里读取T1的工作数据
当M2出问题,T1就把缓存存到M1上
避免单点故障
配置nginx
编辑配置文件:
vim /usr/local/lnmp/nginx/conf/nginx.conf
18 http {
##在Http下添加策略 test 这个策略是调用tomcat(tomcat默认端口为8080)
19 upstream test{
20 sticky;
21 server 172.25.66.2:8080;
22 server 172.25.66.1:8080;
23 }
##在server下添加 jsp 页面处理策略 只要是jsp页面,就跳到 test策略
##tomcat善于处理动态页面,将所有jsp页面全部交给tomcat去处理,实现动静分离
70 location ~ \.jsp$ {
71 proxy_pass http://test;
72 }
##添加server策略 当访问 www.test.org 时跳到test策略
157 server {
158 listen 80;
159 server_name www.test.org;
160
161 location / {
162 proxy_pass http://test;
163 }
164 }
检测nginx配置文件有没有差错
nginx -t
重启nginx
nginx -s reload
测试界面:
写到tomcat发布目录下,每个节点都要写
/usr/local/tomcat/webapps/ROOT/test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
打开浏览器访问 http://www.test.org/test.jsp
不同的主机访问时会调度到不同的 tomcat 实例上处理
来自同一主机的请求会交给同一个 tomcat 实例处理,此时你 down 掉当前正在响应的 tomcat 实例,nginx 会自动把用户的请求调度到另一个 tomcat 实例上,同时 session 也没有丢掉。