Consul是什么
Consul由多个组件组成,但是作为一个整体它是一个服务注册和发现的工具。提供的功能有这些:
- 服务发现:consul的客户端可以作为提供类似api 或者mysq的服务,而其他consul客户端可以通过consul来发现这个服务实例的提供方。通过DNS或者HTTP,应用程序可以很容易的发现他们所依赖的服务。
- 监控检查:不管是一个给定的服务还是一个本地的实例节点,consul客户端都可以提供大量的检查检查。这个既可以用来检查集群的监控状态也可以用户服务发现组件将不健康的host剔除服务路由列表。
- KV存储:应用程序可以使用Consul的KV来存储任何数据,包括动态的配置信息,leader选举等等。它提供了很方便使用的HTTP API接口。
- 多数据中心:Consul提供了拆箱即用的多数据中心服务功能,这就意味着使用consul的用户不必担心构建额外的抽象层来扩展到多个区域。
Consul对DevOps社区和应用开发者友好的设计实现让它完美适配现代弹性的架构风格。
Consul基本的架构
Consul是一个分布式高可用的系统。每一个节点作为一个consul agent来运行并且将服务提供给Consul。作为一个agent运行不需要发起其他的服务或或者查询设置key/value的数据。这个agent只是为用于节点本身和运行在本节点的服务的健康检查使用。
需要发现其他服务或节点的基础设施组件可以查询任何consul server�或任何consul agent,这个代理就会自动将查询转发到consul server。
每一个数据中心都是作为consul server 的一个集群来来运行的。当出现跨数据中心的服务或者配置请求的时候。本地的consul server就会直接将这个请求转发到远程的数据中心并且返回结果。