Local-Area-Network
Consul 作為本地本地網路中的服務發現和配置伺服器
我們正在開發一種產品,它將作為一組部署在本地(例如,在辦公室、工廠等的本地網路中)的服務工作。由於每個客戶可能有很多部署目標,並且我們希望通過盡可能自動化來最大程度地減少配置工作,因此我們正在考慮使用consul作為服務發現和配置伺服器的解決方案。它符合我們的要求,並且還提供了服務之間的雙向 TLS 身份驗證,使整個設置更加安全。
我們有兩個基本要求:
- 部署目標將非常多樣化:一些客戶將在其員工的工作站中部署軟體(因此這些工作站可以在一天結束時關閉),其他一些將有專用伺服器,其中大多數將有一個結合這兩種情況(一個或兩個專用伺服器和幾個工作站)。
- 每個客戶將至少擁有一台機器,該機器要麼永遠不會關閉,要麼會在所有其他機器之前啟動(這是允許的,因為這種工作方式在我們提供給客戶的手冊中)。我們稱這台機器為master。
但是,在網上做研究,和Consul玩了很多之後,我們還是有些疑惑。特別是,我們需要關於 Consul 文件要求的建議,即您的集群中至少需要 3 個實例。它是否適合我們的案例,它將安裝在客戶員工的工作站中,可以隨時關閉(即使有一個實例,我們稱之為主實例,將始終可用)?
Consul 不適合您的案例,因為它希望有一定數量的節點可用於達成共識。就像所有分佈式共識系統一樣,它也是一個挑剔的、笨拙的 sh…oftware,它會導致比它阻止的更多的停機時間,直到你花費大量時間來解決它的所有弱點。
有一次,我接到一位前雇主的電話,求我修理他們用軟管沖洗的 Consul 集群,因為它已經摧毀了所有東西,而且他們還在那裡,沒有人知道如何用甜言蜜語讓它恢復生機。
不要嘗試著迷於服務發現;由於您有一台始終可用的機器,因此只需將某種數據庫放在那裡即可。