Consul是什么

ConsulHashiCorp公司公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 AirbnbSmartStack等相比,Consul的方案更“一站式”(不再需要依赖其他工具,如ZooKeeper等):

  • 服务注册与发现

  • 健康检查

  • Key/Value存储

  • 多数据中心方案

使用起来也较为简单。Consul用Golang实现,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与Docker等轻量级容器可无缝配合。

Consul Cluster

在Consul方案中,每个提供服务的节点上都要部署和运行Consul的agent,所有运行Consul agent节点的集合构成Consul Cluster。Consul agent有下述两种运行模式。

Server

以Server模式运行的Consul agent称为server,用于维护Consul集群的状态。官方建议每个Consul Cluster至少有3个或以上的Server mode Agent。

Client

以Client模式运行的Consul agent称为client,无状态,仅仅负责将请求转发给Server agent节点。

Consul的整体结构如下图所示:

每个数据中心的Consul Cluster都会在运行于server模式下的agent节点中选出一个Leader节点,这个选举过程通过Consul实现的raft协议保证,多个 server节点上的Consul数据信息是强一致的。

内容来源

使用consul实现分布式服务注册和发现

Last updated