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/health
        instanceId: 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/health
        instance-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。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚持是一种态度

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值