我有一個安裝程序,用於從Docker羣覆蓋網絡內部署Spring-Cloud-Consul應用程序。在我的覆蓋網絡中,我在每個節點上創建了領事圖像。當我啓動spring-cloud-consul應用程序時,我必須指定它應與之對話的代理主機名稱,例如「發現」,以便它可以通告自己並查詢服務發現。這裏的問題是,每個集裝箱都在查詢同一個領事代理人。當我移除這個特定的consul代理時,Ribbon DiscoveryClient似乎依靠自己的緩存而不是使用其他consul節點之一。Spring Cloud with Consul高可用性
使用spring-cloud-consul和consul啓動一個微服務應用程序的正確方法是什麼,它們不依賴於一個固定的consul代理。
解決方案我已經想嘗試:
- 擁有多個撰寫文件,並指定不同的領事代理。
- 以某種方式讓泊塢窗鏡像識別它所在的節點,然後設置自己使用該節點本地的consul代理。 (不知道如何做到這一點呢。)
- 用spring-boot應用程序打包一個consul代理。
謝謝你的幫助。
從https://www.consul.io/docs/agent/basics.html「代理程序必須在作爲Consul集羣一部分的每個節點上運行。」在每個節點上運行代理的IMO正在每個泊塢箱容器中運行代理。 – spencergibb
這將是選項3.但我覺得這是一種打破微服務封裝。它還使得打包這些圖像變得更加困難,因爲這需要擴展consul鏡像,確保java對spring的需求在那裏,然後運行這兩種服務。然而,它確實提供了最高的可靠性,因爲某個特定的領事代理人只會降低一個實例。 – Mimyck
「微服務封裝」是什麼意思?領事是一個單一的二元。 – spencergibb