liferay集群

一,nginx配置ip_hash,解决session问题。
liferay集群

将IP通过哈希计算得到一个值,根据该值选择一台服务器,以后这个IP进来都会走同一台服务器。用这种方法可能会导致某台服务器的压力过大,但可以解决session问题,不会丢失session.

二,配置域名后发现在liferay的控制面板中无法点击按钮进行清除缓存

这个原因是因为在liferay的配置文件里,默认的转发配置如下:
liferay集群
我们用域名的话需要设置成domain,所以在ext配置文件中重写:
liferay集群

三,集群上传图片问题

集群配置的liferay,如果在A服务器上上传了图片,B服务器无法显示,找不到图片。所以目前的解决办法是通过NFS将AB两台服务器的文件存储路径mount到一台共享的文件服务器上。使AB两台服务器上传下载图片都是操作同一个文件系统。具体NFS配置在NFS笔记中。
(目前测试在98服务器上的/home/work文件夹挂载到94,182服务器的mnt下的document_liferay中,需要在ext配置文件中指定文件的上传路径,如下图)
liferay集群

四,集群缓存问题

若在A服务器修改了一篇文章的内容,虽然是修改了数据库,但B服务器上由于缓存问题(包括数据库缓存和索引缓存)无法显示A服务器修改之后的内容。只能手动登陆Liferay管理员账号在控制面板中的服务器管理中点击清除数据库缓存和重建所有搜索索引来解决缓存问题。

首先解决AB服务器的数据库缓存问题,过程如下:
1,将tomcat-7.0.42/webapps/ROOT/WEB-INF/lib里的portal-impl.jar包中的ehcache文件夹copy出来,复制到文件共享服务器(98)的/home/ehcache/中,然后在A,B两台服务器的tomcat-7.0.42/webapps/ROOT/WEB-INF/classes文件夹中新建文件夹 myehcache(必须在这个classes文件夹中新建),将AB服务器的myehcache文件夹mount到98服务器的/home/eheache文件夹,使这两个服务器使用同样的缓存配置,但是得在ext配置文件中修改指向,因为默认的缓存配置文件指向的地址是portal-impl.jar包中的eheache文件夹。然后修改ext配置文件,增加如下:
liferay集群
指向的地址是classes下的新建的文件夹myehcache,但实际上该文件夹挂载在98服务器上。到这一步解决了数据库缓存问题。

2,接下来解决索引缓存问题。
索引一般是存到data下的lucene文件夹中,所以以第三步中同样的方法将该索引文件夹移动到共享的文件服务器(98下的/home/lucene/),然后将AB服务器的data下的lucene文件夹挂载到98的/home/lucene下。让AB服务器使用同一份索引缓存文件。

5,发布war包

同上,将deploy文件夹挂载到文件共享服务器上,发布war包的时候会同步。