弹性beantalk上的spring boot应用程序-健康检查失败

Posted

技术标签:

【中文标题】弹性beantalk上的spring boot应用程序-健康检查失败【英文标题】:spring boot application on elastic beanstalk - health check fails 【发布时间】:2018-04-21 17:23:34 【问题描述】:

我已经在 elastic beanstalk 上部署了我的 fat jar,它正在侦听端口 5000 并成功连接到端口 3306 上的 RDS mysql 实例。

但是,当我尝试访问我的 API 时,我收到 503 后端服务器过载等错误。我查了一下,似乎是健康检查失败

在本地,我可以使用 spring boot actuator 提供的 localhost:5000/health 检查系统健康状况,但是当我将 /health 设置为负载均衡器的端点以进行健康检查时,它会失败。由于我没有运行任何“健康实例”,因为它们未能通过健康检查,因此服务器无法用于 REST 请求。

有人知道如何让负载均衡器成功 ping 应用程序进行健康检查吗?

【问题讨论】:

什么类型的负载均衡器? 什么是/health?这是目录还是 html 页面?如果是目录,则需要指定页面的实际完整路径。 /health 是 Spring Boot 执行器包提供的 HTTP 端点。如果服务器已启动,则返回 200 ok 和 JSON "status":up 你找到答案了吗? 【参考方案1】:

这取决于你的 spring boot 配置,默认情况下:

健康端点映射到/actuator/health

Part V. Spring Boot Actuator: Production-ready features - Endpoinds

所以你在负载均衡器上的配置应该是这样的。

HTTP 代码:200 路径:/actuator/health

如果您已经设置了属性server.servlet.context-path,那么您必须将其添加到路径的前缀。

应用不同状态的响应码是:

关闭:SERVICE_UNAVAILABLE (503) OUT_OF_SERVICE:SERVICE_UNAVAILABLE (503) UP:默认无映射,所以http状态为200 UNKNOWN:默认没有映射,所以http状态为200

您可以阅读详情here。

【讨论】:

以上是关于弹性beantalk上的spring boot应用程序-健康检查失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在弹性beantalk中将PostgreSQL RDS连接到spring boot?

aws弹性beantalk上的nginx扩展

AWS 弹性 beantalk 上的 postgraphile 出现 408 超时错误

如何修复弹性beantalk实例上的“使用这些代码失败的健康检查:”?

从弹性beantalk上的docker-compose部署查看node.js日志(console.log)

aws弹性beantalk上的Oauth2服务器