如何在 Coldfusion 10 中设置具有 SESSION 复制的集群?

如何在 Coldfusion 10 中设置具有 SESSION 复制的集群?

我无法设置具有会话复制的集群。我已成功设置具有粘性会话的集群。当我在 Google 上搜索时,我发现很多链接解释了同样的问题,例如

  1. http://cfmlblog.adamcameron.me/2012/11/problem-with-session-replication-with.html

  2. https://forums.adobe.com/thread/1238702?start=0&tstart=0

取消选择粘性会话自动启用会话复制吗?

但我没有找到解决方案。有人解决了这个问题吗?

答案1

交叉发布于我在 StackOverflow 上的回答对同一问题

从 Adam Cameron 所附的文章中,他提到了会话复制方面的问题 -CF10 集群的会话复制问题.这里的关键是ColdFusion 10 中已输入错误 (3361502)没有在管理员中启用会话复制的选项。该错误现已修复。您正在运行更新的版本吗?

在该错误的一条评论中,Adobe 的某个人提到了这一点:

当启用粘性会话时,会话不会被复制;当禁用粘性会话时,会话会自动复制。

因此,在 ColdFusion 10 中,当您禁用粘性会话时,应该会启用会话复制。您还必须启用 J2EE 会话变量。

会话复制也存在一些限制。从文档在这里

会话复制还确​​保会话范围变量在整个集群中复制。但是,会话复制不支持会话范围 CFC 或变量中的数组复制

经过简短的聊天后,我向原帖推荐了这篇文章 -使用 Tomcat 作为内置应用服务器其中详细介绍了如何在 ColdFusion 10 中使用集群。特别有趣的是关于集群管理的部分,标题为“将远程实例添加到集群”。其中提到了需要在每个远程实例上对 server.xml 文件进行的一些添加。

使用以下步骤将远程实例添加到集群:

  1. 将远程实例注册到本地机器。
  2. 在本地机器上创建一个集群。
  3. 打开远程实例的 cf_install_dir\instance-name\runtime\conf\server.xml 文件。
  4. 在条目</host>和之间添加以下块</engine>
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
    <Manager notifyListenersOnReplication="true" expireSessionsOnShutdown="false" className="org.apache.catalina.ha.session.DeltaManager">
</Manager>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
    <Membership port="45565" dropTime="3000" address="228.0.0.4" className="org.apache.catalina.tribes.membership.McastService" frequency="500">
    </Membership>
    <Receiver port="4003" autoBind="100" address="auto" selectorTimeout="5000" maxThreads="6" className="org.apache.catalina.tribes.transport.nio.NioReceiver">
    </Receiver>
    <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
        <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender">
        </Transport>
    </Sender>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector">
    </Interceptor>
    <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor">
    </Interceptor>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter="">
</Valve>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve">
</Valve>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">
</ClusterListener>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener”>
</ClusterListener>
</Cluster>

5. 在上面的条目中,使用集群的多播端口更新成员资格端口。

6 . 使用本地主机的 ColdFusion 管理员,将本地实​​例和远程实例添加到集群中。

笔记:如果启用粘性会话,远程实例和本地实例的 JVM 路由不能相同。

7. 重新启动所有实例。

相关内容