当前位置:首页 » 操作系统 » linuxtomcat集群

linuxtomcat集群

发布时间: 2022-06-06 02:12:06

A. linux下apache2和tomcat6集群 2个tomcat6在同一台机器上 log4j报错

  • 报错从字面上看是没有序列化的错误。

  • 说明在业务场景中存在将org.apache.log4j.Logger 对象进行远程传输的操作。

  • 这种操作是不合理的,我猜测你们在使用日志记录的时候直接使用了log4j的实现类而非接口,导致需要传输log4j的实体类对象,但是这个对象是没有被序列号的,理论上不应该这样用。


处理方法:

  • 检查是否存在这种场景需要两台机器或者多台机器之间传输带有 这个对象引入的对象。

  • 理论上不应该存在这样的对象,如果存在将 import中的org.apache.log4j.Logger,修改为接口,可以使用 slf4j 或者 commons-logging。

  • 最终避免传输org.apache.log4j.Logger这个对象。

B. tomcat集群是怎样弄的

APACHE 2.2.8+TOMCAT6.0.14配置负载均衡
目标:
使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求:
1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。
2、 为系统设定 Session 超时时间,包括 Apache 和 tomcat
3、 为系统屏蔽文件列表,包括 Apache 和 tomcat
注:本例程以一台机器为例子,即同一台机器上装一个apache和4个Tomcat。
一、前期准备工作:安装用的程序(前提保证已安装了JDK1.5以上的版本)
APAHCE 2.2.8下载:apache_2.2.8-win32-x86-no_ssl.msi
TOMCAT6.0.14下载:apache-tomcat-6.0.14.zip直接解压
二、安装过程
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
将以下Mole的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so
LoadMole proxy_ajp_mole moles/mod_proxy_ajp.so
LoadMole proxy_balancer_mole moles/mod_proxy_balancer.so
再找到<IfMole dir_mole></IfMole>加上index.jsp修改成
<IfMole dir_mole>
DirectoryIndex index.html index.jsp
</IfMole>
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 protected]
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 分别使用 9005,8006 , 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">
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm4">
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分别改成与上面
<proxy balancer://cluster>
#与tomcat6.0对应,route与<Engine jvmRoute="jvm1">对应。
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
#与tomcat6.01对应,route与<Engine jvmRoute="jvm2">对应。
BalancerMember ajp:// 127.0.0.1:9009 loadfactor=1 route=jvm2
#与tomcat6.02对应,route与<Engine jvmRoute="jvm3">对应。
BalancerMember ajp:// 127.0.0.1:9001 loadfactor=1 route=jvm3
#与tomcat6.03对应,route与<Engine jvmRoute="jvm4">对应。
BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm4
</proxy>
中的端口对应,tomcat6.01 的ajp端口port:9009. tomcat6.02 的ajp端口port:9001。tomcat6.03 的ajp端口port:9003.一定要与上面的一致。同时也要把redirectPort的值改成唯一的,确保四个tomcat的都不一样。
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=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<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的集群。
四、启动服务,测试tomcat自带的例子
1、测试apache和tomcat协作。
先在每个tomcat中的\webapps\ROOT下的index.jsp下面加上以下的测试代码部分:(X代表不同的tomcat的输出不同的信息),把index.html删除,以免影响测试效果。在最后面的加上.即</table></body>之间。
<%
System.out.println("tomcat6.0X deal with request");
%>
然后再通过http:// 127.0.0.1来访问一下,就会出现大家熟悉的猫猫。
然后再通过分别访问
http:// 127.0.0.1:8080, http:// 127.0.0.1:9080,http:// 127.0.0.1:8081,http:// 127.0.0.1:9002它们访问的内容和上面的http:// 127.0.0.1是一样的。
这样就说明apache和TOMCAT整合成功!
2、测试均衡器
通过http:// 127.0.0.1多次访问,要想看到真正的效果,必须用一些压力测试工具,可用微软Microsoft Web Application Stress Tool进行简单压力测试,不然你靠不停刷新是体现不出来的,你只会在一个tomcat的控制台有输出结果。只用用压力测试工具模拟大量用户同时访问,你会发现四个tomcat控制台均有打出控制信息,说明均衡器工作正常。

C. Tomcat集群有什么用

可将请求分给多个tomcat,降低单个tomcat的负荷,同时,也避免一个tomcat崩溃导致无法访问的窘境。

D. linux 下配置tomcat集群, 配置完成后 无法进入项目,一直在登陆页处刷新,并且登陆页也不显示。

这玩意不靠谱
建议走nginx+多tomcat的方式。

E. linux apache tomcat7集群中session共享失败

你的集群是通过nginx实现的吗?tomcat+nginx集群的话,比较容易实现session会话保持,在nginx的 upstream 配置中添加 IP_HASH就可以实现,不需要再去做session复制和共享。

F. linux下apache+tomcat集群详细配置

环境:
操作系统均为:CentOS 5.1
Apache2.X服务器一台:IP地址192.168.232.4;安装路径/usr/local/apache;
Tomcat6服务器一台:IP地址192.168.232.5;安装路径/usr/local/tomcat;
Tomcat6服务器一台:IP地址192.168.232.6;安装路径/usr/local/tomcat;

配置:
Apache安装:
#./configure --prefix=/usr/local/apache --enable-moles=so --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite
注释:激活tomcat集群需要的 enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必须依赖proxy,如果是自定义的编译除了以上几个必须的模块外,mod_status也要编译进去,切记。enable-proxy-ftp可以不编译。
#make;make install

制作Apache启动项:
#cp support/apachectl /etc/rc.d/init.d/httpd
#vi /etc/rc.d/init.d/httpd
添加以下内容:(包括#号)
# Startup script for the Apache Web Server
# chkconfig: 2345 85 15
# description: Apache is a World Wide Web server .It is used to server
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/log/httpd.pid
# config: /usr/local/apache/conf/httpd.conf
增加服务项
#chkconfig --add httpd
#chmod 755 /etc/rc.d/init.d/httpd
#chkconfig --level 345 httpd on

JDK安装:
#chmod a+x jdk-6u4-linux-i586-rpm.bin
#./jdk-6u4-linux-i586-rpm.bin

java环境变量设置:
#vi /etc/profile
在文件最后添加以下内容:
JAVA_HOME=/usr/java/jdk1.6.0_04
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CLASSPATH PATH CATALINA_HOME
执行如下命令使环境变量生效:
source /etc/profile
测试配置是否成功:
java –version

Tomcat安装:
#wget [url]http://apache.mirror.phpchina.com/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.tar.gz[/url]
#tar zxvf apache-tomcat-6.0.16.tar.gz
#mv apache-tomcat-6.0.16 /usr/local/tomcat

Tomcat随机启动:
#vi /etc/rc.local
添加以下内容:
/usr/local/tomcat/bin/startup.sh

tomcat6配置文件server.xml:

<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
改成

<!-- You should set jvmRoute to support load-balancing via AJP ie :
-->
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcatX">
<!--
<Engine name="Catalina" defaultHost="localhost">
-->
说明:
第一台tomcat就把jvmRoute="tomcat1"
第二台tomcat就把jvmRoute="tomcat2"


<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
去掉注释变为
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
***群集详细配置***
<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"/>

<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"/>
</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."/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

配置应用的web.xml:
在每个webapps应用中,修改配置文件web.xml文件 添加元素<distributable/>
在web.xml文件中<web-app>元素下增加以下内容:
<!--此应用将与群集服务器复制Session-->
<distributable/>
具体修改如下:
修改前:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="[url]http://java.sun.com/xml/ns/javaee[/url]"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]"
version="2.5">
</web-app>
修改后:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="[url]http://java.sun.com/xml/ns/javaee[/url]"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]"
version="2.5">
<!--此应用将与群集服务器复制Session-->
<distributable/>
</web-app>
配置apache的ajp负载均衡功能:
确保将以下Mole的注释去掉
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so
LoadMole proxy_ajp_mole moles/mod_proxy_ajp.so
LoadMole proxy_balancer_mole moles/mod_proxy_balancer.so
LoadMole status_mole moles/mod_status.so
增加以下内容:
# Proxypass Config
Include conf/extra/httpd-modproxy.conf
建立文件httpd-modproxy.conf输入内容:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
ProxyRequests Off
ProxyPass / balancer://tomcatcluster stickysession=jsessionid nofailover=On

<Proxy balancer://tomcatcluster>
BalancerMember [url]http://192.168.232.5:8080[/url] loadfactor=1
BalancerMember [url]http://192.168.232.6:8080[/url] loadfactor=2
</Proxy>
注释:
ProxyRequests Off 表示启用反向代理,必须开启;
ProxyPass为代理转发的Url,即将所有访问/的请求转发到群集balancer://tomcatcluster,这里为/即将所有访问/的请求转发到群集balancer://tomcatcluster的/test目录;
BalancerMember为群集的成员,即群集服务器1或2,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember;

调试负载均衡集群系统:
访问apache服务器的web服务:[url]http://192.168.232.4/balancer-manager[/url]
如果显示负载均衡有关信息则说明成功了,接着可以访问[url]http://192.168.232.4/[/url]即访问到了tomcat的应用
***必须先启动Tomcat服务再启动Apache服务!***

参考文档:
[url]http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html[/url]
[url]http://tomcat.apache.org/tomcat-6.0-doc/balancer-howto.html[/url]
[url]http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy.html[/url]
[url]http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy_balancer.html[/url]

热点内容
发热留观室需要哪些配置 发布:2024-10-31 11:24:10 浏览:170
注册表项拒绝访问 发布:2024-10-31 11:20:10 浏览:823
php复习题 发布:2024-10-31 11:10:23 浏览:701
与编译器优化相关的所有开关 发布:2024-10-31 11:10:20 浏览:118
android图片按钮居中显示 发布:2024-10-31 11:08:39 浏览:164
忘记下载的密码怎么办 发布:2024-10-31 11:07:59 浏览:413
存储卡摄录一体机 发布:2024-10-31 11:07:42 浏览:699
如何编译爱心 发布:2024-10-31 11:06:10 浏览:628
格鲁德小镇服饰店的密码是什么 发布:2024-10-31 11:05:25 浏览:496
网站搜索php 发布:2024-10-31 11:00:55 浏览:211