consul
参数说明
server: 以server身份启动。默认是client bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。 data-dir:data存放的目录,更多信息请参阅consul数据同步机制 node:节点id,集群中的每个node必须有一个唯一的名称。默认情况下,Consul使用机器的hostname bind:监听的ip地址。默认绑定0.0.0.0,可以不指定。表示Consul监听的地址,而且它必须能够被集群中的其他节点访问。Consul默认会监听第一个private IP,但最好还是提供一个。生产设备上的服务器通常有好几个网卡,所以指定一个不会出错 client: 客户端的ip地址,0.0.0.0是指谁都可以访问(不加这个,下面的ui :8500无法访问) ui: 可以访问UI界面 -config-dir指定配置文件夹,Consul会加载其中的所有文件 -datacenter 指定数据中心名称,默认是dc1
consul原理介绍
1. consul对外暴露了4种通讯接口
1.1 RPC
主要用于内部通讯Gossip/日志分发/选主等
1.2 HTTP API
服务发现/健康检查/KV存储等几乎所有功能
默认端口为8500
1.3 Consul Commands (CLI)
consul命令行工具可以与consul agent进行连接,提供一部分consul的功能。
实时上Consul CLI默认就是调用的HTTP API来与consul集群进行通讯。
可以通过配置CONSUL_HTTP_ADDR修改Consul CLI连接的目标地址
CONSUL_HTTP_ADDR=http://127.0.0.1:8500
1
1.4 DNS
仅用于服务查询
2 服务发现
2.1 DNS方式
$ dig @127.0.0.1 -p 8600 web.service.consul
;; QUESTION SECTION:
;web.service.consul. IN A
;; ANSWER SECTION:
web.service.consul. 0 IN A 127.0.0.1
我们可以通过cosul提供的DNS接口来获取当前的service“web” 对应的可用节点(详细用法见参考资料4)
DNS方式要求使用方主动进行DNS解析,是主动请求的过程。它对线上服务节点的变化,反应是延迟的。
2.2 Watch方式
watch采用HTTP长轮训(long polling)实现的。
2.3 服务注册
服务注册可以通过 服务注册接口 /agent/service/register 很容易做到
3 服务注销
节点和服务的注销可以使用HTTP API:
注销任意节点和服务:/catalog/deregister
注销当前节点的服务:/agent/service/deregister/:service_id
注意:
如果注销的服务还在运行,则会再次同步到catalog中,因此应该只在agent不可用时才使用catalog的注销API。
节点在宕机时状态会变为failed,默认情况下72小时后会被从集群移除。
如果某个节点不继续使用了,也可以在本机使用consul leave命令,或者在其它节点使用consul force-leave 节点Id,则节点上的服务和健康检查全部注销
consul各端口作用分析
consul服务端启动时会监听5个端口,这5个端口的作用:
8300:集群内数据的读写和复制 8301:单个数据中心gossip协议通讯 8302:跨数据中心gossip协议通讯 8500:提供获取服务列表、注册服务、注销服务等HTTP接口;提供UI服务 8600:采用DNS协议提供服务发现功能