Tomcat+Apache 负载均衡
1.JDK1.8和Tomcat7.0不兼容,支持Tomcat8.0.
集群架构图:
2.负载均衡:负载的基础是集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同的硬件构成的计算机。如一个提供Web服务的集群,对外界看来是一个大Web服务器。负载均即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
3.部署方法:Apache2.2+Tomcat7.0+JDK1.7+JK
主要方法:http://www.finereporthelp.com/help/24/1/3/3.html
主要步骤:(jdk+tomcat+apache+mod_jk)
1.每台服务器上分布都安装jdk,tomcat(安装成功tomcat,在浏览器中输入localhost:8080,会进入tomcat页面);
2.在反代理服务器安装apache(安装成功,在浏览器中输入localhost,会显示安装成功);
3.更改apache安装路径conf下面的httpd.conf,在其最后一行添加:include "apache安装路径\conf\mod_jk.conf";
4.在conf下面新建格式为.conf的mod_jk.conf文件,并添加如下代码:
LoadModule jk_module modules/mod_jk.so //需要在apache安装路径下的modules导入mod_jk.soJkWorkersFile conf/workers.properties //负载均衡JkMount /*.jsp controller //*.jsp可以更改为*,支持所有文件格式
5.在conf下面新建workers.properties文件,添加如下代码:
#server
worker.list = controller
#========tomcat1======== //有多少服务器就建立多少个tomcat
worker.tomcat1.port=11009 //每台服务器为一个tomcat,对应的端口也不一样
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=12009
worker.tomcat2.host=localhost //如果是另外一台服务器,则改为ip
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========tomcat3========
worker.tomcat2.port=13009
worker.tomcat2.host=192.168.10.250
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3 //有多少tomcat就添加多少
worker.controller.sticky_session=false //如果为true/1,则表示当用户第一次受到某一服务器处理,则以后都是
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
6.再到每台服务器的tomcat安装路径的conf文件夹下面,找到serve.xml,更改如下几个位置信息:
注意:1.port和jvmRoute必须与workers.properties中相对应;2.注意是否被注释掉(最后一个红色框容易被忽视)。
7.将每个tomcat下面的项目(需要用Java设计器创建web应用程序)的web.xml的<display-name>之后加上<distributable/>。
8.在项目中新建测试页面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+"<br>");System.out.println( name + " = " + value);}
%><form action="test.jsp" method="POST">名称:<input type=text size=20 name="dataName"><br>值:<input type=text size=20 name="dataValue"><br><input type=submit></form>
</body>
</html>
在测试成功的情况下,在名称和值的输入框中输入值,server info后面不变,ID后面不变,tomcat会变。
10.如果是做FineReport的独立部署,则需要将FR的webreport整体拷贝至tomcat的webapps下面,需要将同一个webreport分别拷贝至每个tomcat下面,然后拿掉WEB-INF——resources下的lic(在已经注册的情况下),通过localhost:8080/WebReport/ReportServer访问决策系统,进行注册。(每台服务器对应不同.lic)
11.修改每台服务器下面tomcat中webreport项目中WEB-INF下面的web.xml(第七步),如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Template WebApp</display-name><distributable/><mime-mapping><extension>msi</extension><mime-type>application/x-msi</mime-type></mime-mapping><servlet><servlet-name>ReportServer</servlet-name><servlet-class>com.fr.web.ReportServlet</servlet-class><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>ReportServer</servlet-name><url-pattern>/ReportServer</url-pattern></servlet-mapping> </web-app>
12.在resources下面新建cluster.xml文件,如下:
<?xml version="1.0" encoding="UTF-8" ?>
<ClusterConfig useCluster="true" userShare="true"> //useCluster=”true”表示启用集群配置<ClusterService><ServiceName>A</ServiceName> //给这台服务器取一个区别于其他机器的别名,报名可任意,但不能出现相同<ip>192.168.10.249</ip> //这台服务器在内网中的IP地址<port>8080</port> //报表应用的端口<WebAppName>WebReport</WebAppName> //报表应用的名称,因为是webreport工程</ClusterService><ClusterService isSelf="true"> //isSelf=''true"指示该ip当前服务器,有多少服务器添加多少<ServiceName>B</ServiceName> <ip>192.168.10.250</ip> //即上面为isSelf,这里可以为localhost<port>8080</port><WebAppName>WebReport</WebAppName></ClusterService>
</ClusterConfig>
14.测试报表集群是否配置成功,可以在浏览器输入:
http://localhost:8080/WebReport/ReportServer?op=fr_cluster&cmd=test_c_all
如果成功,则会显示Cluster is start,这时候通过当前页面信息查看整个环境的配置。
13.这时候可以通过localhost/WebReport/ReportServer进行交叉访问,不断刷新,访问不同tomcat下面webreport工程。
注意:如果在访问决策系统的时候,登录不进系统(反复提示输入),且用户名和密码正确,这时需要勾选“保持登录状态”。
转载于:https://www.cnblogs.com/ytwy/p/4989730.html
Tomcat+Apache 负载均衡相关推荐
- 使用Apache对Tomcat进行负载均衡
翻译:疯狂的技术宅 原文标题:Load balancing tomcat with Apache 原文链接:http://programmergate.com/loa... 本文首发微信公众号:充实的 ...
- 【转】Apache Http Server与Tomcat实现负载均衡和集群
Apache Http Server与Tomcat实现负载均衡和集群 一.分布式实现原理 如上图所示,主要通过 Apache-Server 作为中转服务器,实现多个 tomcat 服务器之间的分布式处 ...
- apache负载均衡的安装和实现方法
在负载均衡技术中,硬件设备是比较昂贵的,对于负载均衡的学习者如果不是在企业中应用或者是学员中学习,很少有机会能碰到实际操作的训练.所以,很多朋友都会选择软件方面的设置进行研究.现在我们就来介绍一下再A ...
- JBOSS通过Apache负载均衡方法一:使用mod_jk
JBOSS通过Apache负载均衡方法一:使用mod_jk 本文第一.二节分别对Linux环境下前端使用Apache以及windows环境下前端使用IIS通过AJP协议和后端的JBOSS通信实现负 ...
- nginx+tomcat+memcached负载均衡
2019独角兽企业重金招聘Python工程师标准>>> nginx+tomcat+memcached负载均衡 负载均衡: 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服 ...
- NGINX基于Tomcat配置负载均衡
NGINX基于Tomcat配置负载均衡 本部署指南说明了如何使用NGINX开源和NGINX Plus在Apache Tomcat TM应用程序服务器池之间平衡HTTP和HTTPS流量.本指南中的详细说 ...
- 关于Tomcat+Nginx负载均衡与Jmeter服务器测压的日记
Jmeter测压 1.Jmeter-5.1.1下载:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.zip 2 ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- Nginx+Tomcat服务器负载均衡实践方案
1. 为何选择Nginx+Tomcat做负载均衡? 1.1. Nginx是什么? Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3 ...
最新文章
- C# 常用类-IO-ClassXML
- linux 控制台输入命令无效_在控制台输入什么命令都提示commandnotfound原因是什么?suselinux...
- Spring 中的编程思想总结
- win7计算机管理对话框功能,win7鼠标设置在哪里|win7打开鼠标属性对话框方法
- ERROR: Failed building wheel for pycrypto
- 游戏服务器宕机应对措施
- 鼠标触碰元素时变为其它各种形状
- 构建企业代码管理系统之SVN服务(基础篇)
- Python测试入门
- AD16导出Gerber文件教程
- android三国2,三国演义安卓单机版
- 高速公路上边有没有人脸识别摄像头_人脸识别特征介绍以及难题概括
- UltraCompare官方网站
- 热敏打印机数据截取+追加打印二维码
- python header函数_Header函数
- BeanUtils.populate()用法
- ModuleNotFoundError: No module named ‘typing_extensions‘
- ssh登陆之忽略known_hosts文件
- NHibernate Mapping Attribute实现复合主键映射
- 志强分享:轻松实现日吸300+精准粉