MyException - 我的异常网
当前位置:我的异常网» Apache » Apache2.2+tomcat6集群载荷匀衡

Apache2.2+tomcat6集群载荷匀衡

www.MyException.Cn  网友分享于:2015-08-26  浏览:0次
Apache2.2+tomcat6集群负载匀衡

最近更新列表

1.IBM的aix中安装jdk(7月21更新)
2.Linux(CentOS)中安装jdk (7月21更新)
3.Linux(CentOS)安装weblogic (7月22更新)
4.Aix系统中安装webLogic (7月22更新)
5.IBM实体机aix中创建weblogic域 (7月23更新)
6.linux中通过VNC创建weblogic域 (7月23更新)
7.在RedHat 5下安装Oracle 10g详解 (7月24更新)
8.linux启动oracle实例 (7月24更新)
9.linux中通过VNC创建oracle实例及网络监听 (7月25更新)
10.linux中关闭ip6的方法 (7月25更新)
11.Jconsole、jvisualvm工具介绍
12.Soupui调用webservies帮助文档
13.Loadrunner 调用Webservice接口测试优化
14.Loadrunner脚本读取XMl文件
15.使用Xmanager远程Aix系统
16.Xmanager图形化远程到aix系统
17.将普通jar文件打包成osgi bundle的方法
18.代码检查规范Checkstyle配置
19.Webloigc 11g配置集群帮助文档
20.Activemq集群配置文档
21.Apache2.2+tomcat6集群配置
22.修改计算机名导致oracle实例不能启动的解决方案
23.导入带有oracle安装程序的虚拟机需要的配置
24.给tomcat和weblogic启动窗口设置标题
25.Tomcat配置下载服务器
26.win8下开启虚拟机hyper-v功能

27.windows、linux、aix查询端口号被哪个程序占用

28. linux下递归的改变目录权限

29.Apache的配置虚拟目录

 

 

1、预备知识

 

本文讲Apache2.2+tomcat集群负载匀衡

 

1.1 本文环境

 

Ø 平台: Wind7

 

Ø 软件: Apache2.2+tomcat6

 

Ø 软件: SOAWARE 3.5

 

Ø 软件: jdk1.6

 

2、工具安装

 

2.1 apche2.2介绍

 

Apache是http服务器,我们利用其对Tomcat进行负载均衡。目前最新版本为2.2.17,下载地址为http://httpd.apache.org/download.cgi#apache22。

 

 

目前已经出现Apache2.3.11,但是为beta版本,所以没有使用。

 

下载后直接安装msi即可,如果没有其他的http服务器(如iis)则应该可以成功安装,端口即为80,能够访问http://localhost/说明安装成功。

 

 

2.2 Tomcat

 

Tocmat7目前已经出现稳定版本的7.0.12,Tomcat6则为6.0.32。经我测试,这2个版本的Apache负载均衡配置过程都是一样的,因此下面的配置在Tomcat6或7集群是通用的。但是按照下面的配置,集群中Tomcat不能既有Tomcat6又有Tomcat7,否则虽能够负载均衡,但不能进行session复制,不知其他方式配置的集群是否可以。

 

Tomcat就不用怎么介绍了。既然在本地需要多个节点,那么需要下载ZIP版本的Tomcat。

 

2.3 JK

 

JK是Tomcat提供给http服务器的插件(个人理解的),下载地址为http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/。如下图:

 

这里选择的是mod_jk-1.2.31-httpd-2.2.3.so,如果http服务器是Apache2.0.X版本,则必须选择mod_jk-1.2.31-httpd-2.0.52.so,页面下方有英文的说明,大家可以看下。

 

其实我也在网上看到Apache2.2已经集成Tomcat插件模块了,可以不用JK插件就可以实现Tomcat负载均衡,但也需要一些配置,而JK这个配置相比也不复杂,就先记录下来。

 

3、配置过程

 

下面就直接写过程了,我也是网络上学习的,只是总结下过程并且利用最新的Apache和Tomcat测试了下,还是与网络上有些不同的。

 

3.1修改Apache配置

 

 

3.3.1、修改conf/httpd.conf

 

我的Apache安装在D:\Program Files\Apache Software Foundation\Apache2.2,找到conf目录下的httpd.conf,在文件的最后一行添加

 

include "D:\Program Files\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"

 

3.1.2 、 新建conf/mod_jk.conf文件

 

内容如下:

 

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so

 

JkWorkersFile conf/workers.properties

 

#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名

 

JkMount /*.jsp controller

 

3.1.3 、 将下载的JK插件

 

mod_jk-1.2.31-httpd-2.2.3.so复制到Apache安装目录的modules目录下。

 

3.1.4 、新建并编辑conf/workers.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=192.168.0.80 //在我的虚拟机中的,可以算远程的吧

 

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,此处配置了3个Tomat服务器,2个本地,1个远程,所以为了它们都能够顺利启动起来,本地的服务器端口都是不同的,如果Tomcat不再同一机器上,没必要改端口的。

 

 

 

 

 

3.2 配 置tomcat

 

配置3个Tomcat服务器,将Tomcat解压后复制3份,我将每个文件夹分别命名为Tomcat1,Tomcat2和Tomcat3,修改每一份的server.xml配置, 如果在同一台电脑上配置tomcat集群,需要把配置好的tomcat环境变量去掉,不然计算机始终会去环境变量下面的tomcat

 

3.2.1 配置tomcat1

 

如果你的tomcat节点不在同一台机器上,则不需要配置。修改tomcat1的server.xml文件。

 

 

 

 

3.2.2 配置tomcat2

 

因为我是同一台电脑上配置的多个tomcat,因些Server的port改为和第一个tomcat不一样的tomcat,修改tomcat2的server.xml文件

 

 

 

 

 

 

 

 

 

 

 

3.2.3 配置Tomcat3(若无虚拟机可省略此步)

 

修改虚拟机中Tomcat3中以上部分的server.xml为:

 

 

因为Tomat3在远程服务器,所以没必要改端口的,而我先进行的本地集群测试后将Tomcat3复制到远程服务器,所以这3个Tomcat端口都不同。

 

AJP13的connector的poat和jvmRoute名称和workers.properties中配置对应。

 

由于截图面积有限,还需要保证本地2个本地Tomcat配置server的port,connector为http1.1的port都不相同。

 

3.3 测试项目

 

3.3.1、测试项目目录

 

 

 

建立test项目,需要在项目的web.xml中添加<distributable/>

 

 

 

 

 

 

建立test.jsp内容如下

 

<%

 

System.out.println("===========");

 

%>

 

 

 

建立test2.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="test2.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>

 

 

 

 

 

Web-INF/Web.xml内容如下

 

<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>TomcatDemo</display-name>

 

<distributable/>

 

</web-app>

 

上面的test项目不用多说,很简单就三个文件。

 

3.3.2 、 session测试

 

将test项目部署到3个tomcat服务器,然后分别启动Apache和3个Tocmat服务器,这些Tomcat启动顺序随意,然后打开http://localhost/test/test2.jsp,结果如下图:

 

 

F5刷新后 ID 为tomcat1与tomcat2切换

 

 

以上的测试说明,集群中的session已经共享,每个集群对于同一访问均有相同的session,而且session中存储的变量也复制了。

 

 

 

3.4 tomcat 集群发部Soaware注意事项

 

3.4.1 、 tomcat集群下面的SA,同一udp端口负载匀衡

 

通过apache+tomcat集群下面发布SA,只要udp端口一样,则集群下面的所有Sa项目负载匀衡。

 

3.4.2 、tomcat集群下的SA发布项目共享

 

通过apache+tomcat集群下面发布SA,只要udp端口一样,则集群下面的所有Sa项目共享。

 

文章评论

程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
漫画:程序员的工作
漫画:程序员的工作
那些争议最大的编程观点
那些争议最大的编程观点
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
总结2014中国互联网十大段子
总结2014中国互联网十大段子
 程序员的样子
程序员的样子
为什么程序员都是夜猫子
为什么程序员都是夜猫子
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
我是如何打败拖延症的
我是如何打败拖延症的
旅行,写作,编程
旅行,写作,编程
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员的鄙视链
程序员的鄙视链
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java程序员必看电影
Java程序员必看电影
中美印日四国程序员比较
中美印日四国程序员比较
程序员必看的十大电影
程序员必看的十大电影
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员和编码员之间的区别
程序员和编码员之间的区别
我的丈夫是个程序员
我的丈夫是个程序员
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
老程序员的下场
老程序员的下场
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员应该关注的一些事儿
程序员应该关注的一些事儿
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
10个调试和排错的小建议
10个调试和排错的小建议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
编程语言是女人
编程语言是女人
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
代码女神横空出世
代码女神横空出世
程序员都该阅读的书
程序员都该阅读的书
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有