Coldfusion 2018群集和会话复制不起作用

时间:2018-09-28 14:20:21

标签: session coldfusion coldfusion-2018

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

我在会话复制方面遇到麻烦。基本上,会话变量似乎是在集群 中的节点之间复制的,但是会在短时间内随机消失。

一些设置信息:

  • 2个Web服务器(Windows Server 2012)负载均衡器后面
  • 在每台Web服务器上都放置一个Coldfusion群集,该群集由2个本地实例(尚不清楚是否有用-将在单独的问题中询问)和2个远程实例(远程引用每个相对服务器的本地实例)组成
  • 为简单起见,当前仅在具有本地Coldfusion实例的单台服务器上进行测试-将远程控制排除在外,直到我可以在本地可靠地工作为止
  • 使用J2EE会话变量
  • Coldfusion会话超时设置为2小时
  • 在每个Coldfusion实例中,channelSendOptions设置为“ 6”

这是我的经历/经历:

  • 我们有一个Web应用程序,需要登录,并在登录后将用户信息存储在会话中。
  • 我对该Web应用程序进行了小修改,以显示哪个集群实例满足了我的当前请求。
  • 设置集群后,我启动Web应用程序并登录,并注意到显示登录页面的实例。
  • 登录后,我立即返回登录屏幕(应用程序会检查会话中的用户信息,如果找不到,则会重定向到登录名)
  • 调试显示我实际上已经登录,但是登录后重定向到某些新页面后,用户信息将从会话中消失。
  • 连续多次登录尝试(相同的凭据,只是一遍又一遍地尝试)表明有时登录会进行得很好,然后我就会进入应用程序。但是,如果我刷新页面或转到另一页面,则该会话将很快丢失,但会是随机的(在刷新几页后)。
  • 为了简化问题以尝试找出问题所在,我创建了一个简单的.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>

Refresh 1

Refresh 2

Refresh 3

Refresh 4

enter image description here

Refresh 6

Refresh 7

Refresh 8

Refresh 11

Refresh 13

enter image description here

enter image description here

0 个答案:

没有答案