1.java环境
注意:tomcat要在java环境下 安装jdk(java必须要的)编写一个test脚本,检测
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
ls
ln -s jdk1.7.0_79/ java
cd java/
ls
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
cd
vim test.java
public class test {
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
javac test.java ##编译生成可执行文件
java test
2.apache-tomcat的安装
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat
cd tomcat/
bin/startup.sh ##开启服务
netstat -antlp | grep 80080
cd webapps/
cd ROOT/
pwd
/usr/local/tomcat/webapps/ROOT
/opt/nginx/nginx/sbin/nginx -s stop
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
location ~ \.jsp$ {
proxy_pass http://172.25.11.1:8080;
}
nginx
nginx -s reload
3.打开两台虚拟机,用作负载均衡
4.先打开之前的虚拟机,打开nginx,并测试之前的tomcat的测试页面是否能用
注: nginx-sticky-module 为 nginx 的第三方模块,使 nginx 支持 sticky 模式,所谓 sticky 模式
就是指同一个用户的访问请求都被发送到同一个 tomcat 实例上处理。
cd /usr/local/
cd tomcat/
bin/startup.sh ##开启tomcat服务
5.测试:打开页面 172.25.11.1/test.jsp
6.将tomcat(之间信息不共享)和jdk的压缩包,scp到要做负载均衡的虚拟机上
(1)从一个准备好的虚拟机上将压缩包scp到负载均衡上:
scp apache-tomcat-7.0.37.tar.gz [email protected]:/usr/local
scp jdk-7u79-linux-x64.tar.gz [email protected]:/usr/local
(2)在新的负载均衡的虚拟机上:
cd /usr/local/
ls
ln -s jdk1.7.0_79/ java
ln -s apachecd-tomcat-7.0.37/ tomcat
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 /ect/profile ##重新加载
nginx -t
nginx -s reload
cd tomcat/webapps/ROOT/
ls
vim test.jsp
vge 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 [email protected]:/usr/local/tomcat/webapps/ROOT
(3)测试:
在网页上:172.25.11.1/test.jsp
7.给负载据均衡上操作:
(1)给负载均衡上安装memcache:
yum install memcached -y
(2)在两个虚拟机上都开启memcache:
/etc/init.d/memcached start
(3)编译tomcat和memcache有关的文件:
cd /usr/local/tomcat/conf
vim context.xml
<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"
##需要添加一些jar包,库函数的包
memcachedNodes="n1:172.25.11.1:11211,n2:172.25.11.2:11211"
##两个虚拟机的ip分别设置为n1,n2
failoverNodes="n1" ##出现故障访问n1,就相当于默认将数据存在n2上
#在 node2 上此项设置为“n1”
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
mv jar/ /usr/local/tomcat/lib
rm -fr memcached-session-manager-tc6-1.6.3.jar
ls
netstat -antlp ##查看端口,出现了11211端口信息
bin/startup.sh ##开启tomcat服务
(4)查看日志的信息:
pwd
/usr/local/tomcat/
cd logs/
cat catalina.out
出现memcached就算正确
(5)测试:
在网页上输入 172.25.11.1/test.jsp
============================================================================================
memcache的存储方式是:交叉存储的
也就是说,vm1将信息存储在vm2的memcache中,vm2将信息存储在vm1的memcache中。注意:本身tomcat里就存在缓存,也就是说,本身就存在缓存,再将缓存复制一份,存到另一个虚拟机的memcache中。
这样如果vm1的memcache挂掉了,vm2接管工作,不会丢失信息。
vm1在vm2中的memcache中存入数据,如果数据写到一半,vm1挂掉了,那么vm2会接管工作,接着在vm2的memcache中继续写入数据,而不会重新写入到vm1的memcache。
如果是新打开一个链接的话,会存到vm1的缓存
=============================================================================================
资源上的限制:
limit_conn_zone $binary_remote_address zone=addr:10m;
设定限制最大并发数
-c1 一个并发 -n10处理10个链接
防盗链