弹性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 上的 postgraphile 出现 408 超时错误
如何修复弹性beantalk实例上的“使用这些代码失败的健康检查:”?