前言
最近抽了点时间基于最新的Consul1.0.2构建了集群,替换了原来的0.9.2服务。结果在启动基于SpringCloud D版的服务时所有节点的health状态均为DOWN,瞬间一切都不好了,本章记录如何进行坑点的排查并解决的过程,提供一个源码阅读的思路。
本章概要
1、场景描述;
2、源码分析;
场景
1、首先看到如下config-server服务处于failing状态:
2、通过其health端点即可看到导致Down状态的罪魁祸首Consul:
源码分析
既然是health端点暴露的异常,则将HealthMvcEndpoint.java作为分析入口,如下获取所有的health状态:
继续跟踪
通过代理invoke获取数据,直接找到Consul对应的健康检查实现ConsulHealthIndicator.java,
可以看到其获取consul节点的信息写入up状态作为详细参考,正是由于获取过程中出现异常导致了down状态,目前来看是advertiseAddress没有获取到,继续跟进了解self具体是如何构造的,又是如何获取的,通过AgentConsulClient.java可以找到如下获取consul节点信息的入口
其通过consul提供的/v1/agent/self端点获取,并将响应的json转换为self对象实例,重点就在此处,继续看self是如何定义的Self.java,其中advertiseAddress序列化name定义为AdvertiseAddr
在1.0.2版本下确实无此字段名对应,而在0.9.3版本下即可获取到如下的需求字段
此时再看config-server服务状态已经为passing状态

Consul小贴士-记一次Consul注册failing状态跟踪相关推荐

  1. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)

    原文:.NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一) Consul介绍 Consul是HashiCorp公司推出的开源工具[开源地址:https://github.c ...

  2. consul集群安装以及服务的注册和发现

    consul集群安装 用springboot写了几个项目,leader说服务可以试着向consul上边迁移,于是搭建了consul的测试集群,至于为什么不用eureka,可以看下边这个表 Featur ...

  3. Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】

    本篇作为<Spring Cloud微服务实战>一书关于Spring Cloud Zuul网关在Dalston版本对异常处理的补充.没有看过本书的读书也不要紧,可以先阅读我之前的两篇博文:& ...

  4. UliPad常用技巧小贴士

    UliPad常用技巧小贴士 Python学了也一段时间了,拥有一款顺手的IDE工具也是写程序必备的.我发现很多人都在用sublime,用起来确实也不错,不过发现了一款国产的工具,是国内大神limodo ...

  5. python常见加密方式总结踩坑小贴士

    本文是向大家介绍python中常见的一些加密方式,在使用python的时候遇到数据加密的情况时,可以根据实际场景来选择加密的方式对数据进行加密,加强数据传输的安全性. 一.前言 日常工作中经常会看到各 ...

  6. HUAWEI HiAI常见FAQ小贴士

    8月7日,HUAWEI HiAI系统架构师在CSDN平台为广大开发者进行了以"APP进阶实战:最快10分钟接入HUAWEI HiAI"主题的直播,迎来600多名开发者在线上观看. ...

  7. 大数据时代个人信息安全保护小贴士

    个人信息安全保护小贴士 1. 朋友圈"五不晒" 2. 手机使用"四要"."六不要" 3. 电脑使用"七注意" 4. 日常 ...

  8. 重置linux桌面,Ubuntu 18.04小贴士:重置Gnome桌面与使用隐藏的屏幕录像工具

    原标题:Ubuntu 18.04小贴士:重置Gnome桌面与使用隐藏的屏幕录像工具 1.如何在Ubuntu 18.04中重置Gnome桌面 本快速教程将向您展示如何在Ubuntu 18.04 LTS中 ...

  9. 13个代码注释的小贴士

    下面的13条小贴士可以帮助你写出更规范.更容易维护的代码注释. 1.逐层注释 使用统一格式对每一个语句块进行注释,如: 类:简单描述.作者.最后修改时间等 方法:关于该方法的目的.函数.参数.返回值的 ...

最新文章

  1. 关于权限五张表的独到见解
  2. onenote复制出来是图片_你真的了解 OneNote 吗?
  3. python合法变量类型_Python 变量类型
  4. ASP.NET Core 应用程序状态
  5. android studio发布项目到github
  6. android 音频播放总结 soundlPool,MediaPlay
  7. iOS简单动画实现方案
  8. 两条信号之间加电容_电容是什么?怎么用?怎么买?
  9. [基础]全局组、域本地组、通用组的区别与联系
  10. 20175312 2018-2019-2 实验五 网络编程与安全 实验报告
  11. Android-界面-布局
  12. ES6中的const命令【转】
  13. 我国农业谋定国际竞争战略取向 对话国际农民丰收节贸易会
  14. Lu 微分方程参数优化(拟合)
  15. 服务器在线测速系统源码_亲测可用
  16. windows11 笔记本开启热点就断网
  17. java电子贺卡_用java写一个新春贺卡,可转exe的
  18. 编译内核出错:Unable to find the ncurses package. recipe for target ‘scripts/kconfig/.mconf-cfg‘ failed
  19. # 2gether 在一起 # 一份生日Party邀请函待查收
  20. java 实现手机号码(String)校验----两种方法

热门文章

  1. 软件构造实验一问题解决方法及经验教训
  2. 微信公众号jsapi支付
  3. html5的calc,CSS 计算属性 calc()的完整指南(下)
  4. php怎么插入图层,PS制作-把图片添加到图层的4种方法
  5. stm32 spi从模式配置解答
  6. 飞行控制计算机英语怎么说,“飞行模式”英语怎么说
  7. Are We Evaluating Rigorously? Benchmarking Recommendation for Reproducible Evaluation and Fair Compa
  8. 查看cbr vbr_如何在口径中查看CBR和CBZ漫画书
  9. “项目集管理标准体系与PgMP认证”讲座笔记
  10. Chrome插件安装办法【PC端】