温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么安装Consul

发布时间:2021-10-20 09:20:17 来源:亿速云 阅读:116 作者:iii 栏目:开发技术

这篇文章主要介绍“怎么安装Consul”,在日常操作中,相信很多人在怎么安装Consul问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么安装Consul”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

什么是consul

Consul是服务网格(service  mesh)的一种解决方案,Consul是有服务发现,配置和分段功能的全功能控制平面。这些功能可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此开箱即用,但也支持Envoy等第三方代理集成。

Consul其实解决了运行微服务和云原生基础架构的网络和安全挑战。Consul提供了一种云原生的软件驱动路由和分段方法。它还带来了其他好处,比如故障处理,重试和网络可观察。

上面说到了  服务网格和数据平面,服务网格通常是和微服务在一起说的,在这里就不展开说服务网格,后面会有专门的文章来说,属于现在很火的云原生的概念,RedHat有篇文章介绍的不错,需要看的我提供了地址:https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh。数据平面很好理解就是软件和服务架构中处理数据请求的那层,相比之下,控制平面就是配置和关闭数据平面的软件部分,这里Consul就起到了控制平面的作用。

Consul的主要特点有以下:

  • 服务发现

Consul的客户端可以注册服务,例如api或mysql,客户端可以使用Consul来发现已注册的服务。使用DNS或HTTP,应用程序可以轻松找到它们依赖的服务。

  • 健康检测

Consul客户端可以提供任何数量的运行状况检查,这些检查可以与给定服务(“ Web服务器是否返回200  OK”)或本地节点(“内存利用率低于90%”)相关。你可以使用此信息来监视群集的运行状况,服务发现组件可以使用这些信息将流量从不正常的主机转移走。

  • KV存储

你应用程序可以将Consul的分层 键/值 存储用于多种目的,不限于 动态配置,功能标记,协调,集群leader选举等等。Consul提供的简单HTTP  API使其非常易于使用。

  • 安全的服务通信

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安装方便。

  • 获取镜像文件

docker pull consul

网络慢的,可能需要执行大约几分钟的时间,可以配置docker镜像的方式解决,我配置了阿里镜像

  • 检查下是否下载完成

➜  docker images -f 'reference=consul' REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE consul              latest              2823bc69f80f        4 weeks ago         120MB
  • 启动Consul服务器

➜  docker images -f 'reference=consul' REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE consul              latest              2823bc69f80f        4 weeks ago         120MB

-d: 表示后台启动

-p: 表示映射本机的8500和8600到docker容器的8500和8600/udp端口

最后一行就是consul 启动服务器的命令

  • 观察启动日志

因为刚才是后台启动的,也看不到日志情况,可以通过下面的方式查看

➜  docker logs d2806ac2b7e1 // 后面的这个id就是容器的id,可以通过 docker -ps -l 查看

看到这样的日志,说明就是启动没问题的

==> Starting Consul agent...            Version: '1.9.1'            Node ID: '5cea9bb5-53f2-e71e-1a46-b23f188da307'          Node name: 'server-1'         Datacenter: 'dc1' (Segment: '<all>')             Server: true (Bootstrap: true)        Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)       Cluster Addr: 172.17.0.2 (LAN: 8301, WAN: 8302)            Encrypt: Gossip: false, TLS-Outgoing: false, TLS            ....            ==> Consul agent running!            ....

现在服务端启动了,接下来应该要启动一个客户端去连接这个服务端,这里有个问题,我怎么知道我启动这个服务端的IP地址和端口号,docker提供了可以直接执行容器内Consul命令的方式。

  ➜  docker exec d2806ac2b7e1 consul members Node      Address          Status  Type    Build  Protocol  DC   Segment server-1  172.17.0.2:8301  alive   server  1.9.1  2         dc1  <all>

当然你也可以直接进去到容器内部,进去容器内部,使用的是exec命令

docker exec -it d2806ac2b7e1 /bin/sh //然后执行 consul members

docker执行容器内支持的命令方式为:

docker exec <container_id> consul members

这里发现 服务端的地址是172.17.0.2:8301

  • 配置运行客户端

docker run \    --name=test-1 \    consul agent -node=client-1 -join=172.17.0.2

看到下面的输出说明没有问题,注意这里的name是指的容器参数

==> Starting Consul agent... ==> Joining cluster...     Join completed. Synced with 1 initial agents ==> Consul agent running!            Version: 'v1.4.4'            Node ID: '4b6da3c6-b13f-eba2-2b78-446ffa627633'          Node name: 'client-1'         Datacenter: 'dc1' (Segment: '')             Server: false (Bootstrap: false)        Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600)       Cluster Addr: 172.17.0.4 (LAN: 8301, WAN: 8302)            Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

通过再次在容器中执行consul Members命令来检查客户端是否已加入

docker exec d2806ac2b7e1 consul members

发现已经变成两个了,并且状态都是可用状态

 docker exec d2806ac2b7e1 consul members Node      Address          Status  Type    Build  Protocol  DC   Segment server-1  172.17.0.2:8301  alive   server  1.9.1  2         dc1  <all> client-1  172.17.0.3:8301  alive   client  1.9.1  2         dc1  <default>

现在有了一个小的数据中心,就可以注册服务或者配置数据玩了。

其实,查看数据中心的方式,还可以通过web的方式来查看,Consul默认的http接口是8500端口,这个端口启动的ui接口,可以方便的管理配置数据中心。打开如图,点击NODES  查看节点

怎么安装Consul

点击节点,右边可以看到节点的健康状态,代理是否可用等

怎么安装Consul

到此,关于“怎么安装Consul”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI