短时间不活动后,Openshift 服务不可用编辑 1:编辑 2:编辑3:编辑4:
2022-09-04 04:53:59
我们的项目托管在OpenShift(确切地说是OKD。我们自己托管它)。设置如下:
-
路由服务器(带有Zuul的Spring Boot 1.5.8):这个服务器接收所有传入流量并将其路由到正确的服务
-
多种服务(全部使用Spring Boot):这是所有业务逻辑
我们使用 SOAP 来调用此项目中的其他服务。
目前,当我们调用应用程序时,调用转到路由服务器,然后将其路由到主业务服务。在短暂闲置约一小时后,我们的主要业务服务无法通过外部呼叫到达。但是,边缘服务器在 100% 的时间内可用且可调用。当我们调用它时,我们确实从系统中得到一个异常。我们已经弄清楚这是开放移位(在路线中)中路由的超时。504 Gateway Timeout
haproxy.router.openshift.io/timeout
核心问题是,OpenShift似乎在大约一个小时的不活动后休眠了主要业务服务。在延迟15分钟后,呼叫似乎找到了目的地,并且数据得到了正确的处理。
我们如何关闭这种行为?
编辑 1:
- 我们在生产中的普通“老式”VM 中具有相同的应用程序。我们在那里没有任何问题。
- 我们注意到,当我们称它们为常规服务时,这些服务可以“保持活动状态”。我们建立了一个小型服务,称为主题规则(每15分钟一次)。这样它似乎有效。但这不是IMO的生产就绪解决方法。
编辑 2:
我们的 pod 配置(有些名称是匿名的):
https://gist.github.com/moritzluedtke/6867499b0acbb2d7b5a9a70e49b0d45c
我们不使用自动缩放程序。
编辑3:
我们的部署配置(有些名称是匿名的):
https://gist.github.com/moritzluedtke/dc7c1078fe9cc7e4aeb737094849fc1b
OpenShift Master: v3.11.0+1c3e643-87
Kubernetes Master: v1.11.0+d4cacc0
OpenShift Web Console: v3.11.0+ea42280
编辑4:
这似乎不是OpenShift的问题,而是我们的技术堆栈。一旦我们有了解决方案,我将立即更新这个问题。