一、Consul是什么?
Consul有多个组件,但总体而言,为你的基础设施提供服务发现和服务配置的功能,有以下关键特性
服务发现 Consul的客户端可提供一个服务,比如api或者mysql,另外一些客户端可使用Consul去发现指定的服务,并通过DNS或者HTTP应用程序找到他所依赖的服务
健康检查 Consul客户端可提供健康检查,指定一个服务(比如webserver是否返回200 OK状态码)或者使用本地节点(比如内存使用率是否大于90%),这个信息可由operator用来监视集群的健康,被服务发现组件用来避免将流量发送到不健康的主机
Key/Value存储 应用程序可根据自己的需要使用Consul的层级Key/Value存储,比如动态配置,功能标记,协调,领袖选举等等,简单的HTTP API让他更易于使用
多数据中心 Consul支持开箱即用的多数据中心,这意味着用户不需要担心建立额外的抽象层让业务扩展到多个区域,Consul面向DevOps和应用开发者友好,是他适合现代的弹性的基础设施
二、安装consul
下载链接:https://www.consul.io/downloads.html
三、关键名词
-server : 定义agent运行在server模式
-bootstrap-expect :在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap共用
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名
-ui-dir: 提供存放web ui资源的路径,该目录必须是可读的
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。
-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载
-client:consul服务侦听地址,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1所以不对外提供服务,如果你要对外提供服务改成0.0.0.0
四、启动本地consul服务
consul agent -dev:本地启用consul服务
consul mambers:查看集群成员
127.0.0.1:8500/ui:consul-ui地址
五、服务注册
http://consul:8500/v1/agent/service/register [PUT]
{
"ID": "userServiceId", //服务id
"Name": "userService", //服务名
"Tags": [ //服务的tag,自定义,可以根据这个tag来区分同一个服务名的服务
"primary",
"v1"],
"Address": "127.0.0.1",//服务注册到consul的IP,服务发现,发现的就是这个IP
"Port": 8000, //服务注册consul的PORT,发现的就是这个PORT
"EnableTagOverride": false,
"Check": { //健康检查部分
"DeregisterCriticalServiceAfter": "90m",
"HTTP": "http://www.baidu.com", //指定健康检查的URL,调用后只要返回20X,consul都认为是健康的
"Interval": "10s" //健康检查间隔时间,每隔10s,调用一次上面的UR
}
}
http://127.0.0.1:8500/v1/health/service/hello?passing=false //查询服务名为hello的信息
网友评论