日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Consul 原理和使用简介

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Consul 原理和使用简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明

本文介紹了一個服務發現和配置共享的軟件,簡單介紹了 Consul 的原理和使用, 一篇小文拋磚引玉,希望能吸引感興趣的童鞋一起探討研究。

Consul 是什么

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

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 個.

?

<img src="https://www.consul.io/assets/images/consul-arch-b2478674.png" alt="consul-arch" class="bubble-markdown-image" target="_blank" rel="nofollow" "="" style="text-size-adjust: none; -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 99%; height: auto; vertical-align: top; border: 1px solid rgb(222, 232, 239); margin: 10px 0px;">

?

安裝 Consul

mac os x:

brew cask?install?consul

Linux 64bit:

wget https://dl.bintray.com/mitchellh/consul/0.4.1_linux_amd64.zip unzip 0.4.1_linux_amd64.zip sudo mv consul /bin

其他系統的安裝步驟,請參考官網文檔.

初體驗

啟動:
consul agent -server -bootstrap-expect?1?-data-dir /tmp/consul -node Litao-MacBook-Pro -dc sz-1

查看成員:

consul members

查看節點:

curl?127.0.0.1:8500/v1/catalog/nodes

使用DNS協議查看節點信息:

dig @127.0.0.1?-p?8600?Litao-MacBook-Pro.node.consul

注冊服務

注冊兩個 Mysql 服務的實例, 數據中心在 sz-1, 端口都是 3306. 具體為以下命令:

curl -X PUT -d '{"Datacenter": "sz-1", "Node": "mysql-1", "Address": \ "mysql-1.node.consul","Service": {"Service": "mysql", "tags": ["master","v1"], \ "Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register curl -X PUT -d '{"Datacenter": "sz-1", "Node": "mysql-2", "Address": \ "mysql-2.node.consul","Service": {"Service": "mysql", "tags": ["slave","v1"],\ "Port": 3306}}' http://127.0.0.1:8500/v1/catalog/register

curl?http://127.0.0.1:8500/v1/catalog/service/mysql

[{"Address": "mysql-1.node.consul","Node": "mysql-1","ServiceID": "mysql","ServiceName": "mysql","ServicePort": 3306,"ServiceTags": ["master","v1"]},{"Address": "mysql-2.node.consul","Node": "mysql-2","ServiceID": "mysql","ServiceName": "mysql","ServicePort": 3306,"ServiceTags": ["slave","v1"]} ]

dig @127.0.0.1?-p?8600?mysql.service.consul SRV

; <<>> DiG 9.10.0-P2 <<>> @127.0.0.1 -p 8600 mysql.service.consul SRV ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12821 ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2 ;; WARNING: recursion requested but not available;; QUESTION SECTION: ;mysql.service.consul. IN SRV;; ANSWER SECTION: mysql.service.consul. 0 IN SRV 1 1 3306 mysql-2.node.sz-1.consul. mysql.service.consul. 0 IN SRV 1 1 3306 mysql-1.node.sz-1.consul.;; ADDITIONAL SECTION: mysql-2.node.sz-1.consul. 0 IN CNAME mysql-2.node.consul. mysql-1.node.sz-1.consul. 0 IN CNAME mysql-1.node.consul.;; Query time: 0 msec ;; SERVER: 127.0.0.1#8600(127.0.0.1) ;; WHEN: Tue Dec 02 16:42:38 CST 2014 ;; MSG SIZE rcvd: 280

參考鏈接

https://www.consul.io
http://txt.fliglio.com/2014/05/encapsulated-services-with-consul-and-confd/

總結

以上是生活随笔為你收集整理的Consul 原理和使用简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。