微服務~Consul服務注冊與發現


服務發現是基於微服務架構的關鍵原則之一。嘗試配置每個客戶端或某種形式的約定可能非常困難,可以非常脆弱。Consul通過HTTP API和DNS提供服務發現服務。Spring Cloud Consul利用HTTP API進行服務注冊和發現。這不會阻止非Spring雲應用程序利用DNS界面。Consul代理服務器在通過八卦協議進行通信的群集中運行,並使用筏式協議協議。

文章參考:

https://www.jianshu.com/p/28c6bd590ca0

http://blog.csdn.net/y435242634/article/details/78639663

Consul 四大特性

  1. Service Discovery (服務發現)
  2. Health Check (健康檢查)
  3. Multi Datacenter (多數據中心)
  4. Key/Value Storage

Consul相關知識點

Agent

  1. Agent 是一個守護進程
  2. 運行在Consul集群的每個成員上
  3. 有Client 和 Server 兩種模式
  4. 所有Agent都可以被調用DNS或者HTTP API,並負責檢查和維護同步

Client

  1. Client 將所有RPC請求轉發至Server
  2. Client 是相對無狀態的
  3. Client 唯一做的就是參與LAN Gossip Pool
  4. Client 只消耗少量的資源和少量的網絡帶寬

Server

  1. 參與 Raft quorum(一致性判斷)
  2. 響應RPC查詢請求
  3. 維護集群的狀態
  4. 轉發查詢到Leader 或 遠程數據中心

 

Datacenter數據中心

  1. 私有的
  2. 低延遲
  3. 高帶寬

Consensus (一致性)

Consul 使用 consensus protocol 來提供CAP(一致性,高可用,分區容錯性)

 Gossip

一種協議: 用來保證 最終一致性 , 即: 無法保證在某個時刻, 所有節點狀態一致, 但可以保證”最終”一致

 啟動Consul

Consul安裝之后,代理必須運行。 代理可以在服務器或客戶端模式下運行。 每個數據中心都必須至少有一台服務器,但推薦使用3台或5台服務器。 一個單一的服務器部署是非常不推薦的,因為在故障情況下數據丟失是不可避免, 所有其他代理以客戶端模式運行。 客戶端是一個非常輕量級的進程,它注冊服務,運行健康檢查,並將查詢轉發給服務器。 代理程序必須在集群中的每個節點上運行。

下面介紹幾個命令:

consul agent -dev  以開發模式啟動代理,不會持久化信息

consul members  查看集群成員

注冊服務

服務可以通過提供服務定義或通過對HTTP API進行適當的調用來注冊。
服務定義是注冊服務最常用的方式,所以我們將在這一步中使用這種方法。 我們將建立在上一步中介紹的代理配置。
首先,為Consul配置創建一個目錄。 Consul將所有配置文件加載到配置目錄中,因此Unix系統上的一個通用約定是將目錄命名為/etc/consul.d(.d后綴意味着“該目錄包含一組配置文件”)。

建立服務配置目錄:mkdir /etc/consul.d
添加文件:echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' | sudo tee /etc/consul.d/web.json
以開發模式啟動:consul agent -dev -config-dir=/etc/consul.d
以服務方式啟動:consul agent -server -bootstrap-expect 2 -data-dir ./tmp/consul -node=n1 -bind=192.168.109.241 -ui-dir ./dist -dc=dc1
以客戶端方式啟動:consul agent -data-dir ./tmp/consul -ui-dir ./dist -bind=192.168.109.204 -dc=dc1

加入集群

將新節點添加到集群:consul join 192.168.100.101(其中101這個節點是master)

顯示成員:consul members

查看UI管理頁面

http://localhost:8500

 

待續...

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM