server 2,3
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ ##java软件测试的安装包
cd /usr/local/
ln -s jdk1.7.0_79/ java ##建立软链接
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
vim test.java
public class test {
public static void main(String[] arge) {
System.out.println("Hello World");
}
}
javac test.java
java test
tomcat的安装
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat
./startup.sh ##执行启动脚本
vim test.jsp ##建立.jsp测试界面
the time is :<%=new java.util.Date()%>
tomcat与nginx的结合
server1
cd /usr/local/lnmp/nginx/conf/
vim nginx.conf
http {
upstream westos {
ip_hash; ##ip哈希
server 172.25.4.2:8080;
server 172.25.4.3:8080;
#server 127.0.0.1:8000 backup;
}
proxy_pass http://westos; ##反向代理
}
nginx -s reload
测试:浏览器访问172.25.4.1/test.jsp
server2
cd /usr/local/tomcat/webapps/ROOT/
vim 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>
scp test.jsp 172.25.4.3:/usr/local/tomcat/webapps/ROOT/
cd /usr/local/tomcat
bin/shutdown.sh ##执行关闭tomcat服务脚本
bin/startup.sh ##执行开启tomcat服务脚本
server2,3
tomcat和memcache的结合
yum install memcached -y
/etc/init.d/memcached start
cd /usr/local/tomcat/lib
把jar包都放在这个目录底下
rm -f memcached-session-manager-tc6-1.6.3.jar
cd /usr/local/tomcat/conf/
vim context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.4.2:11211,n2:172.25.4.3:11211"
failoverNodes="n1" ##server3端在此处修改为n2
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
cd ..
bin/shutdown.sh
bin/startup.sh
tail -f logs/catalina.out ##查看配置文件,进行检查
MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n2] and failover node ids [n1] ##当出现这一行代表实验成功
也可以安装telnet进行检测
yum install telnet -y
telnet localhost 11211
##如果tomcat与varnish 结合,不能用ip哈希,因为他们的存储方式不一样。
访问 http://172.25.4.1/test.jsp,不同的主机访问时会调度到不同的tomcat实例上处理来自同一主机的请求会交给同一个 tomcat 实例处理,此时你down掉当前正在响应的 tomcat 实例,nginx会自动把用户的请求调度到另一个tomcat实例上,同时 session 也没有丢掉。
<T1> <T2>
\ /
X
/ \
<M1> <M2>
Tomcat-1 (T1) 将 session 存储在 memcached-2 T2)上。只有当M2不可用时,T1才将session存储在memcached-1上(M1是T1 failoverNode)。使用这种配置的好处是,当 T1 和 M1 同时崩溃时也不会丢失 session 会话,避免单点故障。
tar zxf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
tar zxf nginx-1.10.1.tar.gz
cd nginx-1.10.1
./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
make && make install
vim /opt/nginx/conf/nginx.conf
cd /opt/nginx/conf/
./nginx
nginx -s reload ##如果之前的nginx版本不同在更新之前需要停掉前一个nginx -s stop