【问题标题】:Heroku - restart on failed health checkHeroku - 在健康检查失败时重新启动
【发布时间】:2021-05-07 13:26:08
【问题描述】:

Heroku 本身不支持健康检查。它将重新启动崩溃的服务,但没有什么比健康检查更重要的了。

有时会发生服务无响应,但进程仍在运行。在大多数现代云解决方案中,您可以提供由云托管服务定期调用的健康端点,如果该端点返回错误或根本不返回,它将关闭此类服务并启动新服务。

现在这似乎是工业标准,但我无法为 Heroku 找到任何解决方案。我什至可以通过 Heroku CLI 使用外部服务,但仅调用某个端点是不够的 - 如果有多个实例,它们都共享相同的 URL,负载均衡器会随机调用其中一个 -> 因此可能不会在全部。即使当我点击它时,通常健康检查也会出现类似“在连续 3 次失败的健康检查后重新启动该实例”之类的内容,如果有 10 个实例并且其中一个变得不健康,这是极不可能的。

你有什么解决办法吗?

【问题讨论】:

    标签: node.js heroku cloud microservices health-check


    【解决方案1】:

    您说得对,这是行业标准,遗憾的是它不是开箱即用的。

    我可以想到 2 个解决方案(都涉及运行一些额外的代码来完成所有这些工作:

    a) 使用 heroku API,它允许您获取各个 dyno 的 IP,然后您可以根据需要调用每个 dyno

    b) 在每个 dyno 实例中,您可以向网络服务器发送请求,例如 https://iamaalive.com/?dyno=${process.env.HEROKU_DYNO_ID}

    【讨论】:

      猜你喜欢
      • 2018-07-11
      • 2019-05-05
      • 1970-01-01
      • 2020-12-18
      • 2015-01-23
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      相关资源
      最近更新 更多