我正在 Tomcat 7 上配置 Liferay 以进行集群。我在网上搜索并找到了几个说明。阅读所有这些都给我提出了一些问题。如果有人帮助我,我将不胜感激。
一个。我知道通过在“${CATALINA_HOME}/conf”中的 server.xml 中插入以下行,它会使用 Tomcat 文档 (link) 中所述的默认值配置 Tomcat:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
Here are some of the important default values:
1- Multicast address is 228.0.0.4
2- Multicast port is 45564 (the port and the address together determine cluster membership.
3- The IP broadcasted is java.net.InetAddress.getLocalHost().getHostAddress() (make sure you don't broadcast 127.0.0.1, this is a common error)
4- The TCP port listening for replication messages is the first available server socket in range 4000-4100
5- Two listeners are configured ClusterSessionListener
6- Two interceptors are configured TcpFailureDetector and MessageDispatch15Interceptor
由于我的集群环境很小(两个 Tomcat 实例),我认为默认配置就足够了。
问#答。我想知道第 3 项的确切含义。我怎么会犯这个错误?
B.基于以上,默认配置在 IP 地址 228.0.0.4 上使用动态集群。我假设这是一个广播地址(如果我错了请纠正我)。如果是这样,这 link说:
In Linux Environment most of the system kernel is capable to process the multicast address. but we need to add route entry in kernel routing table.
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
问#B。这是什么意思?我怎么知道我是否应该这样做?
C.作为集群的下一步,我需要将“
问#C1。我找到了另一个以“liferay-”作为每个 Web 应用程序前缀的“web.xml”文件。它们是否应该被视为另一个 web.xml 并具有此元素?
问#C2。有没有办法在一个地方添加“
D.一些说明说应该将“distributable='true'”属性添加到“${CATALINA_HOME}/conf/context.xml”文件中的“
问#D。这个配置是必须的吗?有这个属性和没有它的后果是什么?
提前致谢。
最佳答案
A.) 广播的 ip 地址是集群节点的 ip 地址,而不是多播地址。 udp 包将包含此 ip,以告诉确实发送此包的收件人;发件人的IP。如果将其设置为 localhost/127.0.0.1,则收件人将无法调用发件人,因为他们会调用自己。
B.) 我从来不需要添加这样的路由。对不起,不能说。如果没有它,我会尝试一下。
C.) 只有“主”Liferay 应用程序需要可分发标志,因为它将处理 session 。
D.) 在 web.xml 中添加标志具有相同的作用。在上下文元素中,您可以为特定服务器覆盖此属性。如果设置了标志,应用程序将参与 session 复制,即如果平衡器将粘性 session 标志设置为 false,客户端将不断重定向,在每个节点上创建新 session 。如果设置,他们也将被重定向,但保留他们的第一个 session 。
关于Tomcat集群配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24568472/