alibaba / spring-cloud-alibaba

Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.
https://sca.aliyun.com
Apache License 2.0
27.95k stars 8.34k forks source link

/actuator/health提示服务状态为down,但nacos控制台服务状态为健康 #1645

Open zhujiebing opened 4 years ago

zhujiebing commented 4 years ago

Which Component Nacos Discovery

Describe what problem you have encountered 在服务运行过程中,在nacos控制台配置管理修改为错误的jdbc连接,模拟服务异常。 此时spring boot admin提示服务已处于down的状态。但是nacos服务列表里面状态还是健康的。 且这个服务的接口还可以正常调用。 nacos的服务健康检查只需要客户端一直保持心跳就行吗? image image image image image

Describe what information you have read spring cloud alibaba 2.2.1.RELEASE;spring cloud Hoxton.SR1;spring boot 2.2.2.RELEASE; nacos server是linux外置mysql 1.3.1集群三个节点 ;

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.alibaba.nacos</groupId>
                    <artifactId>nacos-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.alibaba.nacos</groupId>
                    <artifactId>nacos-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
                         <version>1.3.1</version>
        </dependency>
lltx commented 4 years ago

actuator show-details 看返回详细, DataSourceHealthIndicator 返回了down ,NacosDiscoveryHealthIndicator 还是UP

https://github.com/alibaba/spring-cloud-alibaba/blob/99d432cb497d7ea5af5dc7595fda4d2bea32b742/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java#L32-L59

zhujiebing commented 4 years ago

actuator show-details 看返回详细, DataSourceHealthIndicator 返回了down ,NacosDiscoveryHealthIndicator 还是UP

https://github.com/alibaba/spring-cloud-alibaba/blob/99d432cb497d7ea5af5dc7595fda4d2bea32b742/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java#L32-L59

需要自己扩展实现吗? 谢谢

lltx commented 4 years ago

actuator show-details 看返回详细, DataSourceHealthIndicator 返回了down ,NacosDiscoveryHealthIndicator 还是UP https://github.com/alibaba/spring-cloud-alibaba/blob/99d432cb497d7ea5af5dc7595fda4d2bea32b742/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java#L32-L59

需要自己扩展实现吗? 谢谢

可以做 但没必要 , 这个 /actuator/health 返回的 依赖状态太多 ,你根据这个 状态去注销 nacos instance 状态 不合适

zhujiebing commented 4 years ago

actuator show-details 看返回详细, DataSourceHealthIndicator 返回了down ,NacosDiscoveryHealthIndicator 还是UP https://github.com/alibaba/spring-cloud-alibaba/blob/99d432cb497d7ea5af5dc7595fda4d2bea32b742/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-nacos-discovery/src/main/java/com/alibaba/cloud/nacos/discovery/actuate/health/NacosDiscoveryHealthIndicator.java#L32-L59

需要自己扩展实现吗? 谢谢

可以做 但没必要 , 这个 /actuator/health 返回的 依赖状态太多 ,你根据这个 状态去注销 nacos instance 状态 不合适

对比了一下consul和eureka注册中心,consul或者eureka client端是通过配置healthCheckPath: /actuator/health或者healthcheck:
enabled: true来检查实例状态。实际上都是通过spring-boot-actuator模块的/health端点来监控。这样应用程序就会将自己的健康状态传播到consul或者eureka Sever。 请问nacos在设计的时候是否与前面二者在健康检查上有过对比。 谢谢答疑。

zhujiebing commented 4 years ago

@lltx 生产环境刚好遇到一个这样的场景,某一个服务出现了OOM,经过排查大致过程如下,当时/actuator/health返回了down,OOM导致实例无法给nacos server端正常上报心跳,nacos服务列表踢除了这个服务。 过了一段时间内存回收,服务恢复正常,/actuator/health又恢复为up状态。 但此时服务已经不在nacos服务列表,没办法继续提供服务。 感谢答疑。

zhujiebing commented 4 years ago

@lltx 查了一下nacos server端/bin/logs/下的access_log,OOM后没有再出现这个服务的/nacos/v1/ns/instance/beat请求。

thanks-git commented 3 years ago

Hi ,请问这个问题最后是如何解决的呢,因为我也有遇到这个问题 @zhujiebing

zhujiebing commented 3 years ago

Hi ,请问这个问题最后是如何解决的呢,因为我也有遇到这个问题 @zhujiebing

机制不一样。 你艾特一下官方的人。不知道现在新版本是否有改变。