Consul有多个组件,但是整体来看,它是你基础设施中用于发现和配置服务的一个工具。它提供如下几个关键功能:

  • 服务发现: Consul的某些客户端可以提供一个服务,例如api或者mysql,其它客户端可以使用Consul去发现这个服务的提供者。使用DNS或者HTTP,应用可以很容易的找到他们所依赖的服务。
  • 健康检查: Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务(服务是否返回200 OK),也可以关联到本地节点(内存使用率是否在90%以下)。这些信息可以被一个操作员用来监控集群的健康状态,被服务发现组件路由时用来远离不健康的主机。
  • 键值存储: 应用可以使用Consul提供的分层键值存储用于一些目的,包括动态配置、特征标记、协作、leader选举等等。通过一个简单的HTTP API可以很容易的使用这个组件。
  • 多数据中心: Consul对多数据中心有非常好的支持,这意味着Consul用户不必担心由于创建更多抽象层而产生的多个区域。

Consul被设计为对DevOps群体和应用开发者友好,他非常适合现代的、可伸缩的基础设施。

Consul是一个分布式、高可用的系统。本节将介绍基础知识,故意省略了一些不需要的细节,这样您可以快速的理解Consul是怎样工作的。对于更多细节,请参阅深入的架构概述。

为Consul提供服务的每一个节点都运行一个Consul Agent。作为一个Agent不需要提供服务发现或者键值数据的存取,Agent负责检查节点上的服务及节点本身的健康状况。

Agent与一个或多个Consul Server进行通信,Consul Server会进行数据的存储,多个Server之间会进行复制。Server们会选举一个Leader。虽然一个Server也可以完成Consul的功能,但是为了避免失败情形导致的数据丢失,推荐3-5个Server;并且推荐每个数据中心都有一个Consul的集群。

您的基础设施中需要发现其它服务或节点的组件可以查询任何一个Consul Server或者Consul Agent。Agent会自动向Server进行查询。

每个数据中心运行一个Consul Server的集群。当作出一个跨数据中心的服务发现或配置请求时,本地的Consul Server直接将请求发送到远程数据中心并返回结果。

比较Consul和其它软件,以评估它如何融合到您现有的基础设施。

然后继续入门指南,让Consul运行起来。