首页 > 其他分享 >consul学习笔记

consul学习笔记

时间:2023-02-03 09:56:23浏览次数:88  
标签:服务 target service consul xxx 笔记 学习 prometheus

consul

默认的服务端口是8500
consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,只有一个可运行的二进制的包。

背景

Prometheus用到它服务发现的功能,以往prometheus.yml配置一台服务的node-exporter,需要配置一段配置,直连客户端的服务,如图一,如果服务的数量变大,整个prometheus.yml配置就会变得很复杂,大的配置文件不方便做管理维护。这个时候把consul作为注册中心,作为所有客户端的汇聚点,prometheus直接调用consul的接口即可管理所有客户端。

原理

过程:服务A-N把当前自己的网络位置注册到服务发现模块(这里注册的意思就是告诉),服务发现就以K-V的方式记录下,K一般是服务名,V就是IP:PORT。服务发现模块定时的轮询查看这些服务能不能访问的了(这就是健康检查)。客户端在调用服务A-N的时候,就跑去服务发现模块问下它们的网络位置,然后再调用它们的服务。Prometheus完全不需要记录这些服务的网络位置,客户端和服务端完全解耦。

安装

安装包:consul_1.8.6_linux_amd64.zip
运行条件:go环境

安装go:
yum install -y epel-release
yum install -y golang
部署:解压重命名consul_1.8.6_linux_amd64.zip文件夹后,配置consul.service,就能用。


vim /usr/lib/systemd/system/consul.service

[Unit]
Description=Consul
After=network-online.target

[Service]
Type=simple
User=root
Group=root
Restart=on-failure
ExecStart=/usr/local/consul/consul agent \
        -ui \
        -server \
        -bootstrap-expect 1 \
        -data-dir /usr/local/consul/data \
        -node=s1 \
        -bind=XXX.XXX.XXX.XXX  \
        -rejoin \
        -config-dir=/etc/consul.d/ \
        -client 0.0.0.0
[Install]
WantedBy=multi-user.target

加入prometheus

vim /etc/prometheus/prometheus.yml


  - job_name: 'consul'
    consul_sd_configs:
      - server: 'xxx.xxx.xxx.xxx:8500' //{consul-ip地址}
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_service]
        regex: "consul"
        action: drop
      - source_labels: [__meta_consul_service]
        target_label: job
      - source_labels: [__meta_consul_service_id]
        target_label: instance
      - source_labels: [__meta_consul_tags]
        separator: ;
        regex: ',(.*),.*'
        target_label: tags
        replacement: ${1}
        action: replace

注册节点:

curl -X PUT -d '{"id": "prod9-nginx1-xxx.xxx.xxx.xxx","name": "node-exporter","address": "xxx.xxx.xxx.xxx","port": 9100,"tags": ["prod-nginx"],"checks": [{"http": "http://xxx.xxx.xxx.xxx:9100/metrics", "interval": "5s"}]}' http://{consul-ip}:8500/v1/agent/service/register
id 是后续用于删除节点用的,是唯一表示
Name 这里用于表示收集node-exporter这个服务的信息
Address 服务器ip
Port 服务端口
Tags 该服务器标签,用于grafana页面展现的分组

删除节点:

curl --request PUT http://{consul-ip}:8500/v1/agent/service/deregister/prod13-nginx2-59.197.185.170

标签:服务,target,service,consul,xxx,笔记,学习,prometheus
From: https://www.cnblogs.com/haiyoyo/p/17088123.html

相关文章

  • 2PC---两阶段 分布事务2 笔记20230203
        ......
  • Excel函数学习
    1.单条件求和=SUMIF(条件区域,求和条件,实际求和区域)2.多条件求和=SUMIFS(需要求和区域,条件区域1,求和条件1,条件区域2,求和条件2,......)3.单元格所在行位置=ROW(单......
  • nnUNet学习笔记(二):网络架构代码-1
    逐段解读文件:nnUNet/nnunet/network_architecture/neural_network.pyimportnumpyasnpfrombatchgenerators.augmentations.utilsimportpad_nd_imagefromnnunet.ut......
  • git命令的学习和基本使用
    初始化gitinit(your_project)配置--local只对当前仓库有效--global对当前用户所有仓库有效--system对系统登录的所有用户有效gitconfig--globaluser.name......
  • Shader入门精要笔记 - CH7.3_渐变图控制漫反射
    左边是使用了前面提到的SpecularPerPixel,中间是没加渐变图时,右边是加了渐变图 高光+渐变图漫反射(RampTex)Shader"My/Tex/RampTexture"{Properties{......
  • c++学习2 基础关键词
    三volatile强制访问内存在一个变量的频繁使用中,系统为了提高效率,会自动将内存里面的数据放入CPU里的寄存器里。但在某些特殊场景下,放入寄存器这个操作反倒会导致CPU无法......
  • Shader入门精要笔记 - CH7.2_法线贴图
    左侧为没用法线贴图,就视觉上没有凹凸感  法线贴图+高光+贴图漫反射(MainTex)Shader"My/Tex/NormalMapInTagentSpace"{Properties{_MainTex("......
  • 机器学习基本概念
    机器学习基本概念1.基本定义机器学习:是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。2.机器学习的工作流程1.获取数据2.数据......
  • C语言学习: 快速排序(递归方式)
    1#include<stdio.h>2#include"io_utils.h"3#include<stdlib.h>4#include<time.h>56#definePLAYER_COUNT5078voidSwapElements(intarray[......
  • 《RPC实战与核心原理》学习笔记Day16
    23|如何在没有接口的情况下进行RPC调用?我们什么情况下需要在没有接口时进行RPC调用?列举2个典型场景:我们搭建一个测试平台,允许各个业务方在测试凭条上通过输入接口、......