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协议提供服务发现功能

  

posted @ 2022-10-26 15:33  人生苦短,知足常乐!  阅读(329)  评论(0编辑  收藏  举报