1、简介

Consul 是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接。

Consul 为网络基础设施设备提供服务发现、服务网格、流量管理和自动更新。

如上图所示,基于Consul的微服务一般都是集群,集群由一个个的Consul Agent组成,在这些Consul Agent里面,分为两种角色,Server 以及 Client。

Consul是基于Raft协议实现的,这些Server里包含了Raft中的Leader以及follower。而client则只是向这些server进行键值对的读/写。

服务注册/反注册机制

当我们在本地启动Consul Agent之后,我们可以通过Consul的Restful Api(curl -request PUT http://consul/v1//agent/service/register)向Consul Agent注册服务信息,提交服务的端口号,ip地址,以及健康检查的方式。

随后,这个Client就按照配置中的周期以及方式执行健康检查,当健康检查失败的时候,就会像Server Agent发送服务不可用的消息,这个服务就会被Consul标记为不可用了。

我们也能够通过Get方法请求相同的地址来获取当前agent中注册的所有服务信息。

2、工作原理

Consul 提供了一个控制平面,使您能够注册、查询和保护跨网络部署的服务。控制平面是网络基础设施的一部分,它维护一个中央注册表来跟踪服务及其各自的 IP 地址。它是一个分布式系统,运行在节点集群上,例如物理服务器、云实例、虚拟机或容器。

核心 Consul 工作流程包括以下阶段:

  • 注册:团队将服务添加到 Consul 目录,这是一个中央注册表,可以让服务自动发现彼此,而无需人工操作员修改应用程序代码、部署额外的负载均衡器或硬编码 IP 地址。它是所有服务及其地址的运行时真实来源。团队可以使用 CLI 或 API手动定义和注册,或者您可以使用服务同步在 Kubernetes 中自动化该过程。服务还可以包括健康检查,以便 Consul 可以监控不健康的服务。
  • 查询:Consul 基于身份的 DNS 让您可以在 Consul 目录中找到健康的服务。向 Consul 注册的服务提供健康信息、访问点和其他数据,可帮助您控制网络中的数据流。根据您定义的基于身份的策略,您的服务只能通过其本地代理访问其他服务。
  • 安全:服务定位到上游后,Consul 确保服务到服务的通信经过身份验证、授权和加密。Consul 服务网格使用 mTLS 保护微服务架构,并且可以根据服务身份允许或限制访问,而不管计算环境和运行时的差异。

3、几种服务发现产品比较:

作者:admin  创建时间:2022-03-26 10:24
最后编辑:joker.liu  更新时间:2023-05-16 17:01