1. 程式人生 > >Consul坑坑一人行之從入門到放棄,記Consul的重復註冊、節點失效後無健康檢查等坑。。。求解

Consul坑坑一人行之從入門到放棄,記Consul的重復註冊、節點失效後無健康檢查等坑。。。求解

本地 很快 地方 又一 導致 情況 style 2.x 重復

環境:

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的重復註冊、節點失效後無健康檢查等坑。。。求解