Consul 简介

这章主要会告诉大家 Consul 是什么,可以解决什么问题,和其他类似软件相比有什么利弊,以及如何使用。

Consul 是什么?

Consul 有很多模块,总的来说,Consul 是一个致力于服务治理的一站式工具。主要特性如下:

  • 服务发现:Consul Client 可以提供服务,比如API 或者 mysql,其他的 client 可以使用 Consul 去发现服务的提供者。支持 DNS 或者 HTTP 查询。
  • 健康监测:Consul Client可以提供任意数量的健康检查,或者和一个指定的服务相关(如“webserver是否返回200 OK”),或者与本地节点相关(如“内存利用率是否在90%以下”)。这些信息可被operator用来监控集群的监控状态,并被服务发现组件用来避免将流量导向不健康的节点。
  • K/V 存储:应用程序可以使用Consul的分级K/V存储完成很多事情,包括动态配置、特性标记、协调、主选举等等。简单的HTTP接口使它非常便于使用。
  • 支持跨数据中心:Consul天生很好的支持跨数据中心。这意味着Consul的使用者不必再劳烦去构建额外的虚拟层来支持集群增长到多个region。

Consul被设计为多运维人员和应用开发人员都说友好的,这使得它非常适合于现代的、动态的基础设施。

Consul基础架构

Consul是一个分布式的、高可用的系统。本节只会覆盖基础,刻意省略了一些不必要的细节,从而使得读者可以更快的理解Consul是如何工作的。

每个对Consul提供服务的节点上都运行着Consul agent。只进行发现服务或获得/设置KV存储数据值的节点无需运行agent。Agent用于对节点上的服务和节点本身进行健康检查。

每个agent可与一个或多个Consul server通信。Consul server中存储数据和副本,所有的Consul server会选举出一个主。虽然只有一个server也可以运行,但建议使用3-5台server以避免节点失效导致数据丢失的场景。建议所有的数据中心使用Consul server集群。

基础设施中需要发现其它服务或节点的组件可以查询任意一个Consul server或agent,agent会自动将请求转发给server。

每个数据中心都运行一个集群的Consul server。当出现一个跨数据中心的服务发现或配置发现请求时,本地Consul server会将请求转发给远程数据中心并传递结果。

results matching ""

    No results matching ""