2019独角兽企业重金招聘Python工程师标准>>>
参考博客:
http://www.cnblogs.com/whtydn/p/4950524.html
http://blog.csdn.net/sxdtzhaoxinguo/article/details/49182063
Nginx官方网站:http://nginx.org/http://nginx.org/
Tomcat集群配置官方文档:http://tomcat.apache.org/tomcat-8.0-doc/cluster-howto.html
环境:
JDK 1.7.0_80
Tomcat 8.0.35(准备2个,分别拷贝在不同目录下即可)
Nginx 1.12.1
windows10
下载安装Nginx服务器
JDK和Tomcat的安装就不说了。
在官网上下载Nginx:http://nginx.org/en/download.html
解压到任意目录即可。
然后在安装目录下打开cmd,输入命令start nginx,即可开启Nginx服务器。
打开浏览器输入访问localhost,出现如下界面证明Nginx开启成功。
Nginx服务器默认使用80端口,若您的80端口被占用,可修改至其它未占用端口。
在如下地方修改,打开Niginx根目录->conf->nginx.conf配置文件。
关于nginx更多命令,参考官方文档:http://nginx.org/en/docs/windows.html
配置负载均衡
由于我们是在同一台机器上搭建负载均衡(垂直集群),故启动两台Tomcat服务器实例为了防止端口号冲突,则需要修改Tomcat的Server.xml的端口号。
我们修改其中一个tomcat的端口号,需要修改的地方如下(一共三个):
然后是配置 Niginx根目录->conf->nginx.conf配置文件,
在http模块内加入如下代码:
upstream localhost{
server localhost:8080 weight=1;
server localhost:9090 weight=1;
}
上图服务器端口号对应于以下tomcat server.xml中配置的端口号:
然后在以下块中加入两行。
记得在两个tomcat中部署测试用的项目。
我用来测试的jsp文件内容为(这个测试jsp文件是从网上Copy来的哟,不过挺好用):
<%@ page language = "java" import = "java.util.*" pageEncoding = "UTF-8" %>
<%@taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath =
request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort() + "
");%>
<%
out.println("
ID " + session.getId() + "
");
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("Session 列表
");
System.out.println("============================");
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);
}
%>
然后,
重启Nginx服务器和两个tomcat服务器。
现在测试负载均衡的效果,
我们先单独通过Tomcat服务器访问,
8080端口服务器正常访问:
9090端口服务器正常访问:
以上证明我们的Tomcat服务器启动正常。
现在通过Nginx访问四次:
从以上四次访问中我们可以看到已经实现了Nginx的负载均衡。
配置Tomcat的集群(Session的复制)
tomcat的集群配置非常简单,我们来看看官网的文档描述的配置步骤,
我们需要在tomcat的server.xml中的Engine标签下加入Cluster节点内容:
以上这些都是tomcat的默认配置,根据官方描述,若全部使用默认配置的话我们只需要取出以下注释即可,不需要再加入上面那一大段配置:
这里我们需要注意的是,两个tomcat中都需要配置这个,但是Cluster中Receiver节点中的port属性值不能一样,防止端口冲突。
我们将其中一个tomcat的此属性设置为4001:
然后在部署在2个tomcat的测试项目中的web.xml文件中加入
其实这些配置在上面给的的官网截图中已有描述了。
配置完毕。
重启两个tomcat服务器。
现在来测试。
打开页面如下:
现在输入名称和值,点击提交,页面如下:
现在我们把端口号为9090的Tomcat服务器关闭,模拟服务器宕机的情况。
再输入名称和值(名称跟前一次不要一样),点击提交,页面如下:
我们发现在9090tomcat添加的值在8080中依然存在,证明在9090中创建的Session在8080中也复制了一份,所以出现这种情况。
故,至此,我们实现了Tomcat集群。