??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日韩在线观看,亚洲AV综合色区无码二区偷拍,亚洲国产成人久久精品99http://m.tkk7.com/ricki/category/24184.html茹呲E鎂zh-cnTue, 14 Aug 2007 04:47:12 GMTTue, 14 Aug 2007 04:47:12 GMT60apache2.2和tomcat5.5 http://m.tkk7.com/ricki/archive/2007/08/12/136147.htmlrickirickiSun, 12 Aug 2007 03:11:00 GMThttp://m.tkk7.com/ricki/archive/2007/08/12/136147.htmlhttp://m.tkk7.com/ricki/comments/136147.htmlhttp://m.tkk7.com/ricki/archive/2007/08/12/136147.html#Feedback0http://m.tkk7.com/ricki/comments/commentRss/136147.htmlhttp://m.tkk7.com/ricki/services/trackbacks/136147.htmlApache和Tomcat同是Apache基金会下面的两个目。一个是HTTP WEB服务器,另一个是servlet容器Qservlet containerQ,最新的5.5.Xpd实现Servlet 2.4/JSP 2.0Spec。在我们生的环境中Q往往需要Apache做前端服务器QTomcat做后端服务器。此时我们就需要一个连接器Q这个连接器的作用就是把 所有Servlet/JSP的请求{lTomcat来处理。在Apache2.2之前Q一般有两个lg可选择。mod_jk和mod_jk2。后?mod_jk2没更CQ{而更新mod_jkQ所以现在一般都使用mod_jk做Apache和Tomcat的连接器。要指出的是mod_jk支持 Apache 1.x?.Xpd?br>不过Q自从Apache2.2出来后,你又多了U选择Q那是proxy-ajp.大家知道Apache里的proxy模块Q可以实现双向代理功能,功能 非常强大。其实从q接器的实现原理上来_用proxy模块来实现是非常自然的。proxy模块的功能无非就是把相关的请求发l特定的L再返回结果。那 q接器的功能需求就是要把所有对Servlet/JSP的请求都转给后台的Tomcat。而且所FreeBSD邮g列表上说Q用proxy-ajp要比 mod_jk的效率要高。就我一个外行来看,臛_使用Apache自带模块Q要比另外编译的来得可靠?br>

apache2.2和tomcat5.5是一个不错的l合Q可以作为开发环境或者是工作服务器。在配置前需要下载以下几个文Ӟ
1.下蝲JDK
http://192.18.108.228/ECom/EComTicketServlet/BEGIN7CF7E6A4BCB54064E5D90FCCE00D7048/-2147483648/1579524843/1/732086/731822/1579524843/2ts+/westCoastFSEND/jdk-1.5.0_07-oth-JPR/jdk-1.5.0_07-oth-JPR:2/jdk-1_5_0_07-windows-i586-p.exe
2.下蝲apache2.2
http://mirror.vmmatrix.net/apache/httpd/binaries/win32/apache_2.2.2-win32-x86-no_ssl.msi
3.下蝲tomcat5.5.17
http://apache.justdn.org/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.exe


一、安装和配置JDK
下蝲下来后,直接执行jdk-1.5.0_07-oth-JPR:2/jdk-1_5_0_07-windows-i586-p.exe
实装时徏议选择单的路径Q如E:\Web_Server\jdk1.5.0\
安装最后会要求安装jre,l箋下一步就?安装路径E:\Web_Server\jre1.5.0\?br>
装完后添加或~缉三个pȝ变量(已经有就~缉Q没有就新徏)Q?br>在PATH变量֊?;E:\Web_Server\jdk1.5.0\bin\" (注意有个分号)
新徏Web_Server_HOME变量Qgؓ "E:\Web_Server\jdk1.5.0\"
新徏CLASSPATH变量Qgؓ "E:\Web_Server\jdk1.5.0\lib\tools.jar"

二、安装和试apache
在安装前如已安装了IISQ请先停止IIS服务。因为IIS和apache都默认?0端口Q否则会冲突?br>同样直接q行安装apache_2.2.2-win32-x86-no_ssl.msiQ徏议选择单的路径Q如E:\Web_Server\ apache2.2\。安装时会要求输入一些关于这台服务器的信息,如域名、管理员邮箱Q这些信息将会加入到httpd.conf文g中?br>
安装完配|httpd.conf文gQ在E:\Web_Server\apache2.2\conf\?br>用文本编~器打开httpd.conf,在DirectoryIndex index.html后添加index.jsp

试Q在IE中输?/span>http://localhost/,如果apache工作应该可以看到"It works!"q样的页面?br>
三、安装和试tomcat
直接q行安装tomcat,安装路径为E:\Web_Server\tomcat5.5\
安装完,好像步骤一Q添加一个系l变量TOMCAT_HOME,变量gؓ"E:\Web_Server\tomcat5.5\"
最后测试tomcatQ因为tomcat默认使用?080端口Q所以在IE输入
http://localhost:8080,正常工作会看见一只小猫的面?br>
四。整合apache和tomcat
|上很多是通过mod_jk来整合的Q由于apache2.2本n已经支持tomcat了,所以这里用proxy来整合tomcatQ先把apache和tomcat都停止了。然后打开httpd.conf文gQ把
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
前面?号去掉,在文件最后添?br>ProxyPass /images/ !
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
上面几名只是对apacheq行单的优化?br>
五、最后测试整合后的apache+tomcat
启动apacheQ再启动tomcat,准备以下代码的jsp文gQ以便测试?br><%@ page contentType="text/html;charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>JSP试面</TITLE>
</HEAD>
<BODY>
<%out.println("<h1>Hello World! </h1>");%>
</BODY>
</HTML>
保存为test.jsp
在E:\Web_Server\tomcat5.5\webapps\ROOT\下新Z个文件夹myjsp,q把test.jsp攑֜里面?br>在IE中输?/span>http://localhost:8080/myjsp/test.jsp
再输?/span>http://localhost/myjsp/test.jsp
如果两次都显CHello World!说明已经成功整合了?br>

============================
Ҏ之二Q?br>Windows环境下的tomcat + apache配置(l对实践操作?
关键词: tomcat apache

Apache的HTTPD是目前比较受Ƣ迎的网站服务器软gQ它不但功能强大Q而且完全免费Qƈ且支持市Z行的各U操作系l?Windows, Linux,Mac os)。同时对于Java Servlet/JSP的支持,通常也会使用同样Apache出品的Tomcat?br>Tomcat除了支持Java Servlet/JSP之外Q也可以当做|站服务器用,但是在对于静态的html文g、图片文件等的解析效率上不如Apache HTTPD的执行效率高。应用tomcat的服务器如果|站的访问量较大Q系l资源占用会明显升高Q近日笔者在目执行q程中遇到这一问题Q便也想到同?应用tomcat+apache服务。Apache负责静态资源处理,tomcat负责jsp和java servlet{动态资源的处理。在|上看了不少介绍Apache和Tomcat集成的帖子。大多ؓ互相转脓Q有几个关键问题没有讲清楚,q且多数文章?解中所丄软g版本都已l比较老旧。因而笔者ȝ自己实际操作的经验,希望对大家有所帮助?br>
准备工作Q?br>1?apache 2.0.55
下蝲地址Q?/span>http://apache.justdn.org/httpd/binaries/win32/apache_2.0.55-win32-x86-no_ssl.msi
2?Tomcat 5.5
下蝲地址Q?/span>http://tomcat.apache.org/download-55.cgi
3?JRE1.5.0 update6
下蝲地址Q?/span>http://java.sun.com/j2se/1.5.0/download.jsp
你也可以选择安装JDK,JDK不仅包含了运行java应用E序的支持,同时也包含J2SE的开发包。但如果您只是应用的话,我徏议您仅下载JRE卛_Qؓ什么?因ؓ它小啊:Q?br>4、JK-apache-2.0.55
下蝲地址Q?br>
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/mod_jk-apache-2.0.55.so
注意jk的版本一定要与你的apache版本相同。Jk下蝲可以直接到apache.org官网下蝲Q有多种版本Q适用于各U操作系l,地址如下Q?br>
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
windows用户q入win32目录Q不同的tomcat对应不同jk文g扩展名不同,有可能是*.dll,或?.soQ根据你的tomcat版本下蝲合适的jk版本?br>
安装QY件的安装序可以适当调整Q但是jre(jdk)一定要在tomcat之前安装Q?br>1、安装JRE(JDK)
此处选择默认安装卛_Q?旧版本的JDK安装完之后需要设|系l的环境变量QJRE和JDK1.5.0以后版本不设|也没关pR?安装完成之后你可以选择按照下面的示例设|你的系l环境变量:我的电脑->右键属?>常规->高->环境变量
JAVA_HOME = d:\Java\jre1.5.0_06
CLASSPATH = .;d:\Java\jre1.5.0_06\lib\dt.jar;d:\Java\jre1.5.0_06\lib\tools.jar
PATH = d:\Java\jre1.5.0_06\bin
注意文g路径要改成你实际安装的\径?br>
2、Apache安装
此处注意Q如果你本机已经装了iisq且占用80端口,务必先在服务中将iis停止或禁用。Y仉认安装即可。安装过E中讄Network Domain和Server Name为localhost,讄你的email地址Q下方会让你选择only for the current user或for all users。默认选择for all users。这样Apache׃占用80端口Qƈ且做Z个系l服务开q行?br>安装完成之后Q你在浏览器中输?/span>http://localhost, 会看到Apache的成功页?Apache的主目录是d:\Apache\Apache2,此时Apache,已经q行,你可以在H口的托盘看C?图标,双击图标Q在弹开的窗口选择"Open Apache Monitor",点StopQ停止Apaceh服务Q因Z面要安装Tomcat和JK.

3、Tomcat安装
选择安装目录Zd:\Tomcat,其余为默认安?成功后在览器中输入
http://localhost:8080,出现Tomcat面表示安装成功了。关于tomcat的设|已l有很多非常详细的文章,在此׃再详qC?br>
4、JK的安?br>把mod_jk_2.0.55.so拯到d:\Apache\Apache2\modules\?

以上安装全部完成?打开cmd命o提示W?q行d:\Apache\Apache2\bin\Apache.exe -t 你将会看?Syntax OK"Q表CApache配置正常Q这个命令非常有用,下面在l配|Apache的时候还会再ơ用到?br>
配置服务器:

1、配|Tomcat
查找目录下的conf/workers.properties文gQƈҎ下方文本内容Q如有不同以下方内容为准修改?br>workers.tomcat_home=d:\Tomcat #让mod_jk模块知道Tomcat的位|?br>workers.java_home=d:\Java\jre1.5.0_06 #让mod_jk模块知道jre的位|?br>ps=\
worker.list=ajp13 #模块版本
worker.ajp13.port=8009 #工作端口,若没占用则不用修?br>worker.ajp13.host=localhost #本机,若上面的ApacheL不ؓlocalhost,作相应修?br>worker.ajp13.type=ajp13 #cd
worker.ajp13.lbfactor=1 #代理?不用修改

如果文g不存在则创徏。ƈ填充上述内容?br>
2、配|Apache
打开d:\Apache\Apache2\conf下的httpd.confQ在最后加入下面这D代码ƈ保存?br>#讄Apache与Tomcat之间的连接,让Apache遇到jsp文gӞ在后台将其交由Tomcatd?br>LoadModule jk_module modules/mod_jk_2.0.55.so
#此处mod_jk的文件ؓ你下载的文g
JkWorkersFile "d:/Tomcat/conf/workers.properties"
#指定tomcat监听配置文g地址
JkLogFile "d:/Tomcat/logs/mod_jk2.log"
#指定日志存放位置
JkLogLevel info

#讄虚拟L

ServerAdmin localhost
DocumentRoot d:/test1
#您的站点目所在\径,应与tomcat中的目录讄相同
ServerName localhost
DirectoryIndex index.html index.htm index.jsp
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /servlet/* ajp13
#让Apache支持对servlet传送,用以Tomcat解析
JkMount /*.jsp ajp13
#让Apache支持对jsp传送,用以Tomcat解析
JkMount /*.do ajp13
#让Apache支持?do传送,用以Tomcat解析


#开头的行ؓ注释Q可以删除。此处的配置我是以设|虚拟目录,重新指定了serverName,DocumentRoot路径的方式配|站点,实际上, Apache的配|可以非常灵z,你也可以不采用虚拟目录的方式Q而直接去修改站点的默认配|,使用L文本~辑工具Q搜索如ServerName, DocumentRoot,ServerAdmin{相关项Q然后将该项的配|根据你的实际情况进行修改即可。我大家可以多多试不同的配|,q是一 U很有乐的体验?br>所有的修改完成q后Q再ơ执行d:\Apache\Apache2\bin\Apache.exe -t 如果看到"Syntax OK"Q说明你所有配|无误,双击H口的托盘中的图标,然后点击Startq行?br>在地址栏中分别输入
http://localhost/Q与http://localhost:8080/若结果相?Apache与Tomcat整合成功

ricki 2007-08-12 11:11 发表评论
]]>
Tomcat5.5集群配置http://m.tkk7.com/ricki/archive/2007/08/09/135559.htmlrickirickiThu, 09 Aug 2007 09:23:00 GMThttp://m.tkk7.com/ricki/archive/2007/08/09/135559.htmlhttp://m.tkk7.com/ricki/comments/135559.htmlhttp://m.tkk7.com/ricki/archive/2007/08/09/135559.html#Feedback0http://m.tkk7.com/ricki/comments/commentRss/135559.htmlhttp://m.tkk7.com/ricki/services/trackbacks/135559.html一、配|环?br>
下蝲和安?JRE 1.5 最新版 Q?.5.06Q?
下蝲和安?Tomcat 最新版 Q?.5.12Q,假定安装目录?C:\Program Files\Apache Software Foundation\Tomcat 5.5
二、 Tomcat 集群配置生效

修改 Tomcat 安装目录\conf\server.xml Q把 Server/Service/Engine/Host 下的 Cluster l点前后的注释符Q?lt;!-- ?-->Q删除,q保?br>三、配|第二个 Tomcat 实例

?C:\Program Files\Apache Software Foundation\ 下新建目?Tomcat 5.5 Instance1
?C:\Program Files\Apache Software Foundation\Tomcat 5.5 目录下的全部内容复制?C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1
修改新实例的服务器配|文?QC:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\conf\server.xmlQ,把其中的 Server/Service/Connector 的端口更改,以避免和W一个冲H(8080 -> 9080Q?009 -> 9009Q?443 -> 9443Q?
修改 Cluster/Receiver l点?tcpListenPort 端口Q此端口用于 Session 复制Q,以避免和W一个冲H(4001 -> 4002Q?br>注:Tomcat Cluster 默认使用多播来徏立成员关p,即两个实例的多播的地址和端口一P可以互相认为是同一?Cluster 的成员?br>
四、启动验证两?Tomcat 实例能否正常工作

直接用程序菜单里?Monitor Tomcat 来启动第一个实例(或在服务器里启动Q?
W二个实例启动稍微麻烦一些,?C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\Bin 下徏一?startup.bat Q用如下 java 命o来启动:
"C:\Program Files\Java\j实re1.5.0_06\bin\java.exe" -jar .\bootstrap.jar -Dcatalina.home="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1" -Dcatalina.base="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1" -Djava.endorsed.dirs="C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\endorsed" -Djava.io.tmpdir="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\temp" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="C:\Program Files\Apache Software Foundation\Tomcat 5.5 Instance1\conf\logging.properties" start

看v来挺长,其实主要是第二个实例的安装目录太长的~故Q直接执行此批处理就可以启动W二个实例,如果配置正确Q应该可以看到集管理器启动Qƈ和第一个实?  建立成员关系的信息?br>
五、写一个简单Web应用Q能昄和设|?Session 属性|以供试

如果有开发工P新徏一?Web App Q假设ؓ TomcatDemo
新增 index.jsp Q加入如下代码:
<%@ page contentType="text/html; charset=UTF-8" import="java.util.*"%>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info: <%out.print(request.getLocalAddr() + " : " + request.getLocalPort());%>
<%
out.println("<br> ID " + session.getId());

// 如果有新?Session 属性设|?br>String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
  String dataValue = request.getParameter("dataValue");
  session.setAttribute(dataName, dataValue);
}

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

Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
  String name = (String)e.nextElement();
  String value = session.getAttribute(name).toString();
  out.println( name + " = " + value);
  }
%>
<form action="index.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>


以上代码主要是显C服务器信息?Session |q包含一?Form Q可以随时新Z?Session 属性?br>
修改此用应用?Web.xml Q加?distributable 属性,表示 Tomcat 要ؓ?Web 应用复制 Session  
<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>

应用打包成 WAR 文gQ分别上C个实例的 Tomcat Manager 来部|?br>(如果没有 Java 开发工P可以直接建立一?TomcatDemo 的目录,?Notepad 如上的内容复制q保存成 index.jspQ然后在此目录下新徏子目?WEB-INFQ再?Notepad 新徏一 Web.xml 文gQ将上面的代码复制保存,然后此目录压羃?Zip 文gQ再把后~Ҏ .war Q或利用 jar 命o来创?.war 文gQ?br>
六、测?Tomcat 集群?Session 复制的是否工?br>
?IE 中打开W一个实例中?TomcatDemo Q?/span>http://localhost:8080/TomcatDemoQ,?Form 里随便设|一?Session 属性,?MyName = foo
?IE 地址栏中的地址修改为第二个实例中的 TomcatDemoQ?/span>http://localhost:9080/TomcatDemoQ,hQ就可以看到注意?SessionID 不变Q?MyName 的属性值已有了
同样Q如果在W二实例中设|的|在第一个实例的面中也能看?br>注意Q必d同一?IE H口中进行如上测试,以保证是同一?Session Q如果是两个H口Q则 Session 可能不同Q也互相看不?Session 复制的结果?br>
七、其它工?br>
上述只实C Session 复制Q而没有实?Load BalanceQ负载均衡)Q这可以利用 Apache {来实现?/span>

ricki 2007-08-09 17:23 发表评论
]]>
Apache,Tomcat集群和负载均?/title><link>http://m.tkk7.com/ricki/archive/2007/08/09/135530.html</link><dc:creator>ricki</dc:creator><author>ricki</author><pubDate>Thu, 09 Aug 2007 08:14:00 GMT</pubDate><guid>http://m.tkk7.com/ricki/archive/2007/08/09/135530.html</guid><wfw:comment>http://m.tkk7.com/ricki/comments/135530.html</wfw:comment><comments>http://m.tkk7.com/ricki/archive/2007/08/09/135530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/ricki/comments/commentRss/135530.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/ricki/services/trackbacks/135530.html</trackback:ping><description><![CDATA[<strong>环境说明</strong> <p style="FONT-SIZE: 10pt">       Apache  :apache_2.0.55     1 ?/p> <p style="FONT-SIZE: 10pt">       Tomcat:  apache-tomcat-5.5.17 (zip? 2?/p> <p style="FONT-SIZE: 10pt">       mod_jk:: mod_jk-apache-2.0.55.so  1?/p> <p style="FONT-SIZE: 10pt"><strong>W一部分Q负载均?/strong></p> <p style="FONT-SIZE: 10pt">    负蝲均衡Q就是apache客戯求均衡的分给tomcat1,tomcat2....d?/p> <p style="FONT-SIZE: 10pt"><strong>   1.安装apche,tomcat</strong></p> <p style="FONT-SIZE: 10pt">   <a ><u><font color=#800080>http://httpd.apache.org/</font></u></a> 下蝲Apache 2.0.55</p> <p style="FONT-SIZE: 10pt">    <a ><u><font color=#800080>http://tomcat.apache.org/download-55.cgi</font></u></a> 下蝲tomcat5.5 zip版本Q解压即可,l色版)</p> <p style="FONT-SIZE: 10pt">   <a ><u><font color=#0000ff>http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/</font></u></a>  下蝲mod_jk,注意?nbsp; apache版本匚w</p> <p style="FONT-SIZE: 10pt">   按照jdk,我的路径?E:\ide\apache\Apache2</p> <p style="FONT-SIZE: 10pt">   解压两䆾Tomcat, 路径分别?E:\ide\tomcat1,E:\ide\tomcat2</p> <div style="FONT-SIZE: 10pt" forimg="1"><img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/9d61f003d5034eec09fa935b.jpg" border=0 small="0"></div> <p style="FONT-SIZE: 10pt">下蝲mod_jk</p> <div style="FONT-SIZE: 10pt" forimg="1"></div> <div style="FONT-SIZE: 10pt" forimg="1"><img height=436 alt=2.gif src="http://m.tkk7.com/images/blogjava_net/killme2008/2.gif" width=618 border=0></div> <div style="FONT-SIZE: 10pt" forimg="1"></div> <div style="FONT-SIZE: 10pt" forimg="1"></div> <p style="FONT-SIZE: 10pt"><strong>2.修改Apache配置文ghttp.conf</strong></p> <p style="FONT-SIZE: 10pt">   在apache安装目录下conf目录中找到http.conf</p> <p style="FONT-SIZE: 10pt">   在文件最后加上下面一句话可以了</p> <p style="FONT-SIZE: 10pt">  include "E:\ide\apache\Apache2\conf\mod_jk.conf"</p> <div style="FONT-SIZE: 10pt" forimg="1"><img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/d1c28cd49b8d6901a08bb720.jpg" border=0 small="0"></div> <div style="FONT-SIZE: 10pt" forimg="1"></div> <div style="FONT-SIZE: 10pt" forimg="1"></div> <div style="FONT-SIZE: 10pt" forimg="1"><strong>2. http.conf 同目录下新徏mod_jk.conf文gQ内容如?br><br></strong>#加蝲mod_jk Module<br>LoadModule jk_module modules/mod_jk-apache-2.0.55.so<br>#指定 workers.properties文g路径<br>JkWorkersFile conf/workers.properties<br>#指定那些h交给tomcat处理,"controller"为在workers.propertise里指定的负蝲分配控制?br>JkMount /*.jsp controller<br><br><strong>3.在http.conf同目录下新徏 workers.properties文gQ内容如?br><br></strong>worker.list = controller,tomcat1,tomcat2  #server 列表<br>#========tomcat1========<br>worker.tomcat1.port=8009         #ajp13 端口P在tomcat下server.xml配置,默认8009<br>worker.tomcat1.host=localhost  #tomcat的主机地址Q如不ؓ本机Q请填写ip地址<br>worker.tomcat1.type=ajp13<br>worker.tomcat1.lbfactor = 1   #server的加权比重,D高,分得的请求越?br>#========tomcat2========<br>worker.tomcat2.port=9009       #ajp13 端口P在tomcat下server.xml配置,默认8009<br>worker.tomcat2.host=localhost  #tomcat的主机地址Q如不ؓ本机Q请填写ip地址<br>worker.tomcat2.type=ajp13<br>worker.tomcat2.lbfactor = 1   #server的加权比重,D高,分得的请求越?br>#========controller,负蝲均衡控制?=======<br>worker.controller.type=lb<br>worker.controller.balanced_workers=tomcat1,tomcat2   #指定分担h的tomcat<br>worker.controller.sticky_session=1<br><br><strong>4.修改tomcat配置文gserver.xml<br><br></strong>如果你在不同电脑上安装tomcat,tomcat的安装数量ؓ一个,可以不必修改tomcat配置文g<br>我这里是在同一台电脑上安装两个tomcatQ所以需要更改其中一个的讄<br>打开tomcat2/conf/server.xml文g</div>          <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/a3d133a8ed4063b1ca130c36.jpg" border=0 small="0"><br>         <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/8c3cae7727b25d1bb151b937.jpg" border=0 small="0"><br>         <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/56b04b085ba7f3950b7b8230.jpg" border=0 small="0"><br><br><strong>5.~写一个测试jsp<br></strong>建立一个目录test.里面新徏一个test.jsp,内容?br><% <br>   System.out.println("===========================");<br>%><br><br>把test攑ֈtomcat1,tomcat2的webapps?br><br><strong>6.启动apache,tomcat1,tomcat2,q行试<br></strong>通过 <a href="http://localhost/test/test.jsp"><u><font color=#800080>http://localhost/test/test.jsp</font></u></a> 讉KQ查看tomcat1的窗口,可以看到打印了一?=========="<br>再刷Cơ,tomcat2也打C一条,再刷斎ͼ可以看到h会被tomcat1,tomcat2轮流处理,实现了负载均?<br>        <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/acf2fcf2c8b77d13b17ec53d.jpg" width=916 border=0 small="0"><br><br><strong>W二部分Q配|集?br><br></strong>   只配|负载均衡还不行Q还要session复制Q也是说其中Q何一个tomcat的添加的sessionQ是要同步复制到其它tomcatQ?集群内的tomcat都有相同的session<br><br><strong>1. 修改tomcat1, tomcat2的server.xml</strong>,集部分配|的在注释符删掉,q将tomcat2?001端口改ؓ4002Q以避免与tomcat冲突Q当Ӟ如果是两台电脑,是不用改端口的,L注释W即?nbsp; <br>       <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/aa4ab5fb0f3582224f4aeab2.jpg" border=0 small="0"><br>       <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/89b84c3627ecc1dda3cc2b92.jpg" border=0 small="0"><br>       <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/cc4b858b603d47d3fd1f10b2.jpg" border=0 small="0"><br>       <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/52dfdac4bc506ecb38db4959.jpg" border=0 small="0"><br><strong>2Q修Ҏ试项目test<br><br></strong>修改test.jsp,内容如下<br><br><%@ page contentType="text/html; charset=GBK" %><br><%@ page import="java.util.*" %><br><html><head><title>Cluster App Test</title></head><br><body><br>Server Info:<br><%<br>out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%><br><%<br>  out.println("<br> ID " + session.getId()+"<br>");<br> // 如果有新?Session 属性设|?br>  String dataName = request.getParameter("dataName");<br>  if (dataName != null && dataName.length() > 0) {<br>     String dataValue = request.getParameter("dataValue");<br>     session.setAttribute(dataName, dataValue);<br>  }<br>out.print("<b>Session 列表</b>");<br>Enumeration e = session.getAttributeNames();<br>  while (e.hasMoreElements()) {<br>     String name = (String)e.nextElement();<br>     String value = session.getAttribute(name).toString();<br>     out.println( name + " = " + value+"<br>");<br>         System.out.println( name + " = " + value);<br>   }<br>%><br>  <form action="index.jsp" method="POST"><br>    名称:<input type=text size=20 name="dataName"><br>     <br><br>    ?<input type=text size=20 name="dataValue"><br>     <br><br>    <input type=submit><br>   </form><br></body><br></html><br><br>然后在test 新徏WEB-INF目录QWEB-INF下新建web.xml,内容如下<br><web-app xmlns="<a ><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a>" xmlns:xsi="<a ><u><font color=#0000ff>http://www.w3.org/2001/XMLSchema-instance</font></u></a>" xsi:schemaLocation="<a ><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee</font></u></a> <a ><u><font color=#0000ff>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</font></u></a>" version="2.4"><br>       <display-name>TomcatDemo</display-name><br>      <strong><font color=#ff0000> <distributable/></font></strong><br></web-app><br><br>注意Q在你的应用的web.xml加入 <font color=#ff0000><strong> <distributable/></strong> </font><font color=#000000>卛_</font> <br>ok,讲test复制到tomcat1,tomcat2的webapps下,重启apache,tomcat1,tomcat2,输入|址 <a href="http://localhost/test/test.jsp"><u><font color=#800080>http://localhost/test/test.jsp</font></u></a>   <br>新徏一?名称?xiaoluo  ,gؓ cdut 的session,提交查询Q新开一个ieH口Q再提交查询Q如图,可以看到Q两个tomcat 是负载均衡,q且session同步?br>        <img class=blogimg src="http://hiphotos.baidu.com/luodaijun/pic/item/79a9317af99aa5ed2e73b385.jpg" width=916 border=0 small="0">      <img src ="http://m.tkk7.com/ricki/aggbug/135530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/ricki/" target="_blank">ricki</a> 2007-08-09 16:14 <a href="http://m.tkk7.com/ricki/archive/2007/08/09/135530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache+JK+Tomcat负蝲q配置http://m.tkk7.com/ricki/archive/2007/07/18/130978.htmlrickirickiWed, 18 Jul 2007 02:11:00 GMThttp://m.tkk7.com/ricki/archive/2007/07/18/130978.htmlhttp://m.tkk7.com/ricki/comments/130978.htmlhttp://m.tkk7.com/ricki/archive/2007/07/18/130978.html#Feedback0http://m.tkk7.com/ricki/comments/commentRss/130978.htmlhttp://m.tkk7.com/ricki/services/trackbacks/130978.html|上关于Apache + JK + Tomcat的集配|例子很多,按着例子配置下来Q基本都能运行,不过Q在一些重要的地方却没有进一步的说明。这ơ公怸个品就是采用Apache+JK+Tomcat集群Q在整个配置、测试过E中Q遇C许多的问题,l过不断试、摸索,最后ȝ是搞定了Q性能也达C预期的目标。针对网上的例子Q感觉有必要再详l的介绍一下我的配|过E,对一些要特别注意的地方进行补充?/p>

集群有别于分布式的解x案,它采用的是每台服务器q行相同应用的策略,p责^衡的服务器进行分,q对提高整个pȝ的ƈ发量及吞吐量是更有效的办法。而集对h的处理又有两U不同的方式Q负载^衡、状态复?即集?Q状态复刉要在各服务器间复制应用状态,而负载^衡则不用Q每台服务器都是独立的。实践证明,在各应用服务器之间不需要状态复制的情况下,负蝲q可以辑ֈ性能的线性增长及更高的ƈ发需求?/p>

对于集群的其它基知识Q在此就不再做篏赘。以下就q次Apache + JK + Tomcat的负载^衡配|进行ȝQ重点关注整个配|及注意事项?/p>

准备软g

1?nbsp;Tomcat或JBossQ本文档中采用的是JBoss4.0.2Q;

2?nbsp;apache2.0.54是开源的Web服务器,下蝲地址为: http://www.apache.org/dist/httpd/binaries/ Q?/p>

3?nbsp;mod_jk-1.2.14-apache-2.0.54.so模块,jk是mod_jserv的替代者,它是Tomcat-Apache插gQؓApache和Tomcat的连接器Q处理Tomcat和Apache之间的通信Q在集群配置中充当负载均衡器的作用,当前的最新版本ؓ1.2.15Q不q不同JK版本与不同的Apache版本之间的搭配有一些差异,有的甚至配不h。JK2是符合apache2.xpd的新品,但由于其配置太过ȝQ用的人很,所以目前已停止开发,所以我们采用了jkq接器,下蝲地址Q?a >http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/?/p>

集群与负载^?/h2>

使用mod_jk默认的以轮@方式q行q负蝲Q假设有四个服务器节点,?0个请求,则四个节点分别接受请求编号如下:

节点1

节点2

节点3

节点4

1

2

3

4

5

6

7

8

9

10

 

 

而集方式也是用这U方法进行^衡。Tomcat中的集群原理是通过l播的方式进行节点的查找q用TCPq接q行会话的复制?/p>

    集群不同于负载^衡的是,׃集群服务需要在处理h之间不断地进行会话复Ӟ复制后的会话会慢慢变得庞大Q因此它的资源占用率是非帔R的,如果在ƈ发量大的应用中,复制的会话大会变得相当大,而用的d存更是会q速升高?/p>

    但集的会话复制Q增加了pȝ的高可用性。由于在每台服务器都保存有用LSession信息Q如果服务器中某台当机Q应用可以自动切换到其它服务器上l箋q行Q而用L信息不会丢失Q这提高了应用的冗错性?/p>

具体采用负蝲qq是集群Q这要看应用的需求了?/p>

安装配置Apache

1、下载Apache的安装程序apache_2.0.54-win32-x86-no_ssl.exe后,安装很简单,一路回车,此略过?/p>

2、安装完毕后Q将下蝲的mod_jk-1.2.14-apache-2.0.54.so复制到Apache安装目录下的modules子目录中?/p>

3、然后进入Apache安装目录下的conf子目录中Q打开httpd.conf配置文gQ在最后插入以下一行:

Include conf/mod_jk.conf

4?nbsp;在conf子目录下Q徏立一个新的配|文Ӟmod_jk.confQ此文g为Apache加蝲q接器的配置文gQ文件名可修改,但要与httpd.conf中Include的文件名一_内容如下Q?/p>

# Load mod_jk module. Specify the filename

# of the mod_jk lib you’ve downloaded and

# installed in the previous section

#加蝲mod_jk模块

LoadModule jk_module modules/mod_jk-1.2.14-apache-2.0.54.so

# Where to find workers.properties

JkWorkersFile conf/workers2.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel info

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format

JkRequestLogFormat "%w %V %T"

# h分发配置Q可以配|多?/p>

JkMount /* loadbalancer

#xLLookupQ如果ؓonQ很影响性能Q可以有10多秒钟的延迟?br>HostnameLookups Off

注:蓝色加粗的两行是重点Q第一句是Apache加蝲JK模块用的Q第二句为配|哪些URLh由负蝲q器来处理?/p>

5?nbsp;在conf子目录下Q徏立一个新的配|文Ӟworkers2.propertiesQ此文g载^衡的配置文gQ文件名不能修改Q这是JK默认的名字,内容如下Q?/p>

worker.list=loadbalancer

# Define the first node...

worker.server99.port=8009

worker.server99.host=192.168.11.99

worker.server99.type=ajp13

worker.server99.lbfactor=1

worker.server99.local_worker=1

worker.server99.cachesize=1000

worker.server99.cache_timeout=600

worker.server99.socket_keepalive=1

worker.server99.socket_timeout=0

worker.server99.reclycle_timeout=300

worker.server99.retries=3

# Define the second node...

worker.server202.port=8009

worker.server202.host=192.168.11.202

worker.server202.type=ajp13

worker.server202.lbfactor=1

worker.server202.local_worker=1

worker.server202.cachesize=1000

worker.server202.cache_timeout=600

worker.server202.socket_keepalive=1

worker.server202.socket_timeout=0

worker.server202.reclycle_timeout=300

worker.server202.retries=3

# Now we define the load-balancing behaviour

worker.loadbalancer.type=lb

worker.retries=3

worker.loadbalancer.balance_workers=server99 ,server202

worker.loadbalancer.sticky_session=true

worker.loadbalancer.sticky_session_force=true

注:以上定义了两个workerQ一个ؓserver99Q另一个ؓserver202Q定义了一个负载^衡服务器loadbalancerQ其中标蓝色的ؓ重点配置,相关的详l说明可以看官方的网站文档:http://tomcat.apache.org/connectors-doc/Q其它节点的定义可以直接CopyQ修改一下节点名及IP好了?br>A、worker.list=loadbalancer

讑֮工作的负载^衡器Q各Tomcat节点不能加入此列表?/p>

    B、worker.server99.lbfactor

负蝲q的权重比Q如果此权重比越大,则分配到此节点的h多Q如以上两个节点的权重比?:1Q则为^均分配?/p>

C、worker.loadbalancer.balance_workers=server99,server202

   指定此负载^衡器负责的Tomcat应用节点?/p>

D、worker.loadbalancer.sticky_session=true

   此处指定集群是否需要会话复Ӟ如果设ؓtrueQ则表明Z话粘性,不进行会话复Ӟ当某用户的请求第一ơ分发到哪台Tomcat后,后的请求会一直分发到此Tomcat服务器上处理Q如果设为falseQ则表明需求会话复制?/p>

E、worker.loadbalancer.sticky_session_force=true

   如果上面的sticky_session设ؓtrueӞ此处也设为trueQ此参数表明如果集群中某台Tomcat服务器在多次h没有响应后,是否当前的hQ{发到其它Tomcat服务器上处理Q此参数在sticky_session=trueӞ影响比较大,会导致{发到其它Tomcat服务器上的请求,找不到原来的sessionQ所以如果此时请求中有读取session中某些信息的话,׃D应用的null异常?/p>

6、Apache服务器的配置文ghttpd.conf中,默认有三个参数对性能的媄响比较大Q但Ҏ不同的性能要求Q参数的表现又不一P太小q发提不上去Q太大性能反而不好,Ҏ目的需要,实际做个试Q如q发要求800的话Q可以设定ؓQ?/p>

#一个连接的最大请求数?/p>

MaxKeepAliveRequests 1000Qgؓ0Q则不限制数量)

#每个q程的线E数Q最?920。NT只启动父子两个进E,不能讄启动多个q程

ThreadsPerChild    1000Q最大ؓ1920Q?/p>

#每个子进E能够处理的最大请求数

MaxRequestsPerChild   1000Qgؓ0Q则不限制数量)

q三个参数要Ҏ不同的需求,不同的服务器q行调整?/p>

安装配置Tomcat或JBoss

1、对于Tomcat或JBoss的安装,q里不做说明Q目前我们是采用Apache+JBossQ不q,JBoss也是用的TomcatQ所以这里的配置也是适合Tomcat的;

2、对于JBoss的配|,很简单,只需要改两个地方可以了Q?/p>

W一个地方:q入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sarQ打开server.xmlQ大U在W?2行左叻I?engine name="jboss.web" defaulthost="localhost" />Q在其中加入一个参敎ͼ变ؓQ?/p>

W二个地方:q入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sar\META-INF目录Q打开jboss-service.xmlQ大U在110行,?attribute name="UseJK" />falseQ将其改为:

true

q里有一个需要特别注意的地方QJBoss的Tomcat中,关于AJPq接协议的默认配|,对于大ƈ发量是不够用的,要做一些修改,q入jboss-4.0.2\server\default\deploy\jbossweb-tomcat55.sarQ打开server.xmlQ找?!-- A AJP 1.3 Connector on port 8009 -->的地方,q里是定义AJPq接器的地方Q它的配|中没有maxThreads,默认?00Q我们可以做修改Q?/p>

         emptySessionPath="true" enableLookups="false" redirectPort="8443"

         protocol="AJP/1.3" maxThreads="3000"/>

maxThreads的D看你的ƈ发量多大Q设|太大也不好?/p>

q行

xQ整个配|全部完成,注意一ҎQ在各JBoss节点Q重启或新增加一个JBoss节点Ӟ需要重新启动ApacheQ而对于服务器中某个JBoss节点shutdownQApache会自动侦,不用重新启动?/p>

如果在运行过E中Q群中的某个JBoss节点shutdownQ则已登录到此服务器上的用户的请求将出错Q此服务器负责的session丢失,但Apache会自动侦到此服务器已shutdownQ后l的新请求将不会再引导到此节炏V?/p>

对于负责h分发的Apache服务器,需要消耗大量的CPU资源Q因此如果在试q程中出C些Service Temporarily Unavailable或Server  has shut down the connection prematurelyq样的错误,q一般都是服务器配置不够好引LQ或者是Apache、Tomcat、及应用中的某些配置不够使用Q这时候就要考虑换更好的机器或优化应用中的配|?/p>

常见问题

一、cannot connect to serverQ无法连接到服务器。这U情冉|服务器的配置有问题,服务器无法承受过多的q发q接了,需要优化服务器的配|:

如操作系l采用更高版本,如windows 2003 serverQ?/p>

优化tomcat配置QmaxThreads="500" minSpareThreads="400" maxSpareThreads="450"

但是tomcat 最多支?00个ƈ发访?/p>

优化apache配置Q?/p>

ThreadsPerChild 1900

MaxRequestsPerChild  10000

二?nbsp;Action.c(10): Error -27791: Server  has shut down the connection prematurely

HTTP Status-Code=503 (Service Temporarily Unavailable)
一般都是由于服务器配置不够好引LQ需要优化硬件和调整E序了?/p>

三、无法处理请求:

当我们输?nbsp;***.do 命o后,apache却返回错误信息,而连接tomcat却没有问题。原因是没有?do命o转发ltomcat处理。解x法如下:

在apache配置文g中配|如下内容:

JkMount /*.jsp loadbalancer

JkMount /*.do loadbalancer



ricki 2007-07-18 10:11 发表评论
]]>
վ֩ģ壺 Ƶۿ| ƷպAVһ | Ůվ| ˳߲| þþþŷղAV | ޹AVһ| vavava| ߲| ƷһI6| þ91ۿ| һëƬһֱӹۿ| ޳aëƬ | 18δֹѹۿ| ѾþþƷѾѾ| ŮǿڸˬƵ | й߹ۿѹ| 69ƷƵ| רAAAAAAƵ| պAVһ | þþþAVרɫ| Ƶ69½ | ޾Ʒר| ޲Ļ| ޹Ʒ˾ƷС˵| ҹƷþþþþ| ޾ƷþþþþҲ | ޶ɫۺɫž| ޾Ʒ| ޾ƷҺ| 3pһ| ɫĻվ| ӰԺһ| Ʒ޾Ʒպѷ| ɫ͵͵ݺۺ| ߹ۿ޳| vaþþþͬ| ߹ۿ| ޳ߵӰ| Ƶһ߹ۿ| ؼaaaaaaëƬ| ޳ɵӰ߹ۿ|