在使用粘性会话时,将Pod杀死后,OpenShift需要20秒钟才能平衡到另一个可用的Pod

问题描述 投票:2回答:1

我在OpenShift的路由中遇到了奇怪的行为:

  • 我已经部署了具有2个实例/吊舱的应用程序。默认情况下,OpenShift使用粘性会话将每个用户流量发送到同一窗格。

  • 应用程序使用基于外部cookie的HTTP会话存储。这个想法是,如果吊舱死了,而另一个吊舱接管了,它将使用户会话具有其先前的状态。

  • 为了验证这一点,我杀死了当前分配给用户的广告连播。下一个请求应发送到另一个可用的窗格。但是,该请求会保留约20秒,最后由剩余的广告连播处理。

为什么OpenShift的路由器要花这么长时间才能意识到先前分配的Pod已关闭并将流量发送给另一个Pod?

可以对此进行调整以使其更快吗?

UPDATE:

我已经按照Graham Dumpleton的建议检查了端点的状态:

$> oc get endpoints myapp --watch 
myapp   172.26.23.93:8080,172.26.32.244:8080   361d   //1
myapp   172.26.32.244:8080   361d                     //2
myapp   172.26.32.244:8080   361d                     
...
  • 步骤// 1:杀死任何吊舱之前有两个可用的端点
  • 步骤// 2:杀死豆荚后大约1秒,我得到了一个更新,显示了唯一可用的端点。

因此,即使立即更新了端点,请求仍需要近20秒钟才能完成。有想法吗?

kubernetes openshift haproxy openshift-origin
1个回答
0
投票

@ codependent,您找到解决此问题的方法了吗?我的行为完全相同。

© www.soinside.com 2019 - 2024. All rights reserved.