其他分享
首页 > 其他分享> > 云原生监控系统Prometheus——服务发现(基于 Consul 的服务发现)

云原生监控系统Prometheus——服务发现(基于 Consul 的服务发现)

作者:互联网

服务发现(基于 Consul 的服务发现)

  基于 Consul 的服务发现是一种使用网络的服务发现机制和配置工具,是使用 Go 语言开发的,部署安装较为简单,具有分布式、高可用性和极高的可扩展性。它提供了以下几个关键功能。

  官方提供的 Consul 架构图如下所示:

  首先 Consul 支持多数据中心,在上图中有两 DataCenter,他们通过 Internet 互联,同时请注意为了提高通信效率,只有 Server 节点才加入跨数据中心的通信。

  在单个数据中心中,Consul 分为 Client 和 Server 两种节点(所有的节点也被称为 Agent ),Server 节点保存数据,Client 负责健康检查及转发数据请求到 Server;Server 节点有一个 Leader 和多个 Follower ,Leader 节点会将数据同步到 Follower, Server 的数量推荐是 3 个或者 5 个,在 Leader 挂掉的时候会启动选举机制产生一个新的 Leader。

 

  Server(即服务器)端模式是具有一组扩展功能的代理,包括参与 Raft 选举、集群状态维护和响应 RPC 查询。Server 端与其他数据中心交互 WAN Gossip,并将查询转发给 Server Leader 或远程数据中心。它可以持久化所数据信息到本地,这样就算出现故障,信息也得以保存。Server Leader 负责 Server 间注册信息的同步和各个节点的监控检查工作。

  集群内的 Consul 节点通过 gossip 协议(流言协议)维护成员关系,也就是说某个节点了解集群内现在还有哪些节点,这些节点是 Client 还是 Server。单个数据中心的流言协议同时使用 TCP 和 UDP 通信,并且都使用 8301 端口。跨数据中心的流言协议也同时使用 TCP 和 UDP 通信,端口使用 8302。

  在每个数据中心中,所有的节点都要加入 Gossip 协议。这样的设计有以下目的:

  集群内数据的读写请求既可以直接发到 Server,也可以通过 Client 使用 RPC 转发到 Server,请求最终会到达 Leader 节点,在允许数据轻微陈旧的情况下,读请求也可以在普通的 Server 节点完成,集群内数据的读写和复制都是通过 TCP 的 8300 端口完成。

一、部署 Consul

  Documentation: https://docs.consulproject.org/docs/

  官网:http://consulproject.org、https://www.consul.io/

  consul 在 Github 下载页面地址 https://github.com/consul/consul/releases,也可以直接使用 git 进行 clone 操作 git clone https://github.com/consul/consul.git。

install git, Ruby 2.7.6, CMake, pkg-config, shared-mime-info, Node.js and PostgreSQL (>=9.5).

 

 

 

  

 

 

标签:数据中心,服务,consul,--,Consul,Server,Prometheus,节点
来源: https://www.cnblogs.com/zuoyang/p/16487606.html