Heroku本身不支持健康检查。它会重启崩溃的服务,但没有什么比健康检查更好的了。
有时,服务变得无响应,但进程仍在运行。在大多数现代云解决方案中,您可以提供健康端点,该端点由云托管服务定期调用,如果端点返回错误或根本不返回,它将关闭此类服务并启动新服务。
这似乎是当今的工业标准,但我无法为Heroku找到任何解决方案。我甚至可以使用Heroku CLI的外部服务,但仅仅调用一些端点是不够的-如果有多个实例,它们都共享相同的URL,负载均衡器随机调用其中的一个->,因此可能根本不会命中失败的实例。即使当我点击它时,通常健康检查也会出现类似于“在连续3次健康检查失败后重新启动该实例”的内容,如果有10个实例并且其中一个变得不健康,这是非常不可能的。
你对此有什么解决方案吗?
发布于 2021-08-31 06:37:32
你说得对,这是行业标准,可惜它不是开箱即用的。
我可以想到两个解决方案(都需要运行一些额外的代码来完成所有这些工作:
a)使用heroku API,它允许您获取单个dyno的IP,然后您可以随心所欲地调用每个dyno
b)在每个dyno实例中,您可以向https://iamaalive.com/?dyno=${process.env.HEROKU_DYNO_ID}等can服务器发送请求
https://stackoverflow.com/questions/66025404
复制相似问题