apacheclipse tomcat6.0 400错误,有什么出现过,如何解决,tomcat6.0配置两个虚拟机

服务热线:400-702-1168 ()
您好,访客
||||||||||
Centos5+Apache2.2.6+PHP5+tomcat6.0.14+jdk1.6整合安装
发布时间: 00:28:00&&来源:
ChinaUnix博客  &&作者:
ChinaUnix博客  &&点击:625
jdk-6u3-linux-i586.bin
#chmod u+x jdk-6u3-linux-i586.bin
#./jdk-6u3-linux-i586.bin
ln -s /usr/local/jdk1.6.0_03 /usr/local/jdk
ln -s /usr/local/jdk1.6.0_03 /jre /usr/local/jre
#vi /etc/profile
加入以下几行
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CATALINA_HOME=/usr/local/tomcat
保存退出。
#source /etc/profile
java ?version 查看jdk是否安装成功
httpd-2.2.6.tar.gz
#cp httpd-2.2.6.tar.gz /usr/local
#cd /usr/local
#tar zxvf httpd-2.2.6.tar.gz
#cd httpd-2.2.6
#./configure ?prefix=/usr/local/apache --enable-module=so
#make install
启动Apache,并测试。
# cd /usr/local/apache/bin
# ./apachectl start
打开浏览器,并在地址栏中输入主机的IP地址
apache-tomcat-6.0.14.tar.gz
#tar zxvf apache-tomcat-6.0.14.tar.gz
#cp ?r apache-tomcat-6.0.14 /usr/local/tomcat
#/usr/local/tomcat/bin/startup.sh
http://localhost:8080
验证tomcat可以启动
整和apache和tomcat
tomcat-connectors-1.2.25-src.tar.gz
#tar zxvf tomcat-connectors-1.2.25-src.tar.gz
进行编译配置。大家一定要注意这几个参数中前三个是很重要的,必要时可以去相应的目录看看相关的文件是否存在。
#cd tomcat-connectors-1.2.25-src/native
# ./ buildconf.sh
#./configure --with-apxs=/usr/local/apache/bin/apxs&&--with-tomcat=/usr/local/tomcat --with-java-home=/usr/java/jdk --with-jni
# make install
#ll /usr/local/apache/modules/mod_jk.so
-rwxr-xr-x&&1 root root 48776Array&&8月 14 20:40 /usr/local/apache/modules/mod_jk.so
mod_jk.so生成成功了。
编辑apache的配置文件:
#vi /usr/local/apache/conf/httpd.conf
在末尾添加以下几行
# Load mod_jk module
&&LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
&&JkWorkersFile& &&&/usr/local/apache/conf/workers.properties
# Where to put jk logs
&&JkLogFile& &&&/usr/local/apache/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel& & info
# Select the timestamp log format
JkLogStampFormat &[%a %b %d %H:%M:%S %Y] &
# JkRequestLogFormat set the request format
JkRequestLogFormat &%w %V %T&
# JkOptions indicate to send SSL KEY SIZE,
JkOptions&&+ForwardKeySize +ForwardURICompat -ForwardDirectories
# Send servlet for context /examples to worker named worker1
#JkMount&&/examples/*.jsp worker1
&&JkMount&&/servlet/* worker1
# Send JSPs&&for context /examples to worker named worker1
&&JkMount&&/*.jsp worker1
创建文件workers.proferties
#vi /usr/local/apache/conf/workers.porperties
添加如下内容:
& & workers.tomcat_home=/usr/local/tomcat
& & workers.java_home=/usr/local/jdk
& & worker.list=worker1
& & worker.worker1.port=800Array
& & worker.worker1.host=localhost
& & worker.worker1.type=ajp13
& & worker.worker1.connection_pool_timeout=600
& & worker.worker1.socket_keepalive=1
& & worker.worker1.lbfactor=1
& & worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout
& & worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
5)& &配置apache和tomcat的虚拟主机
首先APACHE的虚拟主机设置如下:
修改 conf/httpd.conf找到
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
conf/extra/httpd-vhosts.conf
加入下面的代码
& & ServerAdmin oasis.
& & DocumentRoot /data/www/test1
& & ServerName
& & DirectoryIndex&&index.jsp& &
& & ErrorLog logs/web_error_log
& & CustomLog logs/web_access_log common
&&Options -Indexes FollowSymLinks
&&AllowOverride None
&&Order allow,deny
&&Allow from all
& & ServerAdmin oasis.
& & DocumentRoot /data/www/test2
& & ServerName
& & ServerAlias localhost
& & DirectoryIndex&&index.jsp
& & ErrorLog logs/wap_error_log
& & CustomLog logs/wap_access_log common
&&Options -Indexes FollowSymLinks
&&AllowOverride None
&&Order allow,deny
&&Allow from all
备注:test1/index.jsp的内容如下:
同理为test2/index.jsp
注意:丢掉下面这段代码会提示403错误
&&Options -Indexes FollowSymLinks
&&AllowOverride None
&&Order allow,deny
&&Allow from all
其次Tomcat设置虚拟主机
编辑tomcat的配置文件server.xml
在后面添加如下代码
备注:其中这是两段虚拟主机的代码,红色部分为虚拟目录的配置,这样就可以访问
:8080/test2
:8080/test1
特别注意的地方:
在配置文件中找到:
讲其改为:
如果不改的话,输入:
http://ip:8080
就可以直接进入tomcat的管理界面了。
最后重新启动tomcat和apache,我们的安装就完成了
#/usr/local/tomcat/bin/shutdown.sh& & //关闭tomcat
#/usr/local/tomcat/bin/startup.sh& &&&//启动tomcat
#/usr/local/apache/bin/apachectl restart& & //重启apache
/article/id-477.html
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34716/showart_3Array4735.html
以上内容由
搜集整理,如转载请注明原文出处,并保留这一部分内容。
  “华夏名网”
是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构评价为十大IDC服务商之一。
华夏名网网址导航:
上一篇:下一篇:
(4916次点击) (2768次点击) (4158次点击) (2793次点击) (2372次点击) (3729次点击) (3570次点击) (2358次点击) (2528次点击) (2438次点击)
(3415次点击) (3233次点击) (3244次点击) (3989次点击) (2411次点击) (2321次点击) (3213次点击) (3622次点击) (2354次点击) (2335次点击)
&2002- 飞数科技 版权所有
电话总机:028-91 94
公司地址:四川省成都市青龙街51号倍特康派大厦10楼5号apache+tomcat负载均衡调整文档
&来源:读书人网&【读书人网():综合教育门户网站】
apache+tomcat负载均衡整合文档1 准备相关软件1.1 下载安装Apache2.2.4Apache下载地址:http://archive.apa
apache+tomcat负载均衡整合文档
1 准备相关1.1 下载安装Apache2.2.4Apache下载地址:http://archive.apache.org/dist/httpd/binaries/win32/,选择下载windows平台安装包文件apache_2.2.4-win32-x86-no_ssl.msi。 接受安装协议 配置Apache服务器信息 Network Domain设置站点名称,这个不会对实际站点产生影响。Server Name设置当前服务器名称,这个不会对实际站点产生影响。Administrator’s Email Address设置站点管理员邮件地址,Apache文档说明当站点出错时的页面底部会出现该地址。选择安装类型 一般选择典型(Typical)安装选择安装路径 这里使用默认安装路径,实际安装过程可以选择其他路径。等待安装过程 安装完毕 1.2 下载Tomcat6.01.3 下载Tomcat Connector(jk.1.2.6)Tomcat Connector下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.26/此处注意一定要下载与Apache版本匹配的jk。jk文件名后半部分名称反应Apache的版本,如:mod_jk-1.2.26-httpd-2.2.4.so其匹配的Apache为2.2.4,与本次安装的Apache版本一致。2 单台主机单站点集群、负载均衡2.1 Apache配置将Tomcat Connector文件mod_jk-1.2.26-httpd-2.2.4.so拷贝到Apache安装目录Apache2.2\modules下。在Apache安装目录找到conf/httpd.conf文件,在末尾增加一下内容 2.2 Tomcat Connector配置在Apache配置目录Apache2.2\conf创建workers.properties配置文件,该文件主要用于配置Apache与Tomcat的集成要用到的Tomcat实例和负载均衡分发控制器。Workers.properties文件放置一下内容; 2.3 Tomcat配置Tomcat配置文件Service.xml主要注意两个地方,一个是Engine节点需要增加节点标识jvmRoute,一个是将原本注释掉的Session复制节点改为有效。具体如下:&!-- Define the top level container in our container hierarchy --&&!--jvmRoute在各个Tomcat配置中不能重复且要与worker.properties文件中的名称一致--&&Engine name="Catalina" defaultHost=" saas "& jvmRoute=" tomcat1"&&!―每个Tomcat的Hostname必须一样?&Host name="saas" appBase="webapps "&&&&&& unpackWARs="true" autoDeploy="true"&&&&&& xmlValidation="false" xmlNamespaceAware="false"&这里省略N多注释将下面的注释变去掉(如果需要做session复制需做以下操作)&!--&&&&&&& &Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/&&&&& &Valve className="org.apache.catalina.valves.RequestDumperValve"/& --&增加:&Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"& &&&&&&&&&&&&&&&& channelSendOptions="8"&&& &&&&&&&&& &Manager className="org.apache.catalina.ha.session.DeltaManager"& &&&&&&&&&&&&&&&&&& expireSessionsOnShutdown="false"& &&&&&&&&&&&&&&&&&& notifyListenersOnReplication="true"/&&& & &&&&&&&&& &Channel className="org.apache.catalina.tribes.group.GroupChannel"&&& &&&&&&&&&&& &Membership className="org.apache.catalina.tribes.membership.McastService"& &&&&&&&&&&&&&&&&&&&&&&& address="228.0.0.4"& &&&&&&&&&&&&&&&&&&&&&&& port="45564"& &&&&&&&&&&&&&&&&&&&&&&& frequency="500"& &&&&&&&&&&&&&&&&&&&&&&& dropTime="3000"/&&& &&&&&&&&&&& &Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"& &&&&&&&&&&&&&&&&&&&&& address="auto"& &&&&&&&&&&&&&&&&&&&&& port="4000"& &&&&&&&&&&&&&&&&&&&&& autoBind="100"& &&&&&&&&&&&&&&&&&&&&& selectorTimeout="5000"& &&&&&&&&&&&&&&&&&&&&& maxThreads="6"/&&& &&&&&&&&&&& &!-- timeout="60000"--&&& &&&&&&&&&&& &Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&&& &&&&&&&&&&&&& &Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" /&&& &&&&&&&&&&& &/Sender&&& &&&&&&&&&&& &Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&&& &&&&&&&&&&& &Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&&& &&&&&&&& &Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&&& &&&&&&&&& &/Channel&&& & &&&&&&&&& &Valve className="org.apache.catalina.ha.tcp.ReplicationValve"& &&&&&&&&&&&&&&&& filter=""/&&& &&&&&&&&& &Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/&&& & &&&&&&&&& &Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"& &&&&&&&&&&&&&&&&&&& tempDir="/tmp/war-temp/"& &&&&&&&&&&&&&&&&&&& deployDir="/tmp/war-deploy/"& &&&&&&&&&&&&&&&&&&& watchDir="/tmp/war-listen/"& &&&&&&&&&&&&&&&&&&& watchEnabled="false"/&&& & &&&&&&&&& &ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/&&& &&&&&&&&& &ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&&& &&&&&&& &/Cluster&&!―Host节点增加一下内容表示站点根路径--&&&&&&&& &Context path="/sc" docBase="." privileged="true"/&我们分别将两个Tomcat配置文件中的jvmRoute设置为tomcat1、tomcat2,Server节点 端口分别配置为, Connector节点端口分别配置为,AJPConnector端口分别配置为,Connector端口配置参照单主机多站点场景。请注意两个Tomcat配置文件Host节点的域名配置必须一样,Server.xml中的jvmRoute名称必须和worker.properties中的tomcat实例名称一致,不然无法实现session_stricky。Host节点的域名配置方法:修改C:\WINDOWS\system32\drivers\etc 下的 hosts文件增加一行127.0.0.1&&&&&& saas***************************************************************************** 如果需要实现session 复制 需要在web.xml 中加上&distributable/&&?xml version="1.0" encoding="ISO-8859-1"?&省略N多代码。。。。。。&&& &welcome-file-list&&&&&&&& &welcome-file&index.html&/welcome-file&&&&&&&& &welcome-file&index.htm&/welcome-file&&&&&&&& &welcome-file&index.jsp&/welcome-file&&&& &/welcome-file-list&&distributable/&&/web-app&*****************************************************************************2.4 常见问题修改Host文件将解析到本机。打开两个IE窗口分别提交session操作,然后在控制台观察效果。正常情况为;同一个IE窗口的所有请求都分发到同一个Tomcat,当关闭其中一个Tomcat时,IE窗口重新请求会分发到另一个Tomcat并且Session保持同步。如果没有达到预期效果请检查一下几点;?Apache配置文件中DirectoryIndex配置的文件是否存在tomcat应用的目录下?Apache配置文件中JkMount是否分发到负责均衡控制器?两个Tomcat端口是否有重复,?Worker.properties中tomcat端口是否和对应server.xmlAJPConnector端口一致?Server.xml配置文件的Host节点name属性是否一致?Server.xml配置文件的Engine节点是否配置jvnRoute,并且与worker.properties配置的名称保持一致?Server.xmlHost节点内的Cluster节点是否设置为有效3 第二种方法,比较简单目标: 使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1、& Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、& 为系统设定 Session 超时时间,包括 Apache 和 tomcat 3、& 为系统屏蔽文件列表,包括 Apache 和 tomcat 注:本例程以一台机器为例子,即同一台机器上装一个apache和4个Tomcat。 一、前期准备工作:安装用的程序(前提保证已安装了JDK1.5以上的版本) APAHCE 2.2.4TOMCAT6.0二、安装过程 APAHCE安装目录:D:\Apache。 四个TOMCAT目录:自行解压到(D:\Tomcat集群服务器\)下。分别为 tomcat6.0,tomcat6.01,tomcat6.02,tomcat6.03 这几个安装过程就不详细说明了。 三、配置 1、Apache配置 1.1、httpd.conf配置 修改APACHE的配置文件D:\Apache \conf\httpd.conf 将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。 建议直接复制 粘贴到最底部LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 再找到&IfModule dir_module&&/IfModule&加上index.jsp修改成 &IfModule dir_module& DirectoryIndex index.html index.jsp &/IfModule& 1.1.1、& 在最下面加入 ProxyRequests Off &proxy balancer://cluster& BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2 BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3 BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4 &/proxy& 上面的四个BalancerMember成员是我们配置的tomcat集群。后面会说明的。 1.2、httpd-vhosts.conf设置 接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下: 首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf) 把注释去掉。 # Virtual hosts Include conf/extra/httpd-vhosts.conf 在文件(extra/httpd-vhosts.conf)最下面加入 &VirtualHost *:80& &&&&&&&& ServerAdmin [email][/email] &&&&&&&& ServerName localhost &&&&&&&& ServerAlias localhost &&&&&&&& ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On &&&&&&&& ProxyPassReverse / balancer://cluster/ &/VirtualHost& 其中的域名和路径根据你自己情况设置 然后再设置TOMCAT虚拟主机 2 配置 tomcat 2.1.& 配置 server 的关闭 我们需要在一台机器上跑 4 个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。其中tomcat6.0用默认值,不修改。其他三个修改。在tomcat6.01\conf, tomcat6.02\conf下和tomcat6.03\conf下的 server.xml 中找到 server, 将: &Server port="8005" shutdown="SHUTDOWN"& 改为 &Server port="XXXX" shutdown="SHUTDOWN"& XXXX 在这里表示不同的端口:我的其它三个 tomcat 分别使用
, 9007&& 2.2. 配置 Engine 把原来的配置注释掉,把下面一句去掉注释。并标明jvmRoute="jvm2". &Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2"&&&&&&&&& 以下是原来的配置。 &!-- &Engine name="Catalina" defaultHost="localhost"&& --& 其他(tomcat6.02和tomcat6.03)也要同样 配置。注意:jvmRoute配置不要一样。 &Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm3"&& 2.3. 配置 Connector 原来的默认配置。 &!-- Define an AJP 1.3 Connector on port 8009 --& &Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /& 这里是apache和tomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。也可以用HTTP协议。大家注意它们是如何连接通信的,上面的红色部分(port="8009")就是连接的接口了。 把其他三个tomcat的&Connector port="XXX" /&port分别改成与上面 注意 此端口 必须与 httpd.Conf 中相对应的 端口相同BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 2.5.配置Cluster(每个tomcat中都要修改) 原来的配置。 &Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/& 修改为以下的代码:&Receiver port=”XX”/&port也要保证唯一性。 &Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"& channelSendOptions="6"& &Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/& &!-- &Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/& --& &Channel className="org.apache.catalina.tribes.group.GroupChannel"& &Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/& &Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="5001"& #端口保持不能重复selectorTimeout="100" maxThreads="6"/& &Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"& &Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/& &/Sender& &Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/& &Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/& &Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/& &/Channel& &Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\..*\..*\..*\..*\..*\..*\..*\."/& &Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/& &ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/& &/Cluster& 这个设置是主要用以tomcat的集群。
4 负载均衡及Session绑定的实现4.1 集群背景介绍 4.1.1 术语定义& 服务软体是b/s或c/s结构的s部分,是为b或c提供服务的服务性系统。& 服务硬体指提供计算服务的硬件、比如pc机、pc服务器。& 服务实体通指服务软体和服务硬体。 & 客户端指接受服务实体服务的软件或硬件。4.1.2 两大关键特性 集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个服务实体,但事实上集群由一组服务实体组成。与单一服务实体相比较,集群提供了以下两个关键特性:可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。 高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。 4.1.3 两大能力为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力:* 负载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。* 错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服务实体中执同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。负载均衡和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。4.1.4 两大技术实现集群务必要有以下两大技术:* 集群地址--集群由多个服务实体组成,集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。具有单一集群地址(也叫单一影像)是集群的一个基本特征。维护集群地址的设置被称为负载均衡器。负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的转换。有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。只实现任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境,在那里,集群中只有一个服务实体工作,当正在工作的服务实体发生故障时,负载均衡器把后来的任务转向另外一个服务实体。 * 内部通信--为了能协同工作、实现负载均衡和错误恢复,集群各实体间必须时常通信,比如负载均衡器对服务实体心跳测试信息、服务实体间任务执行上下文信息的通信。具有同一个集群地址使得客户端能访问集群提供的计算服务,一个集群地址下隐藏了各个服务实体的内部地址,使得客户要求的计算服务能在各个服务实体之间分布。内部通信是集群能正常运转的基础,它使得集群具有均衡负载和错误恢复的能力。4.2 集群配置
群集配置逻辑图从上图可知,由服务实体1、服务实体2和负载均衡器组成了一个集群。服务实体1和服务实体2参与对客户端的服务支持工作,均衡负载器为客户端维护集群的单一影像。集群实体间通过内部的通信网交流信息,这种交流机制一般采用组播协议。负载均衡器通过内部通信网探测各服务实体的心跳信息,服务实体间通过内部通信网完成任务资源的传播。可以看出,配置集群主要由配置服务实体和配置负载均衡器两部分组成。本文使用tomcat 5.5.20、apache 2.2.11配置集群环境。4.2.1 准备软件* tomcat是开源服务器,下载地点 http://tomcat.apache.org/download-55.cgi;(本文使用的apache-tomcat-5.5.20.zip)* apache是开源的www服务器,下载地点 http://httpd.apache.org/download.cgi;(本文使用的apache_2.2.11-win32-x86-no_ssl.msi) * jk2模块,jk 是mod_jserv的替代者,它是Tomcat-Apache插件,处理Tomcat和Apache之间的通信,在集群配置中充当负载均衡器的作用。JK2是符合apache 2.x系列的新品,下载地址 http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.28/。(本文使用的mod_jk-1.2.28-httpd-2.2.3.so) 4.2.2 配置负载均衡器在apache下配置负载均衡器分为三步,注意每次修改httpd.conf和workers.properties时不要忘了重新启动apache。* 第一步,安装和调试apache& 负载均衡器jk2模块是apache www 服务的插件,所以配置负载均衡器就得先安装apache。本文下载的是windows版本 2.2.11,执行msi并回答一些简单问题就可完成apache的任务。值得注意的是,安装并启动apache后如果apache对http://localhost/ 地址没反应,你得修改apache安装路径下htdocs目录下的index.html.xx文件,比如把index.html.en改成index.html。&&&&& & * 第二步,安装jk2&& 把下载的 mod_jk-1.2.28-httpd-2.2.3.so 改名为 mod_jk2.so 放到apache的modules目录下,修改apache的conf目录下的httpd.conf,在文件最后加入一行include conf\mod_jk2.conf,在conf目录下创建mod_jk2.conf文件,内容如下: # Load mod_jk2 module&& LoadModule jk_module modules/mod_jk2.so&& & & # Where to find workers.properties&& JkWorkersFile conf/workers.properties&& & & # Where to put jk logs&& JkLogFile logs/mod_jk2.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"& & # Send JSPs for context / to worker named loadBalancer&& JkMount /*.jsp loadBalancer& # Load mod_jk2 moduleLoadModule jk_module modules/mod_jk2.so# Where to find workers.propertiesJkWorkersFile conf/workers.properties# Where to put jk logsJkLogFile logs/mod_jk2.log# Set the jk log level [debug/error/info]JkLogLevel info# Select the log formatJkLogStampFormat "[%a %b %d %H:%M:%S %Y] "# JkOptions indicate to send SSL KEY SIZE,JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories# JkRequestLogFormat set the request formatJkRequestLogFormat "%w %V %T"# Send JSPs for context / to worker named loadBalancerJkMount /*.jsp loadBalancer*第三步,配置jk2 jk2的配置全在一个配置文件中,文件名为workers.properties,和apache 的httpd.conf放在同一个目录下。以下是这个文件的内容: #&& # workers.properties&& #&& & # list the workers by name&& & worker.list=tomcat1, tomcat2, loadBalancer&& & # ------------------------&& # First tomcat server&& # ------------------------&& worker.tomcat1.port=8009& worker.tomcat1.host=192.168.0.107& worker.tomcat1.type=ajp13&& & # Specify the size of the open connection cache.&& #worker.tomcat1.cachesize&& & #&& # Specifies the load balance factor when used with&& # a load balancing worker.&& # Note:&& # ----& lbfactor must be & 0& # ----& Low lbfactor means less work done by the worker.&& worker.tomcat1.lbfactor=100& & & # ------------------------&& # Second tomcat server&& # ------------------------&& worker.tomcat2.port=8009& worker.tomcat2.host=192.168.0.163& worker.tomcat2.type=ajp13&& & # Specify the size of the open connection cache.&& #worker.tomcat2.cachesize&& & #&& # Specifies the load balance factor when used with&& # a load balancing worker.&& # Note:&& # ----& lbfactor must be & 0& # ----& Low lbfactor means less work done by the worker.&& worker.tomcat2.lbfactor=100& & & # ------------------------&& # Load Balancer worker&& # ------------------------&& & #&& # The loadbalancer (type lb) worker performs weighted round-robin&& # load balancing with sticky sessions.&& # Note:&& # ----& If a worker dies, the load balancer will check its state&& # once in a while. Until then all work is redirected to peer&& # worker.&& worker.loadBalancer.type=lb&& worker.loadBalancer.balanced_workers=tomcat1, tomcat2&& & #&& # END workers.properties&& #& ## workers.properties## list the workers by nameworker.list=tomcat1, tomcat2, loadBalancer# ------------------------# First tomcat server# ------------------------worker.tomcat1.port=8009worker.tomcat1.host=192.168.0.107worker.tomcat1.type=ajp13# Specify the size of the open connection cache.#worker.tomcat1.cachesize## Specifies the load balance factor when used with# a load balancing worker.# Note:# ----& lbfactor must be & 0# ----& Low lbfactor means less work done by the worker.worker.tomcat1.lbfactor=100# ------------------------# Second tomcat server# ------------------------worker.tomcat2.port=8009worker.tomcat2.host=192.168.0.163worker.tomcat2.type=ajp13# Specify the size of the open connection cache.#worker.tomcat2.cachesize## Specifies the load balance factor when used with# a load balancing worker.# Note:# ----& lbfactor must be & 0# ----& Low lbfactor means less work done by the worker.worker.tomcat2.lbfactor=100# ------------------------# Load Balancer worker# ------------------------## The loadbalancer (type lb) worker performs weighted round-robin# load balancing with sticky sessions.# Note:# ----& If a worker dies, the load balancer will check its state# once in a while. Until then all work is redirected to peer# worker.worker.loadBalancer.type=lbworker.loadBalancer.balanced_workers=tomcat1, tomcat2## END workers.properties#* 对于jk2模块的负载均衡配置可参见相关站点,值得提的是jk2的负载均衡还支持权重分配等优秀功能。4.2.3 测试在跑tomcat1实例的机器的 webapps/testGroup 测试项目目录生成如下内容的index.jsp文件:(设置session) &%&&& && System.out.println("===========================");&& && System.out.println(session.getAttribute("test"));&& && session.setAttribute("test","Session");&& %&&& & &html&&& & &body bgcolor="red"&&& &&& &center&&& &&& &h1&Tomcat 1&/h1&&& & &/body&&& &/html&& &% && System.out.println("===========================");&& System.out.println(session.getAttribute("test"));&& session.setAttribute("test","Session");%&&html&& &body bgcolor="red"&&&& &center&&&& &h1&Tomcat 1&/h1&& &/body&&/html&同理,在跑tomcat2实例的机器的 webapps/testGroup 测试项目目录生成如下内容的index.jsp文件: &%&&& && System.out.println("===========================");&& && System.out.println(session.getAttribute("test"));&& %&&& & &html&&& & &body bgcolor="blue"&&& &&& &center&&& &&& &h1&Tomcat 2&/h1&&& & &/body&&& &/html&& &% && System.out.println("===========================");&& System.out.println(session.getAttribute("test"));%&&html&& &body bgcolor="blue"&&&& &center&&&& &h1&Tomcat 2&/h1&& &/body&&/html&启动Tomcat1, Tomcat2 和Apache服务 Apache服务器ip:192.168.0.105 Tomcat1服务器ip:192.168.0.107 Tomcat2服务器ip:192.168.0.163 首先验证Apache服务器的静态页面是否正常,访问:http://192.168.0.105/(若局域网内不能访问请检查防火墙设置) 验证tomcat和apache配置提供负载均衡,用不同的终端访问:http://192.168.0.105/testGroup/index.jsp 如果你看到红色的页面,表示为tomcat1 服务器返回的, 如果你看到兰色的页面,表示为tomcat2 服务器返回的。 4.3 配置tomcat(绑定session) 同属于一个集群下的两个服务实体,要求功能的同一性,所以我们可先安装和配置第一个tomcat,接着拷贝形成第二个tomcat,最后配置第二个tomcat。 4.3.1 修改tomcat1, tomcat2的server.xml 4.3.1.1 修改 &Engine /& 标签 在跑第一个tomcat实例的机器上,在大约第120行(去掉注释), 将 &Engine name="Standalone" defaultHost="localhost" debug="0"& 替换为: &Engine jvmRoute="tomcat1" name="Standalone" defaultHost="192.168.0.105" debug="0" /&对跑第二个tomcat实例的机器上,替换为 jvmRoute="tomcat2". &!-- You should set jvmRoute to support load-balancing via AJP ie :&& &Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"&&& --&&&& &Engine jvmRoute="tomcat2" name="Standalone" defaultHost="192.168.0.105" debug="0" /&&& &&&&& &!-- You should set jvmRoute to support load-balancing via AJP ie :&Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"&--& &Engine jvmRoute="tomcat2" name="Standalone" defaultHost="192.168.0.105" debug="0" /&有的文档写得是在配置中加入一行&Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0"&&/Engine&,其实是不对的,这样负载均衡是没有问题的,但是不能做session绑定,也就是说同一用户会在两台服务器上跳来跳去。这是由于jvmRoute不正确引起的,因为如果只是加入一行的话,是没有什么作用的,Engine仍然是原来的 Engine,而原来的Engine中jvmRoute是不正确的,所以一定要替换。而且这个jvmRoute一定要跟 workers.properties 中的名称完全匹配,否则也不能实现session绑定。4.3.1.2 修改 &Cluster /& 标签 将&Cluster /&标签注释去掉,代码如下: &Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"& &&&&&&&&&&&&&&&& managerClassName="org.apache.catalina.cluster.session.DeltaManager"& &&&&&&&&&&&&&&&& expireSessionsOnShutdown="false"& &&&&&&&&&&&&&&&& useDirtyFlag="true"& &&&&&&&&&&&&&&&& notifyListenersOnReplication="true"&&& & &&&&&&&&&&& &Membership&&& &&&&&&&&&&&&&&& className="org.apache.catalina.cluster.mcast.McastService"& &&&&&&&&&&&&&&& mcastAddr="228.0.0.4"& &&&&&&&&&&&&&&& mcastPort="45564"& &&&&&&&&&&&&&&& mcastFrequency="500"& &&&&&&&&&&&&&&& mcastDropTime="3000"/&&& & &&&&&&&&&&& &Receiver&&& &&&&&&&&&&&&&&& className="org.apache.catalina.cluster.tcp.ReplicationListener"& &&&&&&&&&&&&&&& tcpListenAddress="auto"& &&&&&&&&&&&&&&& tcpListenPort="4001"& &&&&&&&&&&&&&&& tcpSelectorTimeout="100"& &&&&&&&&&&&&&&& tcpThreadCount="6"/&&& & &&&&&&&&&&& &Sender&& &&&&&&&&&&&&&&& className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"& &&&&&&&&&&&&&&& replicationMode="pooled"& &&&&&&&&&&&&&&& ackTimeout="15000"& &&&&&&&&&&&&&&& waitForAck="true"/&&& & &&&&&&&&&&& &Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"& &&&&&&&&&&&&&&&&&& filter=".*\..*\..*\..*\..*\..*\..*\..*\."/&&& &&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& &Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"& &&&&&&&&&&&&&&&&&&&&& tempDir="/tmp/war-temp/"& &&&&&&&&&&&&&&&&&&&&& deployDir="/tmp/war-deploy/"& &&&&&&&&&&&&&&&&&&&&& watchDir="/tmp/war-listen/"& &&&&&&&&&&&&&&&&&&&&& watchEnabled="false"/&&& &&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& &ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/&&& &&&&&&& &/Cluster&& &Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"&&&&&&&&&&&&&&&& managerClassName="org.apache.catalina.cluster.session.DeltaManager"&&&&&&&&&&&&&&&& expireSessionsOnShutdown="false"&&&&&&&&&&&&&&&& useDirtyFlag="true"&&&&&&&&&&&&&&&& notifyListenersOnReplication="true"&&&&&&&&&&&& &Membership &&&&&&&&&&&&&&& className="org.apache.catalina.cluster.mcast.McastService"&&&&&&&&&&&&&&& mcastAddr="228.0.0.4"&&&&&&&&&&&&&&& mcastPort="45564"&&&&&&&&&&&&&&& mcastFrequency="500"&&&&&&&&&&&&&&& mcastDropTime="3000"/&&&&&&&&&&&& &Receiver &&&&&&&&&&&&&&& className="org.apache.catalina.cluster.tcp.ReplicationListener"&&&&&&&&&&&&&&& tcpListenAddress="auto"&&&&&&&&&&&&&&& tcpListenPort="4001"&&&&&&&&&&&&&&& tcpSelectorTimeout="100"&&&&&&&&&&&&&&& tcpThreadCount="6"/&&&&&&&&&&&& &Sender&&&&&&&&&&&&&&& className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"&&&&&&&&&&&&&&& replicationMode="pooled"&&&&&&&&&&&&&&& ackTimeout="15000"&&&&&&&&&&&&&&& waitForAck="true"/&&&&&&&&&&&& &Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"&&&&&&&&&&&&&&&&&& filter=".*\..*\..*\..*\..*\..*\..*\..*\."/&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& &Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"&&&&&&&&&&&&&&&&&&&&& tempDir="/tmp/war-temp/"&&&&&&&&&&&&&&&&&&&&& deployDir="/tmp/war-deploy/"&&&&&&&&&&&&&&&&&&&&& watchDir="/tmp/war-listen/"&&&&&&&&&&&&&&&&&&&&& watchEnabled="false"/&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&& &ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/&&&&&&&& &/Cluster&4.3.2 修改testGroup测试项目中的web.xml在web.xml加入 &distributable/&& 即可 &?xml version="1.0" encoding="ISO-8859-1"?&&& &web-app xmlns="/xml/ns/javaee"& && xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"& && xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"& && version="2.5"&&&& & &&& &display-name&TomcatDemo&/display-name&&& &&& &distributable/&&& &&&&&& &/web-app&& &?xml version="1.0" encoding="ISO-8859-1"?&&web-app xmlns="/xml/ns/javaee"&& xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&& xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd"&& version="2.5"& &display-name&TomcatDemo&/display-name&&distributable/&&/web-app&重启apache,tomcat1,tomcat2 用不同的终端访问:http://192.168.0.105/testGroup/index.jsp 可以看到Tomcat终端不再打印null,一方设置session双方都打印出session,实现session共享 注:本文使用本机+2台虚拟机共3台电脑完成集群配置,若只需一台电脑完成集群配置,则只需要更改多个Tomcat中相冲突的端口号即可完成。

我要回帖

更多关于 tomcat6.0配置 的文章

 

随机推荐