文章出處

Consul是HashiCorp公司推出的開源工具,用于實現分布式系統的服務發現與配置。與其他分布式服務注冊與發現的方案,Consul的方案更"一站式",內置了服務注冊與發現框 架、分布一致性協議實現、健康檢查、Key/Value存儲、多數據中心方案,不再需要依賴其他工具(比如ZooKeeper等)。使用起來也較 為簡單。Consul用Golang實現,因此具有天然可移植性(支持Linux、windows和Mac OS X);安裝包僅包含一個可執行文件,方便部署,與Docker等輕量級容器可無縫配合。

Consul 的使用場景

  • docker 實例的注冊與配置共享
  • coreos 實例的注冊與配置共享
  • vitess 集群
  • SaaS 應用的配置共享
  • 與 confd 服務集成,動態生成 nginx 和 haproxy 配置文件

Consul 的優勢

  • 使用 Raft 算法來保證一致性, 比復雜的 Paxos 算法更直接. 相比較而言, zookeeper 采用的是 Paxos, 而 etcd 使用的則是 Raft.
  • 支持多數據中心,內外網的服務采用不同的端口進行監聽。 多數據中心集群可以避免單數據中心的單點故障,而其部署則需要考慮網絡延遲, 分片等情況等. zookeeper 和 etcd 均不提供多數據中心功能的支持.
  • 支持健康檢查. etcd 不提供此功能.
  • 支持 http 和 dns 協議接口. zookeeper 的集成較為復雜, etcd 只支持 http 協議.
  • 官方提供web管理界面, etcd 無此功能.

綜合比較, Consul 作為服務注冊和配置管理的新星, 比較值得關注和研究.

Consul 的角色

client: 客戶端, 無狀態, 將 HTTP 和 DNS 接口請求轉發給局域網內的服務端集群.
server: 服務端, 保存配置信息, 高可用集群, 在局域網內與本地客戶端通訊, 通過廣域網與其他數據中心通訊. 每個數據中心的 server 數量推薦為 3 個或是 5 個.

.NET 客戶端 https://github.com/PlayFab/consuldotnet/ ,Nuget https://www.nuget.org/packages/Consul/

具體文章參考https://playfab.com/blog/2015/05/19/porting-consul-go-api-c

Docker image with mono-complete and consul-agent: https://github.com/catwithboots/monoconsul

 

使用Apache Mesos和Consul實現服務的注冊發現

使用Terraform與Consul自動化現代數據中心

使用consul實現分布式服務注冊和發現

Consul環境搭建和測試

Docker 負載均衡與服務發現


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()