Coldfusion 2018群集和会话复制无法正常工作

K. *_*eke 5 coldfusion session coldfusion-2018

设置几个新的Coldfusion 2018服务器,并将首次使用群集,并遇到一些问题.

我遇到会话复制问题.基本上,会话变量似乎在群集中的节点之间复制,在一段时间后随机被杀死.

一点设置信息:

  • 2负载均衡器后面的Web服务器(Windows Server 2012)
  • 在每个Web服务器上都有一个Coldfusion集群,由2个本地实例组成(仍然不清楚这是否有用 - 将在单独的问题中提出)和2个远程实例(远程实例引用每个相对服务器的本地实例)
  • 为简单起见,目前只在具有本地Coldfusion实例的单个服务器上进行测试 - 将遥控器排除在等式之外,直到我可以在本地可靠地工作
  • 使用J2EE会话变量
  • Coldfusion会话超时设置为2小时
  • 在每个Coldfusion实例中,channelSendOptions设置为"6"

这是我做过/经历过的事情:

  • 我们有一个Web应用程序,需要登录并在登录时在会话中存储用户信息.
  • 我对Web应用程序进行了一些小修改,以向我显示哪个集群实例已为我当前的请求提供服务.
  • 设置群集后,我启动了Web应用程序并登录,注意到显示登录页面的实例.
  • 登录后,我立即返回登录界面(app会在会话中检查用户信息,如果找不到则重定向到登录)
  • 调试显示我实际上已登录但在登录后重定向到某个新页面后,用户信息将从会话中消失.
  • 连续多次登录尝试(相同的凭据,只是一次又一次地尝试)显示有时登录会很顺利,我会进入应用程序.但是,如果我刷新页面或转到另一个页面,会话将很快丢失,但随机(在几页刷新内).
  • 为了简化问题以尝试找出正在发生的事情,我创建了一个简单的.cfm来绕过所有登录的东西,做了一件事:向会话添加一个简单的字符串值,然后转储会话和实例名称.**我运行了一次脚本,注意到正在使用哪个实例,并且该会话包含了我的值.**然后我编辑了脚本,因此它不再设置会话值.**然后我一遍又一遍地刷新,所以我可以确认:
    1. 群集中的两个实例都在为这些请求提供服务
    2. 当我在实例之间翻转时,会话值始终可用.
  • 同样,复制将起作用,并且对于几次刷新,我可以在每个实例上看到我的会话变量...直到它没有.在随机数量的刷新/秒(说2到10次刷新之后)之后,该值将消失.

我无法解释为什么会这样.我们考虑过使用Redis作为会话商店,看看它是否有用,但坦率地说,我们的团队没有使用它的经验,在Windows中工作是笨重的,如果我们可以提供帮助,我们真的不希望在我们的基础设施中有任何移动的部分它.

任何关于正在发生的事情的见解以及关于如何在幕后进行对等的建议以及查看会话复制的内容都将非常感激.

谢谢

添加一些代码和截图.屏幕截图显示了每次刷新页面后的会话状态以及当前为该页面提供服务的实例.最后两个图像代表刷新11和13 - 会话变量在11中丢失,我转到13,这样我们就可以看到变量在另一个实例上也丢失了.还有一些集群/会话设置的图片.

以下是简单的测试脚本.第一行在第一次运行时未注释,以创建会话变量,并为每次后续运行注释掉.

<!--- <cfset Session.svar="cake!"> --->

<cfdump var="#Session#" />

<cfscript>
hostaddress = createObject("java", "java.net.InetAddress").localhost.getHostAddress();
</cfscript>

<cfoutput>
<h3>
Instance: #createobject("component","CFIDE.adminapi.runtime").getinstancename()#
</h3>
</cfoutput>
Run Code Online (Sandbox Code Playgroud)

刷新1

刷新2

刷新3

刷新4

在此输入图像描述

刷新6

刷新7

刷新8

刷新11

刷新13

在此输入图像描述

在此输入图像描述