您的位置:首页 > 运维架构 > Tomcat

Apache+tomcat 负载集群配置

2009-06-16 13:58 435 查看
Apache+tomcat 负载集群配置
一、 软件
a、httpd
http://labs.xiaonei.com/apache-mirror/httpd/httpd-2.2.11.tar.gz
b、tomcat
http://apache.etoak.com/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
c、tomcat-connectors
http://apache.etoak.com/tomcat/tomcat-connectors/jk/source/jk-1.2.28/tomcat-connectors-1.2.28-src.tar.gz

二、 安装
1、httpd安装

tar zxvf httpd-2.2.11.tar.gz
cd httpd-2.2.11
cd srclib/apr
./configure --prefix=/usr/local/apr
make
make install
cd ../apr-util/
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install
cd ../../
./configure \
--prefix=/usr/local/apache2 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--enable-rewrite \
--enable-dav \
--enable-so \
--enable-mods-shared=all \
--enable-ssl \
--with-ssl=/usr/local/ssl \
--enable-proxy=share \
--enable-proxy-ajp=share \
--enable-proxy-balancer=share \
--enable-suexec \
--with-suexec-caller=webusr \
--with-suexec-docroot=/var/www \
--enable-usertrack \
--enable-http
make
make install
2、 tomcat安装

tar apache-tomcat-6.0.20.tar.gz
cp apache-tomcat-6.0.20 /usr/local/tomcat6020
vi tomcat6020/conf/catalina.sh
添加:

CATALINA_HOME=/usr/local/tomcat6020
CATALINA_TMPDIR=/usr/local/tomcat6020/tmp
JAVA_HOME=/usr/local/jdk
JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m"

3、tomcat-connectors 安装 jk方式整合apache和tomcat

a、JK 安装 (整合apache tomcat)
# tar zxvf tomcat-connectors-1.2.28-src.tar.gz
#cd tomcat-connectors-1.2.28-src/native
# ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk
# make && make install

在/usr/local/apache2/modules/ 下会产生mod_jk.so
修改apache配置文件:
LoadModule jk_module modules/mod_jk.so

JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties JK配置文件 负载的配置
JkShmFile logs/mod_jk.shm
JkLogFile /usr/local/tomcat/logs/mod_jk.log 相关日志的设置
JkLogLevel info
JkMount /*.jsp controller 将jsp的请求转发给 controller(负载均衡控制器)

修改DoucmentRoot 与tomcat的目录一致。

b、调度器JK的配置
建立JK配置文件:
#vi /usr/local/tomcat/conf/jk/workers.properties
workers.tomcat_home=/usr/local/tomcat #指定tomcat的目录――如果2个tomcat在同一台机器该选项去掉
workers.java_home=/usr/local/jdk #指定jdk的目录
ps=/
worker.list=controller #指定负载名,这个可以随便起,与下面的 worker.controller.type=lb要对应

#========tomcat1======== 第一台tomcat的配置
worker.tomcat1.port=8009
worker.tomcat1.host=localhost #这里也可以写IP
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1 #权量 数值越大,分配的机率就最小

#========tomcat2===========
worker.tomcat2.port=9009
worker.tomcat2.host=localhost (tomcat2的IP)
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

#========controller,负载均衡器=======
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2 # server.xml配置文件里的jvmRoute="tomcat1"指定的名字
worker.controller.sticky_session=1

4、mod_proxy 方式整合apache和tomcat

1.1、httpd.conf配置
修改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
</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 user@somehost.com
ServerName localhost
ServerAlias localhost
ProxyPass /common !
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
</VirtualHost>
其中的域名和路径根据你自己情况设置
然后再设置TOMCAT虚拟主机

三、tomcat集群配置,session 同步配置:
1、修改Engine节点信息:
例如:<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

2、配置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集群和负载均衡的实现(session同步)补充
因为tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有开通,可以通过指令打开route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0,如果需要服务器启动时即开通组播需在/etc/sysconfig/static-routes文件内加入eht0 net 224.0.0.0 netmask 240.0.0.0。具体组播概念请查阅CCNP相关内容。

tomcat 常用配置

<Connector port="1800" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="500"
minSpareThreads="16"
maxSpareThreads="128"
enableLookups="false"
acceptCount="500" debug="0"
redirectPort="8443" URIEncoding="utf-8"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: