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

时间:2019-05-20 07:17:44

标签: kubernetes openshift haproxy openshift-origin

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

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

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

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

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

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

更新:

我已经按照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步:杀死Pod后大约1秒钟,我得到了一个更新,其中显示了唯一可用的端点。

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

0 个答案:

没有答案