Consul坑坑一人行之从入门到放弃,记Consul的重复注册节点失效后无健康检查等坑。。。求解
Posted wenming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Consul坑坑一人行之从入门到放弃,记Consul的重复注册节点失效后无健康检查等坑。。。求解相关的知识,希望对你有一定的参考价值。
环境:
dotnet core 2.1
CentOS 7
由于听到Eureka2.X最近好像要凉的消息
所以昨天在尝试使用Consul替代Eureka来实现服务发现等功能
Consul使用HttpAPI注册服务
但是!!!!
发现几个非常恶心的地方,在这里分享出来,希望可以得到园子里各位大牛的指导。
坑1:同一个ServiceID 可以在多个节点上重复注册!
情况是这样,我对Consul进行了好多折腾,
首先,为了避免本地Consul挂了导致服务无法注册,
所以我对Consul的HTTP端口(8500)使用nginx做了负载均衡,
但是发现一个问题,应用注册时没问题,健康检查也OK,
但是如果这时如果应用下线后,很快重新上线,
则很大可能会重新注册到其他Consul节点,
我曾天真的以为Consul集群会根据应用的ServiceID去重,
但是事与愿违,Consul集群里会出现两个相同的服务。
另:网上查过,有人说注册之前从集群中取出以后服务,
根据服务ID来比较,但是这种情况如果旧服务所在节点出现问题,则无法生效。。。。
坑2:当一个节点失效后,该节点上的服务将没有健康检查!
当服务运行正常时,关闭该服务注册的Consul节点,
此时如果服务异常,则集群无法感知到服务的状态变化。
我又一次天真的以为,集群中其他节点会接手该节点服务的健康检查,
但是并没有。。。。。
问:
1.Consul该如何部署?每台物理机都应有Client节点吗?
2.如果Client节点失效如何处理?如何对Consul做高可用?
3.上述两个坑如何填掉?
不知道园子里各位大佬有没有什么好的解决方案啊,
或者其他替用方案?大家说出来一起讨论一下
以上是关于Consul坑坑一人行之从入门到放弃,记Consul的重复注册节点失效后无健康检查等坑。。。求解的主要内容,如果未能解决你的问题,请参考以下文章
Python调用Zabbix api之从入门到放弃——从本节开始放弃