consul学习笔记(代码片段)

haiyoyo haiyoyo     2023-02-03     336

关键词:

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

springcloud第二季之zookeeper,consul和ribbon等学习笔记(代码片段)

...进zookeeper29.临时还是持久节点30.订单服务注册进zookeeper31.Consul简介32.安装并运行Consul33.服务提供者注册进Consul34.服务消费者注册进Consul35.三个注册中心异同点36.Ribbon入门介绍37.Ribbon的负载均衡和Rest调用38.Ribbon默认自带的负载规... 查看详情

consul学习笔记(代码片段)

consul默认的服务端口是8500consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKee... 查看详情

springcloud之学习笔记(feign+consul)(代码片段)

...f09;。SpringCloud中文文档:https://www.springcloud.cc/Feign+consulFeign是一个声明式的Web服务客户端,能够在类接口上添加注释,成为一个RESTAPI客户端。简单来说就是用来调用其他服务的。consul是google开源的一个使用go语言开... 查看详情

golang学习笔记(代码片段)

...上图表示了go的应用领域,包括容器如k8s,服务发现如consul,kv存储如etcd,中间件如codis,存储如minio,分布式数据库tidb,此外还有devops、区块链、人工智能、web框架、微服务等等领域的应用。二、Go语言概述2.1、... 查看详情

docker-容器部署consul集群(代码片段)

原文:Docker-容器部署Consul集群目录说明简介了解ConsulConsul使用场景Consul优势Consul中的概念安装准备Consul镜像安装单个Consul组装集群Consul总结引用和附件说明本文主要介绍怎么使用Docker在Linux环境部署Consul集群,如果你对Docker不了... 查看详情

prometheus学习笔记

...​​​​向量匹配:3​​​​​service_discovery(文件|DNS|consule)6​​​​​重新打标签7​​​​​对target重新打标:8​​​​​对抓取到的metric重新打标:11​​​​​基于文件的服务发现12​​​​​基于DNS的服务发现13​​... 查看详情

基于docker的consul服务发现集群搭建(代码片段)

原文:基于Docker的Consul服务发现集群搭建在去年的.NETCore微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章。本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也... 查看详情

.net6使用consul实现服务注册与发现(代码片段)

...微服务项目,大多数都上了k8s,基本上都看不到Consul的身影,所以在工作之余折腾了下Consul,作为个人来讲还是得学习下,所以也就顺便通过文章来记录下学习过程。还有就是现在基本上只要提到微服务,... 查看详情

springboot学习笔记——thymeleaf(代码片段)

前置知识:SpringBoot学习笔记——SpringBoot简介与HelloWordSpringBoot学习笔记——源码初步解析SpringBoot学习笔记——配置文件yaml学习SpringBoot学习笔记——JSR303数据校验与多环境切换SpringBoot学习笔记——自动配置原理SpringBoot学习笔记... 查看详情

markdowntensorflow学习笔记(代码片段)

查看详情

markdown学习笔记(代码片段)

查看详情

markdownsympy学习笔记(代码片段)

查看详情

consul集群安装(代码片段)

生产环境Consul安装升级Consul目录规划Consul安装目录/usr/local/consul-VERSION(VERSION为版本号),安装完成后软链接到/usr/local/consul。Consul二进制程序目录/usr/local/consul/binConsul配置文件目录为/usr/local/consul/consul.dConsul数据目录为/usr/local/consu 查看详情

markdown熊猫学习笔记(代码片段)

查看详情

markdown机器学习笔记(代码片段)

查看详情

ceressolverdocument学习笔记(代码片段)

CeresSolverDocument学习笔记CeresSolverDocument学习笔记1.基本概念2.基本方法2.1CostFunction2.2AutoDiffCostFunction2.3NumericDiffCostFuntion2.4LossFunction2.5LocalParameterization2.6Problem2.7Solver2.8CovarianceCeresSol 查看详情

学习笔记mybatis学习笔记(代码片段)

本文是动力节点MyBatis教程的学习笔记。第一章1.三层架构(1)三层的功能表示层(UserInterfaceLayer):接受用户数据,显示请求的处理结果,包括jsp、html、servlet等。对应controller包;业务逻辑层(BusinessLogic... 查看详情

学习笔记mybatis学习笔记(代码片段)

本文是动力节点MyBatis教程的学习笔记。第一章1.三层架构(1)三层的功能表示层(UserInterfaceLayer):接受用户数据,显示请求的处理结果,包括jsp、html、servlet等。对应controller包;业务逻辑层(BusinessLogic... 查看详情