两台后端服务器相同配置server2和server3
# java 环境变量配置
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.7.0_79/ /usr/local/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
# 安装启动apache+tomcat
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-7.0.37/ /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
#调度器配置server4
#编译安装nginx-1.14
# 依赖
pcre-devel gcc openssl-devel
# 解压安装
tar zxf nginx-1.14.0.tar.gz
cd ginx-1.14.0
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx
make && make install
ln -s /use/local/lnmp/nginx/sbin/nginx /usr/local/sbin
# 配置文件
vim /usr/local/lnmp/nginx/conf/nginx.conf
upstream westos {
server 172.25.70.2:8080;
server 172.25.70.3:8080;
}
location ~ \.jsp$ {
proxy_pass http://westos;
}
#启动nginx
测试
#编辑一个jsp页面给server1和server2的tomcat服务
vim /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>
# 结果如下,存在问题无法保持会话一致性
##session处理
编译1.10版本的nginx,添加nginx-sticky-module-ng
# 解压该模块数据包
tar zxf nginx-sticky-module-ng.tar.gz
#重新编译是添加nginx-sticky-module-ng模块
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --user=nginx --group=nginx --add-module=/root/lnmp/nginx-sticky-module-ng
make && make install
# 配置文件,加入sticky
vim /usr/local/lnmp/nginx/conf/nginx.conf
upstream westos {
sticky;
server 172.25.42.2:8080;
server 172.25.42.3:8080;
}
location ~ \.jsp$ {
proxy_pass http://westos;
}
# 测试达到session一致,但是正在会话的服务器挂后,会话也会中断,
# 由其他服务器顶替,那就是新的会话的
在server1和server2的tomcat服务添加交叉存储机制
cp /root/lnmp/jar/* /usr/local/tomcat/lib
# 配置memcache交叉存储
vim /usr/local/tomcat//conf/context.xml
/>
# server2和server3下载memcacahed,启动
yum install memcached -y
/etc/init.d/memcached/start
测试,当正在提供服务的server3停止后,由server2接管,但是session ID 没有改变,同样会话继续,没有中断
然后重新启动server3,停止server2,会话又被server3接管,同样没有中
# 会话还是没有中断