Consul提供服务注册、发现、配置共享、监控检查、key/value存储,支持分布式一致性,主要面向分布式、服务化的系统提供服务发现和配置管理功能。
介绍
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发,基于 Mozilla Public License 2.0 的协议进行开源。Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对.
命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品.
一致性协议采用 Raft 算法,用来保证服务的高可用。使用 GOSSIP 协议管理成员和广播消息,并且支持 ACL 访问控制.
使用场景
- docker 实例的注册与配置共享
- coreos 实例的注册与配置共享
- vitess 集群
- SaaS 应用的配置共享
- 与 confd 服务集成,动态生成 nginx 和 haproxy 配置文件
优势
- 使用 Raft 算法来保证一致性,比复杂的 Paxos 算法更直接。相比较而言,zookeeper 采用的是 Paxos,而 etcd 使用的则是 Raft.
- 支持多数据中心,内外网的服务采用不同的端口进行监听。 多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟,分片等情况等。zookeeper 和 etcd 均不提供多数据中心功能的支持
- 支持健康检查。etcd 不提供此功能
- 支持 http 和 dns 协议接口。zookeeper 的集成较为复杂,etcd 只支持 http 协议
- 官方提供web管理界面,etcd 无此功能
综合比较,Consul 作为服务注册和配置管理的新星,比较值得关注和研究.
角色
- client: 客户端,无状态,将 HTTP 和 DNS 接口请求转发给局域网内的服务端集群.
- server: 服务端,保存配置信息,高可用集群,在局域网内与本地客户端通讯,通过广域网与其他数据中心通讯。每个数据中心的 server 数量推荐为 3 个或是 5 个.