一、安装和配置jdk和tomcat
1.在官网下载jdk和tomcat包,并解压到指定目录
[root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local
[root@server1 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
2.制作jdk和tomcat软链接
[root@server1 ~]# cd /usr/local
[root@server1 local]# ll
[root@server1 local]# ln -s jdk1.7.0_79 java
[root@server1 local]# ln -s apache-tomcat-7.0.37 tomcat
3.配置java的环境变量
[root@server1 local]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server1 local]# source /etc/profile
4.查看java的版本号
[root@server1 local]# java -version
5.检测java环境是否正确
[root@server1 ~]# vim test.java
public class test{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
[root@server1 ~]# javac test.java
[root@server1 ~]# java test
Hello World!
6.打开tomcat
[root@server1 ~]# cd /usr/local/tomcat/
[root@server1 tomcat]# cd bin/
[root@server1 bin]# ./startup.sh
7.编辑配置文件
[root@server1 local]# cd openresty/
[root@server1 openresty]# cd nginx/conf
[root@server1 conf]# vim nginx.conf
添加的部分:
location ~ \.jsp${
proxy_pass http://127.0.0.1:8080;
}
8.nginx语法检测,并重新加载nginx
[root@server1 conf]# cd ..
[root@server1 nginx]# cd sbin/
[root@server1 sbin]# ./nginx -t
[root@server1 sbin]# ./nginx -s reload
9.进入tomcat的发布目录,编写测试页
[root@server1 local]# cd tomcat/
[root@server1 tomcat]# ls
[root@server1 tomcat]# cd webapps/ROOT/
[root@server1 ROOT]# vim test.jsp
1 the time is: <%=new java.util.Date() %>
10.测试:浏览器中访问http://172.25.7.1/index.jsp显示以下页面
访问http://172.25.7.1/test.jsp,显示测试页内容
二、实现负载均衡和反向代理
1.把server1上的jdk和tomcat安装包发送到server2上
[root@server1 ~]# scp jdk-7u79-linux-x64.tar.gz server2:/root/
[root@server1 ~]# scp apache-tomcat-7.0.37.tar.gz server2:/root/
2.在server2上解压jdk和tomcat并解压到指定目录
[root@server2 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local
3.在server2上制作jdk和tomcat软链接
[root@server2 ~]# cd /usr/local
[root@server2 local]# ll
[root@server2 local]# ln -s jdk1.7.0_79 java
[root@server2 local]# ln -s apache-tomcat-7.0.37 tomcat
4.server2上配置java的环境变量
[root@server2 local]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server2 local]# source /etc/profile
5.打开server2的tomcat
[root@server2 ~]# cd /usr/local/tomcat/bin/
[root@server2 bin]# ./startup.sh
6.在server1上修改nginx的配置文件
[root@server1 ~]# cd /usr/local/openresty/nginx/conf/
[root@server1 conf]# vim nginx.conf
http {
upstream tomcat{
server 172.25.7.1:8080;
server 172.25.7.2:8080;
}
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
#location /memc {
#internal; #内部的请求
#memc_connect_timeout 100ms; #连接超时
#memc_send_timeout 100ms;
#memc_read_timeout 100ms;
#set $memc_key $query_string;
#set $memc_exptime 300;
#memc_pass memcache;
#}
location ~ \.php$ {
#set $key $uri$args;
#srcache_fetch GET /memc $key; #读数据
#srcache_store PUT /memc $key; #放数据
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
7.nginx语法检测并重启
[root@server1 conf]# cd ..
[root@server1 nginx]# cd sbin/
[root@server1 sbin]# ./nginx -t
[root@server1 sbin]# ./nginx -s reload
8.在server1和server2的tomcat的发布目录,编写测试页
[root@server1 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server1 ROOT]# vim test.jsp
server1 the time is: <%=new java.util.Date() %>
[root@server2 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server2 ROOT]# vim test.jsp
server2 the time is: <%=new java.util.Date() %>
9.测试:在浏览器访问http://172.25.7.1:8080,显示tomcat图形界面
访问http://172.25.7.1/test.jsp,在浏览器中刷新,显示server1、server2轮询
三、实现session共享
1.重新编写测试页
[root@server1 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server1 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>
2.在浏览器中访问http://172.25.63.1/test.jsp显示以下界面
在server2上传数据westos1
提交之后,数据信息会存到server1上,再次上传数据westos2
westos2的数据信息会存到server2上,但是server1上的数据不见了
总结:每次提交新的用户信息都会覆盖旧的用户信息,而且server info 和 ID 都会改变
- 改进之前的设置,实现数据不交换,上传信息到同一个后端服务器
1.把之前openresty实验下的nginx关闭
[root@server1 ~]# cd /usr/local/openresty/nginx/sbin/
[root@server1 sbin]# ./nginx -s stop
2.解压nginx-1.10.1版本的安装包、nginx-sticky安装包
[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz
3.隐藏nginx版本号
[root@server1 ~]# cd nginx-1.10.1
[root@server1 nginx-1.10.1]# vim src/core/nginx.h
#define NGINX_VER "nginx/"
4.关闭debug日志
[root@server1 nginx-1.10.1]# vim auto/cc/gcc
178 # debug
179 #CFLAGS="$CFLAGS -g"
5.编译并安装,在编译后边添加sticky模块
[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-sticky-module-ng
[root@server1 nginx-1.10.1]# make && make install
6.把原来openresty下的nginx配置文件复制过来,修改nginx配置文件
[root@server1 nginx-1.10.1]# cd /usr/local/lnmp/nginx/conf
[root@server1 conf]# cp /usr/local/openresty/nginx/conf/nginx.conf .
cp: overwrite `./nginx.conf'? y
[root@server1 conf]# vim nginx.conf
http {
upstream tomcat{
sticky; ##添加sticky模块
server 172.25.63.1:8080;
server 172.25.63.2:8080;
}
include mime.types;
default_type application/octet-stream;
7.检测nginx语法错误,并开启nginx
[root@server1 ~]# cd /usr/local/lnmp/nginx/sbin/
[root@server1 sbin]# ./nginx -t
[root@server1 sbin]# ./nginx
8.在浏览器中访问http://172.25.63.1/test.jsp
上传新的数据,发现绑定的主机都是同一个主机server1
9.关闭server1上的tomcat
[root@server1 ~]# cd /usr/local/tomcat/bin/
[root@server1 bin]# ./shutdown.sh
10.在server2上查看,发现server2上没有将之前的信息缓存过来
[root@server2 ~]# cd /usr/local/tomcat/logs/
[root@server2 logs]# tail -f catalina.out
四、session交叉存放
1.开启server1和server2上的tomcat
[root@server1 bin]# ./startup.sh
[root@server2 ~]# cd /usr/local/tomcat/bin/
[root@server2 bin]# ./startup.sh
2.server2上安装memcached,并开启memcached
[root@server2 bin]# yum install memcached -y
[root@server2 bin]# /etc/init.d/memcached start
3.把这些安装包放到server1和server2的/usr/local/tomcat/lib/目录下,并删除memcached-session-manager-tc6-1.6.3.jar这个安装包
[root@server1 ~]# cd /usr/local/tomcat/lib/
[root@server1 lib]# rm -fr memcached-session-manager-tc6-1.6.3.jar
[root@server2 ~]# cd /usr/local/tomcat/lib/
[root@server2 lib]# rm -fr memcached-session-manager-tc6-1.6.3.jar
4.编辑context.xml 配置文件
[root@server1 ~]# cd /usr/local/tomcat/conf/
[root@server1 conf]# vim context.xml
添加的内容:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.63.1:11211,n2:172.25.63.2:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoder Factory"
/>
5.将配置好的context.xml 文件发送给server2
[root@server1 conf]# scp context.xml root@172.25.63.2:/usr/local/tomcat/conf/
6.server2上修改context.xml 配置文件
[root@server2 ~]# cd /usr/local/tomcat/conf/
[root@server2 conf]# ls
[root@server2 conf]# vim context.xml
failoverNodes="n2"
7.测试:
在浏览器中刷新页面,显示在server2上,在server2上传数据westos8,然后关闭server2
[root@server2 ~]# cd /usr/local/tomcat/bin/
[root@server2 bin]# ./shutdown.sh
查看到server1上缓存到了server2上传的数据信息