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.上述两个坑如何填掉?

不知道园子里各位大佬有没有什么好的解决方案啊,

或者其他替用方案?大家说出来一起讨论一下

猜你喜欢

转载自www.cnblogs.com/wenming/p/9281074.html