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.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 负载均衡的更多相关文章
- Apache+Tomcat部署负载均衡(或集群)
本来只打算写Tomcat集群部署,简化Apache和Tomcat整合过程的.后来想了想,这样不便于没有用过Apache的朋友来学习本文内容.于是干脆加大篇幅,让对Apache不了解的朋友能对Apach ...
- 基于Apache和tomcat实现负载均衡
1.基于Apache和tomcat实现负载均衡 准备三个虚拟机一个安装Apache两个安装Tomcat 关闭防火墙 systemctl stop firewalld Iptabled -F Seten ...
- apache+tomcat配置负载均衡,实现http与websocket接口分压
一.应用场景 在生产环境中,应用服务器(此文以tomcat为例)不免面临高访问量的压力,相比而言web服务器(此文以apache为例)能够承担更大的并发量.Apache本身带有一些模块,可以完成对应用 ...
- 基于Apache+Tomcat实现负载均衡
1.基于Apache和tomcat实现负载均衡 准备三个虚拟机一个安装Apache两个安装Tomcat 关闭防火墙 systemctl stop firewalld Iptabled -F Seten ...
- Nginx 服务器 之Nginx与tomcat实现负载均衡
本文讲解我们如何使用Nginx做反向带服务器,实现nginx与tomcat服务器集群做负载均衡. 一.nginx与tomcat实现负载均衡 1.在/usr/local/ngnix/conf 创建 ...
- 利用httpd对tomcat进行负载均衡配置
实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:jdk-8u60-linux-x64 ...
- JBOSS通过Apache负载均衡方法一:使用mod_jk
JBOSS通过Apache负载均衡方法一:使用mod_jk 本文第一.二节分别对Linux环境下前端使用Apache以及windows环境下前端使用IIS通过AJP协议和后端的JBOSS通信实现负 ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
随机推荐
- BZOJ1568:[JSOI2008]Blue Mary开公司——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1568 李超线段树(不会的话去网上搜吧……). 完. #include<map> #in ...
- 【枚举】 最大子矩阵(I)
题注:最大子矩形问题的解决办法最初由中国国家集训队王知昆前辈整理并发表为论文,在此说明并感谢. Definition 给你一个大矩形,里面有一些障碍点,求一个面积最大的矩形,满足该矩形在大矩形内部且该 ...
- su对环境变量做了什么
服务器是ubuntu12.04 用一个账户app,使用su - app得到的环境变量和直接ssh登录的环境变量不同. 导致su - app,无法执行ifconfig su - app 的环境变量 /u ...
- HDU3376 最小费用最大流 模板2
Matrix Again Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)To ...
- 基于jQuery UI的调色板插件推荐colorpicker
1.下载地址 点击网页最下端Download,即可下载 2.使用方法 本插件是基于jQuery UI,所以应该先行下载jQuery UI,当然jQuery也必不可少 引入和初始化 引入js文件 & ...
- shell编程:条件测试与比较(六)
条件测试方法综述 test条件测试的简单语法及测试 范例6-1 测试文件(在test命令中使用-f选项:文件存在且为不同文件则表达式成立) [root@adminset ~]# test -f fil ...
- window10系统下使用python版本实现mysql查询
参考文档: 兔大侠整理的MySQL-Python(MySQLdb)封装类 Python安装模块出错(ImportError: No module named setuptools)解决方法 环境 (w ...
- JS学习之数组
- SpringMVC+MyBatis 返回时间格式转换的解决方案
Spring MVC 4.X ResponseBody 日期类型Json 处理 摘自http://tramp-zzy.iteye.com/blog/2090330 2014-07-10 方法一:全局 ...
- 关于jmf不能播放mp3的问题解决
想写个JAVA的MP3音乐管理器,使用JMF插件,但发现运行时总报一个异常: Unable to handle format: mpeglayer3, 44100.0 Hz, 16-bit, Ster ...