lhbdir
发贴: 6
积分: 0
|
于 2006-06-22 11:00
一台apache服务器为apache2.2下载了一个mod_jk2.so放在modules目录下.在配置文件中加入以下两行: <IfModule !mod_jk.c> LoadModule jk2_module /usr/local/modules/mod_jk2.so JkSet config.file /usr/local/conf/workers2.properties </IfModule>
worker2.properties文件里的内容如下: [logger] level=ERROR [status:status] [lb:lb] debug=1 [lb:lb_1] debug=0
[config:] file=/usr/local/conf/workers.properties debug=0 debutEnv=0 [logger.file] level=ERROR file=/usr/local/logs/jk2.log
[shm:] info=Scoreboard. Required for reconfiguration and status with multiprocess servers. file=/usr/local/logs/shm.file size=10248576 debug=0 disabled=0
[channel.socket:192.168.2.13:8089] port=8089 host=192.168.2.13 #info=Ajp13 forwarding over socket #config first server lb_factor=10
[ajp13:192.168.2.13:8089] channel=channel.socket:192.168.2.13:8089 #debug=0
[channel.socket:192.168.2.14:8099] port=8099 host=192.168.2.14 lb_factor=10
[ajp13:192.168.2.14:8099] channel=channel.socket:192.168.2.14:8099
[uri:/test/*] group=status:status
[uri:/jsp-examples/*]
[uri:/*]
[uri:/jkstatus/*] group=status:status
workers.properties文件里的内容如下:
worker.list = "web,web1,status,loadbalancer"
worker.status.type = "status"
worker.loadbalancer.type = "lb" worker.loadbalancer.balanced_workers = "web,web1" worker.loadbalancer.sticky_session = "false"
worker.web.port = "8087" worker.web.host = "192.168.2.13" worker.web.type = "ajp13" worker.web.lbfactor = "1"
worker.web1.port = "8098" worker.web1.host = "192.168.2.14" worker.web1.type = "ajp13" worker.web1.lbfactor = "1"
以上为均衡负载功能以实现可以运作.
两台tomcat服务器中,配置文件如下:
server.xml文件内容如下: <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <GlobalNamingResources> <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
</GlobalNamingResources> <Service name="Catalina"> <Connector port="8087" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" /> <Connector port="8089" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" URIEncoding="UTF-8" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="web" > (注意这里在另一个tomcat上是"web1") <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="/jsp-examples" docBase="/opt/tomcat-55/webapps/jsp-examples" debug="0" reloadable="true" distributable="true" crossContext="true" /> <Context path="" docBase="/opt/tomcat-55/webapps/myapp.com" debug="0" reloadable="true" crossContext="true" distributable="true" /> <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"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<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.ClusterSessionListenter" />
</Cluster> </Host> </Engine>
</Service>
</Server>
jk.properties文件内容为:
handler.list=apr,request,channelJni channelSocket.port=8089 channelUnix.file=${jkHome}/work/jk2.socket shm.file=${jkHome}/work/jk2.shm apr.jniModeSo=inprocess
workers.properties 里的内容为注意这里的文件是tomcat服务器上的不是apache上的,虽然同名)
workers.tomcat_home=/opt/tomcat-55
workers.java_home=/opt/jdk1.5
ps=/
worker.list=ajp12, ajp13
worker.ajp12.port=8007 worker.ajp12.host=localhost worker.ajp12.type=ajp12 worker.ajp12.lbfactor=1
worker.ajp13.port=8089 worker.ajp13.host=localhost worker.ajp13.type=ajp13 worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=ajp12, ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar
worker.inprocess.cmd_line=start
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)lib$(ps)i386$(ps)classic$(ps)libjvm.so
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stdout worker.inprocess.stderr=$(workers.tomcat_home)$(ps)logs$(ps)inprocess.stderr
workers2.properties 里的内容为注意这里的文件是tomcat服务器上的不是apache上的,虽然同名)
[logger] level=DEBUG
[config:] file=${serverRoot}/conf/workers2.properties debug=0 debugEnv=0
[uriMap:] info=Maps the requests. Options: debug debug=0
[shm:] info=Scoreboard. Required for reconfiguration and status with multiprocess servers file=${serverRoot}/logs/jk2.shm size=1000000 debug=0 disabled=0
[workerEnv:] info=Global server options timing=1 debug=0
[lb:lb] info=Default load balancer. debug=0
[lb:lb_1] info=A second load balancer. debug=0
[channel.socket:192.168.2.13:8089](这个应该是ajp13端口吧) info=Ajp13 forwarding over socket debug=0 tomcatId=192.168..2.13:8089 (这里使用了第二块网卡,内网地址) [channel.socket:192.168.2.14:8089] info=A second tomcat instance. debug=0 tomcatId=192.168.2.14:8089 lb_factor=1 group:lb:lb group:lb:lb_1 disabled=0
[channel.un:/opt/33/work/jk2.socket] info=A second channel connecting to localhost:8019 via unix socket tomcatId=localhost:8019 lb_factor=1 debug=0
[channel.jni:jni] info=The jni channel, used if tomcat is started inprocess
[status:] info=Status worker, displays runtime informations
[vm:] info=Parameters used to load a JVM in the server process classpath=${TOMCAT_HOME}/bin/tomcat-jni.jar classpath=${TOMCAT_HOME}/server/lib/commons-logging.jar OPT=-Dtomcat.home=${TOMCAT_HOME} OPT=-Dcatalina.home=${TOMCAT_HOME} OPT=-Xmx128M disabled=1
[worker.jni:onStartup] info=Command to be executed by the VM on startup. This one will start tomcat. class=org/apache/jk/apr/TomcatStarter ARG=start disabled=1 stdout=${serverRoot}/logs/stdout.log stderr=${serverRoot}/logs/stderr.log
[worker.jni:onShutdown] info=Command to be executed by the VM on shutdown. This one will stop tomcat. class=org/apache/jk/apr/TomcatStarter ARG=stop disabled=1
[uri:/jkstatus/*] info=Display status information and checks the config file for changes. group=status:
[uri:127.0.0.1:8003] info=Example virtual host. Make sure myVirtualHost is in /etc/hosts to test it alias=myVirtualHost:8003
[uri:127.0.0.1:8003/ex] info=Example webapp in the virtual host. It'll go to lb_1 ( i.e. localhost:8019 ) context=/ex group=lb_1
[uri:/examples] info=Example webapp in the default context. context=/examples debug=0
[uri:/examples1/*] info=A second webapp, this time going to the second tomcat only. group=lb_1 debug=0
[uri:/examples/servlet/*] info=Prefix mapping
[uri:/examples/*.jsp] info=Extension mapping
[uri:/examples/*] info=Map the whole webapp
[uri:/examples/servlet/HelloW] info=Example with debug enabled. debug=10
就这样了,其它的什么都没改过. 我在官方网站上看到,保存在session里的数据要实现序列化不知道这个是不是必须的,因为我们写的formbean基本都没有实现.我们的领导说,跟这个无关,不用实现的,他说tomcat会自动将保存在session里的数据序列化.晕,可我还是在catalina.out里看到这样的异常: Jun 22, 2006 10:00:14 AM org.apache.catalina.cluster.session.DeltaManager requestCompleted SEVERE: Unable to serialize delta request for sessionid [31DDA9019DA1D2A4513C7502DB5EF676.web] java.io.NotSerializableException: com.cc176.utils.Pagination at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291) at org.apache.catalina.cluster.session.DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:326) at org.apache.catalina.cluster.session.DeltaRequest.writeExternal(DeltaRequest.java:243) at org.apache.catalina.cluster.session.DeltaManager.unloadDeltaRequest(DeltaManager.java:331) at org.apache.catalina.cluster.session.DeltaManager.requestCompleted(DeltaManager.java:747) at org.apache.catalina.cluster.tcp.ReplicationValve.invoke(ReplicationValve.java:206) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:307) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678) at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:871) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) com.cc176.service.impl.BaseManagerImpl@1b51db7
希望高手帮帮我,谢谢了,我已经弄了快一个月没弄好,我想就是序列化问题,可领导都那么说了,我也没办法,希望你们的讨论能让我明白并解决这一问题,谢谢了 各位哥哥姐姐们,谢谢了,谢谢了.再不行我就要被抄了,哎.晕呀!!!!
|