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

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

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

  • 相关阅读:
    Slf4j框架的用法
    常用框架介绍
    Spring整合Kafka(Spring-Kafka)
    Java并发容器
    kafka多线程消费
    kafka简介
    kafka-clients介绍
    windows搭建kafka
    rocketmq-client使用
    Window搭建部署RocketMQ
  • 原文地址:https://www.cnblogs.com/wenming/p/9281074.html
Copyright © 2020-2023  润新知