springCloud之Consul简介

发布时间 2023-04-08 10:40:25作者: shigp1

Consul是什么

Consul是HashiCorp公司推出的开源工具。HashiCorp Consul是一种服务网络解决方案,使团队能够管理服务之间以及跨预处理和多云环境和运行时的安全网络连接。Consul为网络基础设施设备提供服务发现、服务网格、流量管理和自动更新。您可以单独使用这些功能,也可以在单个Consul部署中一起使用。

Consul的特点

1、服务注册和发现:在云基础设施上采用微服务架构是实现大规模价值的关键一步,但实时了解健康服务在网络上的运行位置将成为一项挑战。Consul通过将通常由负载均衡器处理的服务连接替换为基于身份的服务目录来自动化服务发现。服务目录是一个集中的真相来源,您可以通过Consul的DNS服务器或API进行查询。目录总是知道哪些服务是可用的,哪些已经被删除,哪些服务是健康的。
2、跨运行时和云提供商连接服务:Consul将网络流量路由到您的服务需要到达的任何运行时或基础设施环境。您还可以使用Consul API网关来路由流量进出网络。Consul服务网格提供了额外的功能,例如确保服务之间的通信安全、流量管理和可观察性,而无需更改应用程序代码。Consul还与Kubernetes进行了许多集成,使您能够在容器化环境中利用Consul功能。例如,Consul可以自动将sidecar代理注入Kubernetes Pods,并将Kubernete服务和非Kubernets服务同步到Consul服务注册表中,而无需手动更改应用程序或更改Pod定义。
3、启用零信任网络安全:微服务体系结构很复杂,很难保护其免受恶意行为者的意外泄露。Consul提供了几种机制,可以在不更改应用程序代码的情况下增强网络安全性,包括对服务和Consul意图之间的所有流量进行相互传输层安全性(mTLS)加密,您可以通过Consul UI、API和CLI管理服务的权限。
4、保护您的服务免受网络故障的影响:停电是不可避免的,但对于分布式系统来说,一个数据中心的电源故障不会中断下游服务操作至关重要。您可以启用自动备份、冗余区域、读取副本和其他功能,以防止灾难性事件后的数据丢失和停机。L7可观察性特性还在Consul UI中提供服务流量度量,这有助于您了解服务的状态及其在网格中的连接。
5、动态更新网络基础设施设备:更改网络,包括更新网络设备端点和防火墙或负载均衡器规则等日常操作任务,可能会导致在关键时刻中断操作的问题。您可以部署Consul Terraform Sync(CTS)插件,以便在服务更改时动态更新网络基础设施设备。CTS监控Consul中存储的服务信息,并在Consul注册更改时自动启动HashiCorp Terraform实例,以驱动网络基础设施的相关更改,从而减少配置网络基础设施时的手动工作量。
6、优化部署和测试场景的流量路线:推出更改可能有风险,尤其是在复杂的网络环境中。更新后的服务在连接到其他服务时可能无法正常运行,从而导致上游或下游问题。Consul服务网格支持第7层(L7)流量管理,可以将L7流量划分为不同的服务实例子集。这使您能够将服务池划分为金丝雀测试、A/B测试、蓝/绿部署和软多租户(prod/qa/stating共享计算资源)部署。
7、分布式配置:通过key/value存储配置。

Consul架构图

 

建议在Consul集群内部署5个节点,分布在三个可用性区域之间,因为此体系结构可以承受集群内两个节点的损失或整个可用性区域的损失。这些服务器一起运行Raft驱动的一致状态存储,用于更新目录、会话、准备好的查询、ACL和KV状态。

安装

Consul的下载地址是https://developer.hashicorp.com/consul/downloads。下载并解压后运行./consul 查看支持命令:

 

运行命令启动Consul: ./consul agent -server -node=consul -data-dir=./consul_data -ui -bootstrap-expect=1,-server 表示是server模式,-bootstrap-expect=1 表示是集群中有1台服务器 bootstrap该模式node可以指定自己作为leader ,如果是非leader可不加该参数; -data-dir指定数据目录,-node表示该服务器节点名,-ui 非必须 ,用web来管理consul。

 

启动成功后,访问http://127.0.0.1:8500/,可看到

 

通过Services菜单可以查看注册到Consul的服务。