服務註冊與發現做爲微服務的關鍵組件,爲微服務提供服務註冊、服務發現及健康檢查的功能。
Consul由於功能齊全,容易使用而廣受開發者歡迎。node
服務註冊與發現linux
健康檢查瀏覽器
KV存儲curl
安裝很是簡單,Consul提供了二進制文件,下載後解壓就能夠用了。
下載地址:Linux | Mac OS X ide
root@598361668db6:/data# unzip consul_1.0.2_linux_amd64.zip root@598361668db6:/data# ls consul
root@598361668db6:/data# ./consul agent -dev ==> Starting Consul agent... ==> Consul agent running! Version: 'v1.0.2' Node ID: 'ccb504cc-f173-8464-96a7-6d13ba85246a' Node name: '598361668db6' Datacenter: 'dc1' (Segment: '<all>') Server: true (Bootstrap: false) Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, DNS: 8600) Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302) Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false
啓動很簡單,只須要一行命令。
-dev 表明咱們以開發模式啓動。
開發模式啓動以後,默認會在8500端口啓動管理界面,咱們打開瀏覽器(http://localhost:8500),一睹Consul的芳容。微服務
若是在Docker容器中啓動,會出現無妨訪問網頁的狀況。啓動命令改成:./consul agent -dev -bind 0.0.0.0 -client 0.0.0.0,能夠避免這個問題。ui
從界面中咱們能夠看到 服務、節點、KV存儲、ACL(訪問控制)和數據中心,全部功能都很直觀,你們能夠點一點,熟悉一下。url
Consul提供了三種查看節點的方式:API、命令行和DNS。
命令行方式:命令行
root@598361668db6:/data# consul members Node Address Status Type Build Protocol DC Segment 598361668db6 127.0.0.1:8301 alive server 1.0.2 2 dc1 <all>
API方式:code
root@598361668db6:/data# curl localhost:8500/v1/catalog/nodes [ { "ID": "838da409-35cd-a752-7f35-70efe35b7a43", "Node": "598361668db6", "Address": "127.0.0.1", "Datacenter": "dc1", "TaggedAddresses": { "lan": "127.0.0.1", "wan": "127.0.0.1" }, "Meta": { "consul-network-segment": "" }, "CreateIndex": 5, "ModifyIndex": 6 } ]
DNS方式
consul默認會以hostname.node.consul添加一條A記錄。
root@598361668db6:/data# hostname 598361668db6 root@598361668db6:/data# dig @127.0.0.1 -p 8600 598361668db6.node.consul ; <<>> DiG 9.10.3-P4-Ubuntu <<>> @127.0.0.1 -p 8600 598361668db6.node.consul ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41631 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;598361668db6.node.consul. IN A ;; ANSWER SECTION: 598361668db6.node.consul. 0 IN A 127.0.0.1 ;; Query time: 1 msec ;; SERVER: 127.0.0.1#8600(127.0.0.1) ;; WHEN: Wed Dec 20 10:09:13 UTC 2017 ;; MSG SIZE rcvd: 69