閱讀129 返回首頁    go 技術社區[雲棲]


基於consul高可用

1.介紹consul

Consul 是一個支持多數據中心分布式高可用的服務發現和配置共享的服務軟件,由 HashiCorp 公司用 Go 語言開發, 基於 Mozilla Public License 2.0 的協議進行開源. Consul 支持健康檢查,並允許 HTTP 和 DNS 協議調用 API 存儲鍵值對.
命令行超級好用的虛擬機管理軟件 vgrant 也是 HashiCorp 公司開發的產品.
一致性協議采用 Raft 算法,用來保證服務的高可用. 使用 GOSSIP 協議管理成員和廣播消息, 並且支持 ACL 訪問控製.

2.consul優勢

2.1 使用 Raft 算法來保證一致性, 比複雜的 Paxos 算法更直接
2.2 支持多數據中心
2.3 支持健康檢查
2.4 支持http和dns協議封口
2.5 官方提供web管理界麵
2.6 部署簡單,運維友好
相比同類的服務發現與配置的主流的產品,我個人更看好的功能是DNS API,並且提供簡單的web管理界麵。

3.consul的使用場景

3.1 docker 實例的注冊與配置共享
3.2 coreos 實例的注冊與配置共享
3.3 redis &MySQL 高可用的實現
3.4 與 confd 服務集成,動態生成 nginx 和 haproxy 配置文件

4. 基於consul redis高可用

screenshot
首先部署一個3節點的consul server 集群,用於提供主要服務。
其次redis主從服務部署,consul client 並且注冊服務,並提供讀域名和寫域名。
最後 APP應用服務的DNS解析指向consul server 節點,通過consul dns解析 獲得後端的redis master和slave的ip地址。
當故障發生,redis的主從切換時。consul會自動做DNS和域名的對應關係。

5.基於consul MySQL高可用

基本於redis的高可用類似,需要MHA高可用做配合,proxysql做讀寫分離。不過不再需要MHA的vip,隻需要使用MHA的補binlog日誌功能。

https://www.percona.com/blog/2016/09/16/consul-proxysql-mysql-ha/

#可以參考下percona博客分享

6.關於consul dns緩存問題

consul dns緩存可以設置為 有緩存狀態和無緩存狀態。默認TTL值是0。可調整有緩存的參數是dns_config.node_ttl。建議使用默認的無緩存狀態。

7.結束語

關於 consul 1.0 如何具體實現server搭建和實現redis的高可用 參考我的好基友言偉同學的博客。目前網上流傳的都是consul 老的版本,感謝言偉同學的分享。也請關注知數堂分享的新姿勢。

https://412166174.blog.51cto.com/3102369/1975822
https://412166174.blog.51cto.com/3102369/1976520

最後更新:2017-10-28 11:33:21

  上一篇:go  第二屆HotDC合肥召開 阿裏雲英特爾聯合讚助
  下一篇:go  阿裏雲優惠券幸運券領取方法使用教程