ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-17 19:04:31  阅读:138  来源: 互联网

标签:数据中心 服务 consul -- Consul Server Prometheus 节点


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

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

    • 服务发现:Consul 通过 HTTP API 和 DNS 进行服务注册和服务发现。对于外部服务(如 SaaS 提供者)也可以注册。
    • 健康检查:Consul 支持对各类服务运行状态的健康检查工作,能够迅速向管理员告警集群中的任何问题,可以防止将流量路由到问题或故障主机,可动态监视服务运行状况并适当更新服务注册表。
    • 键/值存储:键/值存储可以灵活地进行存储动态配置、功能标记、协调和领导者选举等。简单的 HTTP API 使其易于在任何地方使用。
    • 多数据中心:Consul 支持单一数据中心,可扩展以支持多个数据中心,并且无须复杂的配置。
    • 服务分割:通过自动 TLS 加密和基于身份的授权实现安全的服务间通信。

  官方提供的 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 协议。这样的设计有以下目的:

    • 第一,不需要为客户端配置服务器地址,发现是自动完成的;
    • 第二,检测节点故障的工作不是放在服务器上,而是分布式的;
    • 第三,可以被用作消息传递层,比如 Leader 选举事件。

  集群内数据的读写请求既可以直接发到 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。

  • 1.1)安装依赖:

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

  • 1.2)安装步骤:

    git clone https://github.com/consul/consul.git
    cd consul
    bundle install
    cp config/database.yml.example config/database.yml
    cp config/secrets.yml.example config/secrets.yml
    bin/rake db:create
    bin/rake db:migrate
    bin/rake db:dev_seed
    RAILS_ENV=test rake db:setup
    

      或 

    Installing Consul on Kubernetes 

    1、添加 HashiCorp Helm 存储库:
    $ helm repo add hashicorp https://helm.releases.hashicorp.com
    2、验证您是否有权访问 helm chart 权限 $ helm search repo hashicorp/consul NAME CHART VERSION APP VERSION DESCRIPTION hashicorp/consul 0.39.0 1.11.1 Official HashiCorp Consul Chart
    3、使用 Helm 在 Kubernetes 上安装 Consul。Helm chart 做了一切来设置推荐的 Consul-on-Kubernetes 部署。安装完成后,会形成一个 Consul 集群,选举出 leader,每个节点都会有一个运行的 Consul agent。 3.1)要在 Kubernetes 上安装最新版本的 Consul,请发出以下命令以使用 Helm 使用默认配置安装 Consul。-n 您还可以通过修改 Helm 安装的标志值来将 Consul 安装在您选择的专用命名空间上。 $ helm install consul hashicorp/consul --set global.name=consul --create-namespace --namespace consul 3.2)要在 Kubernetes 上安装特定版本的 Consul,请发出以下带有--version标志的命令,以使用 Helm 使用默认配置安装指定版本。 $ export VERSION=0.43.0 $ helm install consul hashicorp/consul --set global.name=consul --version ${VERSION} --create-namespace --namespace consul
  • 1.3)运行程序:

 

 

 

  

 

 

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有