SpringCloud Alibaba nacos如何分配健康检查模式

阅读: 评论:0

SpringCloud Alibaba nacos如何分配健康检查模式

SpringCloud Alibaba nacos如何分配健康检查模式

SpringCloud Alibaba nacos如何分配健康检查模式

  • 问题背景
  • 知识储备
    • nacos提供两种健康检查模式
      • agent上报模式
      • 服务端主动检测
    • 临时实例
  • 环境配置信息
    • 服务器123
    • 服务器105
    • 本地电脑181
    • 4000服务各实例均未在配置文件中设置为临时实例
  • 问题:
    • 123上4000服务实例为服务端健康检查
    • 105和181上4000服务实例为客户端健康检查
    • 推测

问题背景

同一服务的不同实例,在nacos的健康检查模式不一致。

知识储备

nacos提供两种健康检查模式

agent上报模式

客户端(注册在nacos上的其它微服务实例)健康检查。
客户端通过心跳上报方式告知服务端(nacos注册中心)健康状态,
默认心跳间隔5秒,
nacos会在超过15秒未收到心跳后将实例设置为不健康状态,
超过30秒将实例删除。

服务端主动检测

服务端健康检查。
nacos主动探知客户端健康状态,默认间隔为20秒,
健康检查失败后实例会被标记为不健康,不会被立即删除。

临时实例

临时实例通过agent上报模式实现健康检查。
微服务注册为临时实例:

# 默认false
spring:cloud:nacos:discovery:ephemeral: true

环境配置信息

服务器123

部署有单实例的nacos、端口为4000的微服务,注册到本机nacos

系统:Centos7
IP:***.***.1.123

服务器105

部署端口为4000的微服务,注册到123上nacos

系统:Centos7
IP:***.***.1.105

本地电脑181

部署端口为4000的微服务,注册到123上nacos

系统:Windows
IP:***.***.1.181

4000服务各实例均未在配置文件中设置为临时实例

问题:

4000服务多个实例的健康检查模式不一致

通过抓包得到的信息:
抓包过程见:记一次Centos7 tcpdump抓包实例

123上4000服务实例为服务端健康检查

105和181上4000服务实例为客户端健康检查

推测

与nacos部署在同一台服务器的客户端微服务实例,
健康检查模式为服务端检查,非同一服务器为客户端健康检查。

可能是因为在有些情况下,nacos无法访问到客户端微服务,
所以不在同一服务器部署的客户端实例通过心跳上报健康状态。

例如:
nacos部署在阿里云公网服务器,某客户端实例部署在公司内网服务器,
这种情况nacos是访问不到微服务实例的,所以只能采用客户端健康检查。

当然,这样的话该实例只能给内网中的其它实例提供服务。

如果推测有不正确的地方,欢迎指正。

参考文章:

Nacos:Nacos文档
朱鹏飞:Nacos注册中心的设计原理详解
weixin_42073629:Nacos —— 如何做健康检查
陈清河:nacos中临时实例和持久化实例有什么区别?
策码狂奔:Nacos CP/AP模式切换及微服务临时/永久实例配置

本文发布于:2024-01-31 07:39:58,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170665800126767.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分配   模式   健康   SpringCloud   Alibaba
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23