JAVA
1,server1启动
nginx
/etc/init.d/php-fpm start (php-fpm配置见lnmp源码编译章节)
2,安装java
[root@server5 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
cd[root@server5 ~]# cd /usr/local/
[root@server5 local]# ln -s jdk1.7.0_79/ java 建立软链接
配置java环境
[root@server5 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@server5 local]# source /etc/profile
[root@server5 local]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/lnmp/mysql/bin:/usr/local/lnmp/nginx/sbin:/usr/local/lnmp/php/bin:/usr/local/java/bin
[root@server5 local]# echo $CLASSPATH
.:/lib:/usr/local/java/jre/lib
[root@server5 local]# echo $JAVA_HOME
/usr/local/java
测试java环境
[root@server5 local]# cd
[root@server5 ~]# vim test.java
public class test
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
[root@server5 ~]# javac test.java 会生成test.class
[root@server5 ~]# java test
Hello World
Java配置完成!!!
Tomcat
1,server5安装tomcat
[root@server5 ~]# tar zxf apache-tomcat-7.0.90.tar.gz -C /usr/local/ 用低版本
[root@server5 local]# ln -s apache-tomcat-7.0.90/ tomcat 建立软链接
启动tomcat
[root@server5 tomcat]# bin/startup.sh
查看日志
[root@server5 tomcat]# cat logs/catalina.out
tomcat的默认发布目录在tomcat/webapps/ROOT 下
查看tomcat的首页,172.25.28.5:8080
//
测试tomcat
[root@server5 ROOT]# vim test.jsp
<%=new java.util.Date() %>
172.25.28.5:8080/test.jsp
出现404报错,需要打开代理
[root@server5 ROOT]# vim /usr/local/lnmp/nginx/conf/nginx.conf
[root@server5 ROOT]# nginx -s reload
重新访问172.25.28.5:8080/test.jsp
##(nginx或者tomcat)配置文件中修改默认发布目录,因为图片的格式不可能是.jsp,nginx.conf写的代理是只有.jsp才会去找代理,所以不会显示图片
如果有需要,那么修改nginx.conf文件,重新加载
//
##如果nginx没有启动,reload时会出现pid错误
##nginx如果是编译安装的,必须要建立用户
server4安装java和tomcat同server5
仿照server5,解开两个tar包,创建两个软链接
负载均衡
写调度策略
[root@server5 ~]# vim /usr/local/lnmp/nginx/conf/nginx.conf
[root@server5 ~]# nginx -s reload
启动nginx
浏览器调度器测试
成功!!!
Session缓存
1,server4,server5写提交页面
[root@server5 ~]# 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>
[root@server5 ~]# scp /usr/local/tomcat/webapps/ROOT/test.jsp server4:/usr/local/tomcat/webapps/ROOT/
root@server4's password:
test.jsp 100% 36 0.0KB/s 00:00
浏览器测试
提交一个之后就轮询到另外,然后session会话不存在
解决方案,调度策略用sticky模块
如果需要重新编译
(sticky模块不是tar包形式,解开为目录
删除解压之后的tar包了里面的MAKEFILE输入命令为:make clean
./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --user=nginx --group=nginx --with-file-aio --with-threads --add-module=/root/nginx-sticky-module-ng
编译三部曲
[root@server5 nginx-1.10.1]# nginx
解决了提交一个之后就轮询到另外,然后session不存在)
2,但是当一个后端服务器挂掉后,session还是会丢失,
memcache+tomcat
server4,server5安装memcached并启动
n1:172.25.28.4:11211
n2:172.25.28.5:11211
server4,server5
1,安装telne
2修改/usr/local/tomcat/conf/context.xml
memcachedNodes="n1:172.25.28.4:11211,n2:172.25.28.5:11211"
failoverNodes="n1" 错误恢复,开始是缓存在n2上,如果server5的缓存出现异常,找server4下server5交叉缓存的memcache
##server5改为n2
3,有test.jsp
4,jar包
需要所有的jar包,删除tc6
5,启动tomcat
在日志中一定要看到memcachedsessionservice的初始化信息
6,启动memcached
7,利用telnet查看session记录
表示server2服务器存储到server1上,在server1上面查看session,如果server2的memcached服务停止,那么
此时sessions实际上是server1存储的共享给server2的