我在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
...
因此,即使立即更新了端点,请求仍然需要将近20秒钟才能完成。有想法吗?