一.在server和server5上安装jdk
1.解压到指定目录/usr/local/
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
ln -s jdk1.7.0_79/ java 做软连接,升级的时候只升级软连接,较为方便
2.配置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 # 重新加载配置文件
#加载后查看是否成功
echo $JAVA_HOME
/usr/local/java
echo $CLASSPATH
.:/usr/local/java/lib:/usr/local/java/jre/lib
echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/php/bin/:/usr/local/java/bin
3.检测jdk环境是否正确:
vim test.java #java语言格式
public class test {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
javac test.java #javac编译.java脚本
java test # 运行脚本
Hello World! # 运行结果
二.在server1和server2上安装tomcat
1.解压tomcat:
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
cd /usr/local
ln -s apache-tomcat-7.0.37/ tomcat # 做软连接
2.进入tomcat的发布目录,测试tomcat是否安装正确
cd tomcat/webapps/ROOT
index.jsp是默认发布文件
vim index.jsp
the time is :<%=new java.util.Date() %>
在浏览器处输入172.25.1.5:8080/test.jsp查看页面。
3.实现server1和server2的tomcat负载均衡
修改nginx的配置文件:
upstream tomcat{
#sticky;
server 172.25.1.5:8080; # 后端服务器之一
server 172.25.1.3:8080; # 后端服务器之一
}
在浏览器172.25.1.5:8080/test.jsp,出现轮询
三.在tomcat中实现session共享
什么是session:
session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。
为了对数据的保存更加牢靠,我们选择交叉存放session的方法,即将访问tomcat1上的数据存放在memcache2中,将访问tomcat2上的数据存放在memcache1中,这样存放,当某个tomcat服务断了之后,访问它的客户session并不会消失,而是存放在了对立的memcache,如果存放session的memcache坏了,那么它的数据会立即切换到另一个memcached中....
1.在server3和server5端修改我们的测试页面test.jsp
这是一个可以提交信息的页面:
vim test.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Testtitle>head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%>
<%
out.println("
ID " + session.getId()+"
");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("Session list");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"
");
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.下载memcached服务端(目的是在每次经过浏览器访问tomcat时,记录两者之间的session)
3.安装nginx的sticky模块
./configure --prefix=/usr/local/lnmp/nginx/ --with-threads --with-http_stub_status_module --with-http_ssl_module --with-file-aio --add-module=/root/nginx-sticky-module-ng
make && make install
对inginx做相应的配置:
vim /usr/local/lnmp/nginx/conf/nginx.conf
http{
upstream tomcat{
sticky; # 在未向nginx中添加sticky模块时可以注释这一行
server 172.25.1.5:8080;
server 172.25.1.3:8080; # 实现tomcat的负载均衡
}
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
#proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
4.编辑两台tomcat的配置文件,写入memcache模块,添加两台tomcat服务器
vim tomcat/conf/context.xml (两台主机都要写)
"de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n5:172.25.1.5:11211,n3:172.25.1.3:11211" # 节点一定要对应
failoverNodes="n5" # 对方session坏了的时候找自己
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
5.将jar包放在tomcat的lib目录下
6.打开tomcat
cd tomcat/bin/./startup.sh
打开nginx
nginx -s reload
6.查看日志(tomcat/log)是否一切都配置得当,出现下图的语句说明session配置完成
6.测试:在浏览器处172.25.1.5/test.jsp(yum install telnet -y)
如果server3的memcache坏掉,那么session会来到server5上: