服务注册与发现做为微服务的关键组件,为微服务提供服务注册、服务发现及健康检查的功能。
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