简介
服务注册与发现作为微服务的关键组件,为微服务提供服务注册、服务发现及健康检查的功能。
Consul因为功能齐全,容易使用而广受开发者欢迎。
功能
-
服务注册与发现
-
健康检查
-
KV存储
- 多数据中心
快速上手
安装
安装非常简单,Consul提供了二进制文件,下载后解压就可以用了。
下载地址:Linux | Mac OS X
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: '')
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,可以避免这个问题。
从界面中我们可以看到 服务、节点、KV存储、ACL(访问控制)和数据中心,所有功能都很直观,大家可以点一点,熟悉一下。
查看节点
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
API方式:
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