Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置
内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)
1.跨平台(Go语言)
2.快速部署(docker)
下载地址:https://www.consul.io/downloads.html
3.持久化(可配置)
4.架构
提供服务发现和服务配置
服务发现 Consul的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用Consul去发现一个指定服务的提供者.通过DNS或者HTTP应用程序可用很容易的找到他所依赖的服务.
健康检查 Consul客户端可用提供任意数量的健康检查,指定一个服务(比如:webserver是否返回了200 OK 状态码)或者使用本地节点(比如:内存使用是否大于90%). 这个信息可由operator用来监视集群的健康.被服务发现组件用来避免将流量发送到不健康的主机
Key/Value存储 应用程序可用根据自己的需要使用Consul的层级的Key/Value存储.比如动态配置,功能标记,协调,领袖选举等等,简单的HTTP API让他更易于使用
多数据中心 Consul支持开箱即用的多数据中心.这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域.
Consul面向DevOps和应用开发者友好.是他适合现代的弹性的基础设施
agent运行为client模式.一个client是一个非常轻量级的进程.用于注册服务,运行健康检查和转发对server的查询.agent必须在集群中的每个主机上运行.
client 上报 到 server 或通过另外的client 转发数据,也可跨数据中心转发
加入集群
consul join 10.10.126.101
离开集群
consul leave
加入集群后,节点之间自动选举
查看信息
consul info
#consul的优势
使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接. 相比较而言, zookeeper 采用的是 Paxos, 而 etcd 使用的则是 Raft.
支持多数据中心,内外网的服务采用不同的端口进行监听。 多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟, 分片等情况等. zookeeper 和 etcd 均不提供多数据中心功能的支持
支持健康检查. etcd 不提供此功能
支持 http 和 dns 协议接口. zookeeper 的集成较为复杂, etcd 只支持 http 协议.
官方提供web管理界面, etcd 无此功能.
简单来说,相比zookeeper,consul要更轻量,依赖轻(Go VS Java),Raft算法要比Paxos算法简单的多,而且效率高。
相比etcd,提供了更多的功能,比如DNS server,多数据中心同步,WebUI等等
以server方式运行
consul agent -server -data-dir /tmp/consul
client方式运行
去掉-server参数就是client模式,并且要join到一个cluster中
也可以使用consul join命令手工加入到一个集群中
consul agent -data-dir /tmp/consul -join X.X.X.X
consul agent -server -ui -bootstrap -client=0.0.0.0 -data-dir /tmp/consul
加上-ui参数可以启用内置的WebUI,使用浏览器访问http://localhost:8500即可打开这个WebUI
consul支持5种check方式:
Script + Interval: 周期性运行某个可执行程序,根据程序退出码确定服务是否存活
HTTP + Interval: 周期性访问某个http地址,根据返回码是否为2xx确定服务是否存活。429将警告
TCP + Interval: 周期性发起TCP请求,根据是否成功建立连接TCP连接确定服务是否存活
Time to Live (TTL): 类似于心跳检测。服务状态是用过周期性向HTTP接口发起PUT请求确定的。超期没有更新数据就判断服务挂了
Docker + Interval: 通过docker的api检测docker内服务的状态
本文暂时没有评论,来添加一个吧(●'◡'●)