我正在尝试使用下面的链接
在liferay 6.2中实现群集我在liferay服务器portal-ext.properties
中放置了以下属性,并将Liferay服务器指向同一个数据库。
cluster.link.enabled=true
cluster.link.autodetect.address=localhost:3306
lucene.replicate.write=true
现在我从第一个Liferay实例向一个页面添加了一个portlet,并从Second Liferay实例访问同一页面(使用相同的用户ID)我收到错误消息,说明" Invalid authentication Token
"。它似乎是群集中的会话复制问题,但无法弄清楚如何解决这个问题。
寻求帮助以弄清楚什么是错误的。
先谢谢。
答案 0 :(得分:7)
您的配置存在严重问题,尽管已经接受了答案(我大多不同意)。
您必须在Liferay上设置正确的群集。为了让Liferay找到“另一个”节点,它使用Multicast(默认情况下)。如果您有多个网卡但想要/需要一个特定的网卡用于检测另一个节点,您将给出cluster.link.autodetect.address
。 Liferay将使用它来查看(通过您的操作系统)使用哪个网络适配器连接到该地址,然后使用生成的网络适配器。如果您只有一个适配器,则默认值www.google.com:80
是好的。如果将其设置为localhost
,Liferay将尝试与localhost上的其他节点进行通信,因此只有在同一台计算机上运行两个Liferay进程时才会成功 - 否则您将无法进行缓存同步所有。
根据Liferay Clustering的原则,我建议转到User's Guide,特别是不进行会话复制(例如tomcat配置的会话复制)。 95%的用户不需要它,它增加了处理的开销,吃掉了第二台服务器的性能优势。当你在它时:Check some common pitfalls when clustering Liferay(但要注意:还有更多)
编辑:回答“无效的身份验证令牌”问题:我的建议是实施粘性会话 - 例如将会话创建平衡到某台机器,然后坚持下去。身份验证令牌用于缓解CSRF攻击。没有它意味着您的会话复制无法正常工作。正如我上面所述,我不建议启用会话复制,因此粘性会话是您最好的选择恕我直言。
答案 1 :(得分:3)
会话群集在Application Server中实现,而不是在Liferay中实现。您可以在AS上手动配置它,也可以在Load Balancer上启用粘性会话。
有很多关于如何在Tomcat中执行此操作的文章:
第二篇文章很重,据我记得要运行基本的会话复制,你需要做的就是在tomcat配置中启用SimpleTcpCluster并将<distributable />
添加到所有你的web.xmls
网络应用程序。