consul注册中心服务All service checks failing及解决

2023-10-21 12:30

本文主要是介绍consul注册中心服务All service checks failing及解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • consul注册中心服务All service checks failing
      • 问题一:能注册,有报错,中间件不可用
      • 问题二:能注册,没报错,通不过检查
      • 问题三:同一个服务,注册了很多次

consul注册中心服务All service checks failing

问题一:能注册,有报错,中间件不可用

  • 现象:服务已启动,可以访问,但是注册中心里红叉All service checks failing
  • 原因:大多数情况下是程序有报错
    • 首先去查看服务的启动日志,看看有没有报错,如果启动日志有明显报错,对应解决即可
    • 大多数为配置文件设置的某个中间件连接不了,检查不通过
    • 例如redis服务连接失败、数据库连接失败、kafka连接失败,都遇到过
  • 解决:将所有依赖的中间件,启动起来,保证可以正常访问即可

问题二:能注册,没报错,通不过检查

  • 现象:这是一个新增的微服务,调用第三方服务的SDK提供服务,由于只有windows版本SDK,所以该服务只能在windows系统里部署,而consul注册中心在linux里面,网络已打通。windows里的单体微服务已启动,启动日志也没有任何报错信息,注册成功。服务接口能正常调用,但是注册中心红叉,校验不通过All service checks failing

  • 原因:查看了注册中心的信息,发现健康检查的地址不对,是一个内网地址(192.168.1.x),windows机器有多个网卡,取了机器的其中一个ip地址,没取实际的连接地址(183.169.xxx.xx),导致健康检查时http访问不通
    在这里插入图片描述

  • 解决:在配置文件里,直接指定健康检查地址,将可访问的本机ip设置进去,即可

spring:cloud:consul:discovery:health-check-url: http://183.169.xxx.xx:xxxx/management/health

问题三:同一个服务,注册了很多次

  • 现象:服务重启后,新增了一个微服务,之前的服务也没有从注册中心移除,而且健康状态也是绿色
  • 原因:instantId不同,注册中心服务监测使用的url是一样的
    • 服务的instantId,加了随机数,所以每次启动服务都会生成一个新的instantId

    • 虽然instantId不同,但是注册中心服务监测使用的url都是一样的

    • 在同一台机器上反复重启,就会增加很多instantId不同的该服务加入注册中心,而监测使用的url是一样的,则最新的服务启动成功后,注册中心监测是通过的,其余的
      在这里插入图片描述

    • 原有配置

spring:cloud:consul:discovery:healthCheckPath: /management/healthinstanceId: data-analysis:${spring.application.instance-id:${random.value}}service-name: data-analysis
  • 服务名相同,instantId不同的服务,都加入了注册中心,且都检查最新的微服务
  • 解决:去除随机数即可
    • 注释掉instanceId一行,使用ip端口号生成 服务名-ip地址-端口号,保证instance-id在需要一致(ip端口相同)时保持一致即可
    • 增加heartbeat.enabled=true,使用ttl方式心跳监测服务监控状态
    • 修改后的配置
spring:cloud:consul:discovery:healthCheckPath: /management/healthinstance-id: ${spring.application.name}-${spring.cloud.client.ip-address}-${server.port}service-name: ${spring.application.name}heartbeat:enabled: true # 为true使用 ttl 方式,默认false使用 http 方式

注意:${spring.cloud.client.*} 是利用了Spring Boot配置文件可以读取环境变量的特点,应用需要集成Spring Boot Actuator。

这篇关于consul注册中心服务All service checks failing及解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254402

相关文章

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别