什么是consulConsul是ServiceMesh的解决方案。Consul是一个功能齐全的控制平面,具有服务发现、配置和分段功能。这些功能可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要数据平面并支持代理和本机集成模型。Consul带有一个简单的内置代理,因此它开箱即用,但也支持第三方代理集成,如Envoy。Consul实际上解决了运行微服务和云原生基础设施的网络和安全挑战。Consul为软件驱动的路由和分段提供了一种云原生方法。它还带来了其他好处,如故障处理、重试和网络可观察性。上面提到了服务网格和数据平面。服务网格通常与微服务一起被提及。我不会在这里谈论服务网格。后面会有专门的文章,属于流行的云原生的概念,RedHat有一篇文章介绍的很好,需要阅读的我提供了地址:https://www.redhat.com/en/主题/微服务/什么是服务网格。数据平面很好理解为软件和服务架构中处理数据请求的层。相反,控制平面是配置和关闭数据平面的软件部分。这里Consul扮演的是控制平面的角色。Consul的主要特点如下:服务发现Consul客户端可以注册服务,比如api或者mysql,客户端可以使用Consul来发现注册的服务。使用DNS或HTTP,应用程序可以轻松找到它们所依赖的服务。健康检查Consul客户端可以提供任意数量的与给定服务相关的健康检查(“Web服务器是否返回200OK”)或本地节点(“内存利用率低于90%”)。您可以使用此信息来监视集群的健康状况,服务发现组件可以使用此信息将流量从不健康的主机转移开。KV存储您的应用程序可以将Consul的分层键/值存储用于多种用途,不仅限于动态配置、功能标志、协调、集群领导者选举等。Consul提供的简单HTTPAPI使其非常易于使用。安全的服务通信Consul可以为服务生成和分发TLS证书,然后建立相互的TLS连接。意图用于定义允许哪些服务进行通信。可以通过实时更改意图轻松管理服务分段,无需复杂的网络拓扑和静态防火墙规则。多数据中心Consul开箱即用地支持多个数据中心。这意味着Consul的用户不必担心构建额外的抽象层以扩展到多个区域。Consul的设计对DevOps社区和应用程序开发人员非常友好,使其成为现代、灵活的基础设施的理想选择。Consul的基本架构Consul是一个分布式、高可用的系统。本节将介绍基础知识,有意省略一些不必要的细节,以便您快速了解Consul的工作原理。每个为Consul提供服务的节点都运行一个Consul代理。当用于发现服务或获取配置键值对数据时,不需要使用代理。代理负责节点上的服务和节点自身的健康检查。代理与一台或多台Consul服务器通信。Consul服务器是存储和复制数据的地方。服务器自己选举一个领导者。虽然Consul可以在单个服务器上运行,但建议使用3到5个节点以避免在发生故障时丢失数据。建议为每个数据中心使用一个Consul服务器集群。服务器维护一个目录,该目录是通过聚合代理提交的数据生成的。该目录维护集群的高级视图,包括哪些服务可用、哪些节点正在运行这些服务、健康信息等等。发现其他服务或节点所需的基础组件可以查询任何Consul服务器或任何Consul代理。代理自动将查询转发到服务器。每个数据中心运行一个Consul服务器集群。当有跨数据中心的服务发现或配置请求时,本地Consul服务器将请求转发到远程数据中心并返回结果。Consul的安装这里是为了环境方便。我使用docker方法。之前试过虚拟机、笔记本物理机等,但是用docker安装没有那么方便。获取镜像文件dockerpullconsul网络速度慢,可能需要几分钟才能执行。可以配置docker镜像来解决。我配置了阿里镜像,查看是否下载完成。-f'reference=consul'REPOSITORYTAGIMAGEIDCREATEDSIZEconsullatest2823bc69f80f4weeksago120MB-d:表示后台启动-p:表示将本机的8500和8600映射到docker容器的8500和8600/udp端口最后一行是启动consulserver的命令,观察启动日志因为是刚刚启动后的后台,看不到日志,可以通过以下方式查看?dockerlogsd2806ac2b7e1//后面的id是容器的id,可以通过查看这样的日志docker-ps-l,说明启动没有问题=>StartingConsulagent...Version:'1.9.1'NodeID:'5cea9bb5-53f2-e71e-1a46-b23f188da307'Nodename:'server-1'Datacenter:'dc1'(Segment:'
