关于consul的一些认识
目录
近期因为工作需要,简单看了一下consul服务和其源码,希望在其中改一改TLS的部分,来配合自身所需要的加密需求。
1 consul简介
说明:本文第一章全部摘录自consul官网的译文版,如需删除,请联系本人。
Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。
1.1 consul的主要特点
服务发现:Consul的客户端可以注册服务,例如 api或mysql,其他客户端可以使用Consul来发现给定服务的提供者。使用DNS或HTTP,应用程序可以轻松找到它们依赖的服务。
运行状况检查:领事客户端可以提供任何数量的运行状况检查,这些检查可以与给定服务(“ Web服务器是否返回200 OK”)或与本地节点(“内存利用率低于90%”)相关联。操作员可以使用此信息来监视群集的运行状况,服务发现组件可以使用此信息将流量路由到运行状况不佳的主机之外。
KV Store:应用程序可以将Consul的分层键/值存储用于多种目的,包括动态配置,功能标记,协调,领导者选举等。简单的HTTP API使其易于使用。
安全的服务通信:Consul可以为服务生成和分发TLS证书,以建立相互TLS连接。 意图 可用于定义允许哪些服务进行通信。可以使用可以实时更改的意图轻松管理服务分段,而不用使用复杂的网络拓扑和静态防火墙规则。
多数据中心:Consul开箱即用地支持多个数据中心。这意味着Consul的用户不必担心会构建其他抽象层以扩展到多个区域。
Consul旨在对DevOps社区和应用程序开发人员友好,使其非常适合现代,灵活的基础架构。
1.2 consul的基本架构
Consul是一个分布式的,高度可用的系统。本节将介绍基础知识,有意省略一些不必要的细节,因此您可以快速了解Consul的工作方式。有关更多详细信息,请参阅 深入的体系结构概述。
向Consul提供服务的每个节点都运行Consul代理。发现其他服务或获取/设置键/值数据不需要运行代理。该代理负责健康检查节点上的服务以及节点本身。
代理与一台或多台Consul服务器通信。Consul服务器是存储和复制数据的地方。服务器本身选举一个领导者。虽然Consul可以在一台服务器上运行,但建议使用3到5个以避免出现导致数据丢失的故障情况。对于每个数据中心,建议使用Consul服务器群集。