一.Tomcat负载均衡配置过程
硬件配置:服务器一台(最好能启动两个以上的tomcat就可以了)
1. Tomcat6.0.29、JDK1.6、Apache2.4.10,下载地址
http://tomcat.apache.org/download-70.cgi
http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.10.tar.gz
http://www.apachelounge.com/download/VC11/binaries/httpd-2.4.10-win64-VC11.zip
http://www.apachelounge.com/download/VC11/modules/modules-2.4-win64-VC11.zip
2.在一台机子中配置多个Tomcat方法改变3个端口(tomat_home/conf/server.xml中)改变
tomcat默认端口(8080)
shutdown端口(8005)
Coyote/JK2 AJP 1.3端口(8009)
配置了两个:
tomcat1:端口是:8080\8005\8009
tomcat2:端口是8090\80015\8019保证不要冲突
3.安装、配置apache
Apache的安装:
主要是linux下的源码包的安装:
1.解压源码包:
tar -xvf httpd-2.4.10.tar.gz
2.进入解压目录:
cd httpd-2.4.10
3.查看安装apache配置参数
./configure --help | more
4.配置apache路径
./configure --prefix=/usr/local/apache --enable-so
5. 编译安装apache
make && make install
6.配置Apache
备份配置文件:
cp -a httpd.conf httpd.conf.bak
查看httpd服务是否已存在
chkconfig --list httpd
查看自带httpd服务状态
service httpd status
linux启动apache命令
/usr/local/apache/bin/apachectl -k start
查看linux80默认端口是否开启:
netstat -an | grep :80
linux下查看apache进程
ps -aux | grep httpd
配置apache开机启动
1).拷贝apache启动脚本
cp /usr/local/apache/bin/apachectl/etc/rc.d/init.d/apache
2).编辑apache启动脚本
vim /etc/rc.d/init.d/apache
在开头的
#!/bin/sh 下面加上
#chkconfig: 2345 85 15
3).添加apache服务
chkconfig --add apache
4).列出apache服务
chkconfig --list apache
5).启动,停止Apache的命令
启动:service apache stop
停止:service apache start
成功后可能自动启动然后你测试一下http://localhost看看有没有成功页面.
copy mod_jk.so文件复制到apache的安装目录下的modules目录中.
修改apache的安装目录中的conf目录的配置文件httpd.conf.
在文件中加LoadModule模块配置信息的最后加上一句
LoadModule jk_modulemodules/mod_jk.so
在http.conf去掉以下行的注释:
LoadModule lbmethod_byrequests_modulemodules/mod_lbmethod_byrequests.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.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
http.conf文件的最后添加:
ProxyRequests Off
<proxy balancer://cluster>
BalancerMemberajp://192.168.11.100:8009 loadfactor=1 route=tomcat1
BalancerMemberajp://192.168.11.100:9009 loadfactor=1 route=tomcat2
</proxy>
ProxyPass / balancer://cluster/stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
如果负载较大调整配置文件:
首先去掉http.conf
# Server-pool management (MPMspecific)
# Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-mpm.conf 前的注释
修改原文件的配置如下conf\extra\httpd-mpm.conf
<IfModule mpm_prefork_module>
ServerLimit 10000
StartServers 30
MinSpareServers 30
MaxSpareServers 45
MaxClients 1000
MaxRequestsPerChild 4000
</IfModule>
二.Tomcat集群配置
1.负载均衡配置的条件下配置tomcat集群
分别修改两个tomcat1,2中的配置文件conf/server.xml
第一个: tomcat
<Enginename="Catalina" defaultHost="localhost">这个注释掉添加
<Enginename="Standalone" defaultHost="localhost"jvmRoute="tomcat1">
同样第二个
<Enginename="Catalina" defaultHost="localhost">这个注释掉添加
<Enginename="Standalone" defaultHost="localhost"jvmRoute="tomcat2">
5.Tomcat负载均衡就配置完
2.分别修改tomcat1,2的配置文件
conf/server.xml ,在server.xml中找到下面
<!--<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>-->
添加以下内容:
<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<ManagerclassName="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<!--
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
-->
<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">
<MembershipclassName="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="127.0.0.1"
port="5000"
selectorTimeout="100"
maxThreads="6"/>
<SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif|.*\.js|.*\.jpeg|.*\.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>
3. 在你要分布式的web应用中的web.xml的<web-app>
<distributable/>
三.liferay集群配置:
单机:多个tomcat6.0.29 liferay 6.0.29
portal-ext.properties配置,需要在每一个liferay-tomcat节点上配置。
a) cache 同步(这个地方需要特别注意,如果配置不正确将造成数据无法同步)
liferay针对不同的场景定义了若干个缓存区。概括起来分为持久化缓存(Persistence cache)和业务层缓存(Business LayerCache). 持久化缓存用于缓存数据库的查询结果。 业务层缓存被portlet用于缓存各种业务操作的结果. 业务层缓存又可以分为Multi VM和Single VM两种类型缓存. 存储在MultiVM的数据在集群环境中会被同步到其他liferay节点中,而SingleVM则只对当前liferay节点可见。 Cache同步只需对Persistence cache 和Multi VM cache进行同步.
Liferay使用ehcache插件实现缓存。根据自己的需要,修改portal-impl.jar中的ehcache目录中的两个文件, 分别是hibernate-clustered.xml和liferay-multi-vm-clustered.xml。建议把这两个文件解压出来,并放到$LIFERAY_HOME/XX /WEB-INF/classes目录中新建的一个目录(比如cluster-cache),然后再进行相应的修改. 最后在portal-ext.properties中添加如下的配置。
net.sf.ehcache.configurationResourceName=/cluster-cache/hibernate-clustered.xml
ehcache.multi.vm.config.location=/cluster-cache/liferay-multi-vm-clustered.xm
b) 文档库和图片库路径的配置
一个liferay节点上传的文件默认是保存在该节点的本地硬盘中,其他liferay节点是无法读取到的,有两个办法解决这个问题。第一个办法是使用文件共享服务器,所有上传到任何一个liferay节点的文件都保存在文件共享服务器。 采用文件共享服务器的办法,则需要将文档和图片存放的根目录指向文件共享服务器提供的共享目录,比如在192.168.11.248机器上开放了/liferay-sahre目录, 那么可以将所有liferay节点上的/opt/share目录挂载192.168.11.248:/liferay-sahre,并指定所有上传到liferay节点的文件存放在liferay-sharez,在这里存储由于我们使用一台机器测试,我们将文件地址都指下如下地址。
ldl.hook.file.system.root.dir=F:/liferay-data/data/document_library
image.hook.file.system.root.dir=F:/liferay-data/data/images
c) lunce索引文件同步(针对6.x版本)
lucene.replicate.write=true
d) cluster link配置(针对6.x版本)
cluster.link.enabled=true
cluster.link.autodetect.address=localhost:80(这个地反指向一个可以共同访问的地方)
e) Quartz scheduler配置集群(Quartz scheduler for clustering 必须在liferay的第一次启动前添加;否则需要先把数据库中所有以QUARTZ_ 开头的表删掉再重新启动)
org.quartz.jobStore.isClustered=true
#用于调试集群部署信息
cluster.executor.debug.enabled=true
web.server.display.node=true
集群的启动过程:
先启动tomcat1 再启动tomcat2 ,最后启动 Apache!!!