Liferay 6.0.6版本提供捆绑tomcat 6.0.29应用服务器和jboss 5.1.0应用服务器两个版本. 对Liferay 6.0.6做集群本质上就是对tomcat 或jboss 做集群。
关于tomcat的集群配置,可以参考 http://book.51cto.com/art/200811/97728.htm 或者 http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html
关于jboss的集群配置,可以参考 http://my.oschina.net/aiguozhe/blog/41509
此外还需要针对liferay配置Cache同步,文档和图片文件同步,lunce索引文件同步等。这些配置都在portal-impl.jar(该文件位于$LIFERAY_HOME/jboss-5.1.0/server/default/deploy/ROOT.war/WEB-INF/lib目录)的portal.propertie进行修改。建议不要直接修改该文件,而是在$LIFERAY_HOME/jboss-5.1.0/server/default/deploy/ROOT.war/WEB-INF/classes目录中新建一个portal-ext.properties,然后在这个配置文件中修改.
Cache同步
liferay针对不同的场景定义了若干个缓存区。概括起来分为持久化缓存(Persistence cache)和业务层缓存(Business Layer Cache). 持久化缓存用于缓存数据库的查询结果。 业务层缓存被portlet用于缓存各种业务操作的结果. 业务层缓存又可以分为Multi VM和Single VM两种类型缓存. 存储在Multi VM的数据在集群环境中会被同步到其他liferay节点中,而Single VM则只对当前liferay节点可见。 Cache同步只需对Persistence cache 和Multi VM cache进行同步.
Liferay使用ehcache插件实现缓存。根据自己的需要,修改portal-impl.jar中的ehcache目录中的两个文件, 分别是hibernate-clustered.xml和liferay-multi-vm-clustered.xml。建议把这两个文件解压出来,并放到$LIFERAY_HOME/jboss-5.1.0/server/default/deploy/ROOT.war/WEB-INF/classes目录中新建的一个目录(比如myehcache),然后再进行相应的修改. 最后在portal-ext.properties中添加如下的配置:
net.sf.ehcache.configurationResourceName=/myehcache/hibernate-clustered.xml ehcache.multi.vm.config.location=/myehcache/liferay-multi-vm-clustered.xml
文档和图片文件的同步
一个liferay节点上传的文件默认是保存在该节点的本地硬盘中,其他liferay节点是无法读取到的,有两个办法解决这个问题。 第一个办法是使用文件共享服务器,所有上传到任何一个liferay节点的文件都保存在文件共享服务器。 第二个方法是: 使用JackRabbit把上传的文件都写入内容仓库(数据库). 如果采用JackRabbit方案,最好单独新建一个库。但一般推荐使用第一种方案.
如果采用文件共享服务器的办法,则需要将文档和图片存放的根目录指向文件共享服务器提供的共享目录,比如在10.123.82.22机器上开放了/opt/share目录, 那么可以将所有liferay节点上的/opt/share目录挂载10.123.82.22:/opt/share,并指定所有上传到liferay节点的文件存放在/opt/share目录下:
# 上传文档存放的位置 dl.hook.file.system.root.dir=/opt/share/liferay/data/document_library # 上传的图片存放的位置 image.hook.file.system.root.dir=/opt/share/liferay/data/images
如果采用JackRabbit的方案,则先在portal-ext.properties中指定使用JackRabbit
# 使用JackRabbit对文件进行同步 # dl.hook.impl=com.liferay.documentlibrary.util.JCRHook
然后打开$LIFERAY_HOME/data/jackrabbit/repository.xml, 并修改如下三部分:
· <FileSystem> :指向存放文档和图片的数据库
· <Workspace> 内的<FileSystem>和<PersistenceManager> :
` <Cluster>
lunce索引文件同步(针对6.x版本)
在portal-ext.properties中添加
# for liferay 6.x lucene.replicate.write=true
cluster linke配置(针对6.x版本)
在portal-ext.properties中添加
cluster.link.enabled=true
org.quartz.jobStore.isClustered=true
注意,Quartz scheduler for clustering 必须在liferay的第一次启动前添加;否则需要先把数据库中所有以QUARTZ_ 开头的表删掉再重新启动