博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FineReport如何部署Tomcat服务器集群
阅读量:7144 次
发布时间:2019-06-29

本文共 3392 字,大约阅读时间需要 11 分钟。

hot3.png

环境准备

Tomcat服务器集群中需要进行环境准备:

Apache:Apache是http服务器,利用其对Tomcat进行负载均衡,这里使用的版本是Apache HTTP Server2.0.64; Tmocat:Tmocat7.0.6; JK:JK是Tmocat提供给http服务器的插件,这里使用的版本是tmocat-connectors-1.2.37-windows-i386-httpd-2.0.x; 系统:win7。 软件安装

Apache

下载完成之后,直接安装apache,安装完成之后,在浏览器中输入 输入图片说明 Tomcat

解压下载好的tomcat缩包,复制三份解压好的tomcat文件夹,分别重命名为tomcat1,tomcat2,tomcat3。

配置过程

Apache配置修改

修改httpd.conf,找到conf目录下的httpd.cof,在文件的最后一行添加:

include "C:\Program Files (x86)\Apache Group\Apache2\conf\mod_jk.conf"

新建mod_jk.conf文件,在conf目录下新建mod_jk.conf文件,内容如下:

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkMount /*.jsp controller

解压下载的jk文件,将里面的so文件复制到Apache安装目录的modules目录下,这里下载的jk文件名为mod-jk.so。新建并编辑workers.properties文件。在conf文件夹下新建worker.properties,内容如下:

#server

worker.list = controller

#========tomcat1========

worker.tomcat1.port=11009

worker.tomcat1.host=localhost

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor = 1

#========tomcat2========

worker.tomcat2.port=12009

worker.tomcat2.host=localhost

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor = 1

#========tomcat3========

worker.tomcat3.port=13009

worker.tomcat3.host=localhost

worker.tomcat3.type=ajp13

worker.tomcat3.lbfactor = 1

#========controller,负载均衡控制器========

worker.controller.type=lb

worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3

worker.controller.sticky_session=false

worker.controller.sticky_session_force=1

#worker.controller.sticky_session=1

如果需要配置远程的tomcat服务器的话,只需要将worker.tomcat3.host=localhost中的localhost改为远程服务器的IP地址即可。本次配置都是本地的tomcat,并且在一台机器上,所以端口号都不相同,如果在不同服务器上,端口号则不需要更改。

Tomcat配置

修改之前复制好的三份tmocat中的server.xml配置,打开conf/server.xml文件,修改如下图:

tomcat1: 输入图片说明输入图片说明 Tomcat2: 输入图片说明输入图片说明 Tomcat3: 输入图片说明输入图片说明 结果测试

在tomcat下面的项目文件夹中修改web.xml,如这里使用test项目,则修改三个tomcat下面的test项目中的web.xml,在每个web.xml的<display-name>节点后添加新的节点<distributable/>。在每个test项目文件夹下新建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>");

// 如果有新的 Session 属性设置

String dataName = request.getParameter("dataName");

if (dataName != null && dataName.length() > 0) {

String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue);

}

out.println("<b>Session 列表</b><br>");

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);

}

%>

<form action="test.jsp" method="POST">

名称: 
值:

</form>

</body>

</html>

Session测试

项目部署好之后,启动三个tomcat以及Apache,启动顺序随意,然后再浏览器中输入 输入图片说明 刷新页面,如下图: 输入图片说明 再次刷新,如下图: 输入图片说明 多次刷新页面的sessionID看是同一个ID,说明session是复制成功了。那么session中的存储的东西呢,在输入框中分别输入1、1,2、2,3、3后,显示结果如下图: 输入图片说明输入图片说明输入图片说明 节点插拔测试

关闭Tomcat

关闭tomcat3,刷新页面,可以不断访问tomcat1和tomcat2,再关闭tomcat2,只能够访问tomcat1,说明节点关闭时运行正常。

启动Tomcat

如果重启Tomcat2,无论怎么刷新,始终访问Tomcat3,无法访问tomcat2,这时利用另外台机器访问页面,发现Tomcat2正常,然后在刷本地页面,又可以访问Tomcat2了。对于每个新来的session,Apache按照节点配置中的lbfactor比重选择访问节点,如果某节点node1不能访问,则寻找下一可访问节点,并且将此node1就在该访问session的访问黑名单中,以后该session的访问直接不考虑node1,即使node1又可以访问了。而新来的session是无黑名单的,如果新的session能够访问到node1了,则会将node1在其他所有session访问的黑名单删除,这样其他session就又能访问node1节点了。经过以上测试,说明Tomcat集群和负载均衡已经实现了。

转载于:https://my.oschina.net/jiuyuenihao/blog/796856

你可能感兴趣的文章
cookie localstorage sessionStorage
查看>>
某数加密的流程与原理简析
查看>>
《前端十年心路》书稿规划
查看>>
Java虚拟机规范(目录)
查看>>
4.java数组
查看>>
阿里开发者们的第19个感悟:Simple is better.
查看>>
区块链技术进阶
查看>>
超简单七步,解决windows下安装PaddlePaddle的权限错误!
查看>>
Appium框架
查看>>
微信小程序教程系列之设置标题栏和导航栏
查看>>
Jenkins 用户文档(入门)
查看>>
轻松检测Golang并发的数据竞争
查看>>
如何处理错误消息Please install the gcc make perl packages
查看>>
写完这段代码,就被开除了……
查看>>
浅析微信支付:如何使用沙箱环境测试
查看>>
分布式系统关注点——仅需这一篇,吃透「负载均衡」
查看>>
实现文字的省略号
查看>>
react 移动端 兼容性问题和一些小细节
查看>>
人工智能的时代来了,新的商业机会在哪里?
查看>>
ZooKeeper 文档(概述)
查看>>