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.so

JkWorkersFile 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></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工程。

注意:如果在访问决策系统的时候,登录不进系统(反复提示输入),且用户名和密码正确,这时需要勾选“保持登录状态”。

Tomcat+Apache 负载均衡的更多相关文章

  1. Apache+Tomcat部署负载均衡(或集群)

    本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...

  2. 基于Apache和tomcat实现负载均衡

    1.基于Apache和tomcat实现负载均衡 准备三个虚拟机一个安装Apache两个安装Tomcat 关闭防火墙 systemctl stop firewalld Iptabled -F Seten ...

  3. apache+tomcat配置负载均衡,实现http与websocket接口分压

    一.应用场景 在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量.Apache本身带有一些模块,可以完成对应用 ...

  4. 基于Apache+Tomcat实现负载均衡

    1.基于Apache和tomcat实现负载均衡 准备三个虚拟机一个安装Apache两个安装Tomcat 关闭防火墙 systemctl stop firewalld Iptabled -F Seten ...

  5. Nginx 服务器 之Nginx与tomcat实现负载均衡

      本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf  创建 ...

  6. 利用httpd对tomcat进行负载均衡配置

    实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:jdk-8u60-linux-x64 ...

  7. JBOSS通过Apache负载均衡方法一:使用mod_jk

    JBOSS通过Apache负载均衡方法一:使用mod_jk   本文第一.二节分别对Linux环境下前端使用Apache以及windows环境下前端使用IIS通过AJP协议和后端的JBOSS通信实现负 ...

  8. Nginx+Tomcat+Memcached负载均衡集群服务搭建

    操作系统:CentOS6.5  本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...

  9. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

随机推荐

  1. [洛谷P4092][HEOI2016/TJOI2016]树

    题目大意:给你一棵树,有两个操作: $C\;x:$给第$x$个节点打上标记 $Q\;x:$询问第$x$个节点的祖先中最近的打过标记的点(自己也是自己的祖先) 题解:树剖,可以维护区间或,然后若一段区间 ...

  2. POJ2187:Beauty Contest——题解

    http://poj.org/problem?id=2187 题目大意:给n个点,求点对最大距离的平方. ———————————————————— 很容易证明最大距离的点对在最大凸包上. 那么就是旋转 ...

  3. BZOJ3339:Rmq Problem & BZOJ3585 & 洛谷4137:mex——题解

    前者:https://www.lydsy.com/JudgeOnline/problem.php?id=3339 后者: https://www.lydsy.com/JudgeOnline/probl ...

  4. cf 442 div2 F. Ann and Books(莫队算法)

    cf 442 div2 F. Ann and Books(莫队算法) 题意: \(给出n和k,和a_i,sum_i表示前i个数的和,有q个查询[l,r]\) 每次查询区间\([l,r]内有多少对(i, ...

  5. 洛谷 P1640 [SCOI2010]连续攻击游戏 解题报告

    P1640 [SCOI2010]连续攻击游戏 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备 ...

  6. 剑桥offer(41~50)

    41.题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). class Solution { pub ...

  7. Leetcode 002. 两数相加

    1.题目描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表 ...

  8. 002.比较vector对象是否相等

    1.使用vector模板 //编写一段程序,比较vector对象是否相等 //注:该例类似于一个[彩票游戏] #include <iostream> #include <ctime& ...

  9. 在IAR使用FreeRTOS出现Error[Pa045]: function "XXX" has no prototype

    FreeRTOS官方例程中设置了需要“Require prototype”,所以每个函数(除了main函数)都需要函数声明,其中对于无形参的函数声明要加void,比如void led_init(voi ...

  10. maven中net.sf.json报错的解决方法(转载)

    原文:http://www.cnblogs.com/winner-0715/p/5928514.html 今天在用maven添加net.sf.json的jar包的时候,代码如下: <depend ...