Consul安装和使用:服务注册与发现

简介

Consul是一个开源的分布式服务发现和配置管理工具。它提供了一个分布式的、高可用的数据存储,可以用来存储键值对、配置数据、服务发现信息等。同时,Consul还提供了HTTP和DNS接口,可以用来查询服务、配置和健康状态等信息。
它具备以下特性 :

  • service discovery:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。
  • health checking:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。
  • key/value storage:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。
  • multi-datacenter:无需复杂的配置,即可支持任意数量的区域。

consult安装

下载地址

https://developer.hashicorp.com/consul/install

选择自己需要安装的版本,作者安装的是1.20.1版本,下载后,解压输入命令

./consult version

上述命令会打印consult的版本号。

consult启动

启动命令如下

nohup consul agent -server -bootstrap-expect=1 -datacenter=dc1 -node=server-1 -bind=192.168.1.100 -client=0.0.0.0 -ui

Consul的启动参数可以通过命令行参数、环境变量或配置文件来指定。以下是一些常用的启动参数:

  • -bind: 绑定到指定的IP地址,用于通信和节点识别。默认情况下,Consul会自动选择一个IP地址。
  • -datacenter: 指定数据中心的名称,用于区分多个Consul集群。
  • -node: 指定节点的名称,用于在集群中唯一识别一个节点。
  • -server: 指定节点是否为Consul集群的服务器节点,值为true或false。默认情况下,节点是客户端节点。
  • -bootstrap: 指定节点是否为集群的引导节点,值为true或false。引导节点是集群中的第一个服务器节点。

数据存储

Consul的数据存储基于Raft协议,可以确保数据的一致性和高可用性。Consul提供了一个键值存储,可以用于存储配置数据、服务发现信息等。以下是一些常用的命令:

  • consul kv put: 存储键值对。
  • consul kv get: 获取指定键的值。
  • consul kv delete: 删除指定键。
    以下是一个示例:
$ consul kv put web/config/max-connections 100
$ consul kv get web/config/max-connections
100
$ consul kv delete web/config/max-connections

服务API操作

服务注册如下api

curl -X PUT http://192.168.52.169:8500/v1/catalog/register -d '{"Datacenter": "dc1", "Node": "server-1","Address": "192.168.52.169", "Service":{"Id": "192.168.52.169:8089","Service": "SpringBoot","Tags":["dev"], "Port": 8089}}'curl -X PUT http://192.168.52.169:8500/v1/catalog/register -d '{"Datacenter": "dc1", "Node": "SpringBoot1","Address": "192.168.52.169", "Service":{"Id": "192.168.52.169:8090","Service": "SpringBoot","Tags":["dev"], "Port": 8090}}'

参数说明

  • Datacenter指定数据中心
  • Address指定服务IP
  • Service.Id指定服务唯一标识
  • Service.Service指定服务分组
  • Service.tags指定服务标签(如测试环境、预发环境等)
  • Service.Port指定服务器端口。

摘除服务,如下api

curl -X PUT http://192.168.52.169:8500/v1/catalog/deregister -d '{"Datacenter": "dc1", "Node": "SpringBoot1", "ServiceID": "192.168.52.169:8089"}'

服务发现如下api

curl http://192.168.52.169:8500/v1/catalog/service/SpringBoot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3之状态管理Vuex

Vuex作为Vue.js的官方状态管理库,在大型或复杂的前端项目中扮演着至关重要的角色。本文将从Vuex的原理、特点、应用场景等多个方面进行深入解析,并通过代码示例展示如何在Vuex中实现特定功能。 一、Vuex原理 Vuex是一个专为Vue.js应用程序开发的状态管…

34 Opencv 自定义角点检测

文章目录 cornerEigenValsAndVecscornerMinEigenVal示例 cornerEigenValsAndVecs void cornerEigenValsAndVecs(InputArray src, --单通道输入8位或浮点图像OutputArray dst, --输出图像,同源图像或CV_32FC(6)int blockSize, --邻域大小值int ape…

人工智能入门是先看西瓜书还是先看花书?

在人工智能入门时,关于先看《机器学习》(西瓜书)还是先看《深度学习》(花书)的问题,实际上取决于个人的学习目标和背景。 《机器学习》(西瓜书)由周志华教授撰写,是一本…

B 站数据库负责人赵月顺:助力海内外业务增长,百套 TiDB 的选型与运维实战

导读 B 站对 TiDB 的应用已相当广泛,被应用在了 包括视频观看、一键三连、发送弹幕、撰写评论、阅读漫画以及视频后端的存储等场景, 目前拥有近 100 套集群。 本文由 B 站数据库负责人赵月顺撰写, 详细介绍了 B 站面临业务增长选择 TiDB 的…

二九(vue2-05)、父子通信v-model、sync、ref、¥nextTick、自定义指令、具名插槽、作用域插槽、综合案例 - 商品列表

1. 进阶语法 1.1 v-model 简化代码 App.vue <template><!-- 11-src-下拉封装 --><div class"app"><!-- <BaseSelect :cityId"selectId" changeId"handleChangeId"></BaseSelect> --><!-- v-model 简化…

flask-admin+Flask-WTF 实现实现增删改查

背景&#xff1a; flask-adminflask-wtf在网上可以搜索到很多资料&#xff0c;但有价值的很少&#xff0c;或许是太简单&#xff0c;或者是很少人这么用&#xff0c;或者。。。&#xff0c;本文将作者近礼拜摸索到的一点经验分享出来&#xff0c;给自己做个记录。 材料&#…

Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门任务间的通讯-消息队列【入门四】

继续上一篇任务创建 【Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门任务间的通讯-信号量【入门三】-CSDN博客】 今天要实现消息队列进行任务的通讯 一、从上一篇信号量通讯demo拷贝一份重命名&#xff0c;还是之前的两个任务&#xff0c;重命名了。 xTaskCreatePinned…

workman服务端开发模式-应用开发-后端api推送修改二

需要修改两个地方&#xff0c;第一个是总控制里面的续token延时&#xff0c;第二个是操作日志记录 一、总控续token延时方法 在根目录下app文件夹下controller文件夹下Base.php中修改isLoginAuth方法&#xff0c;具体代码如下&#xff1a; <?php /*** 总控制* User: 龙哥…

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统&#xff0c; Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 体验地址&#xff1a;http://blog.gaoredu.com/ 今天&#xff0c;我们自豪地宣布ReactPress 1.6.0版本的正式发布&#xff0c;…

重拾设计模式--外观模式

文章目录 外观模式&#xff08;Facade Pattern&#xff09;概述定义 外观模式UML图作用 外观模式的结构C 代码示例1C代码示例2总结 外观模式&#xff08;Facade Pattern&#xff09;概述 定义 外观模式是一种结构型设计模式&#xff0c;它为子系统中的一组接口提供了一个统一…

接口测试Day03-postman断言关联

postman常用断言 注意&#xff1a;不需要手敲&#xff0c;点击自动生成 断言响应状态码 Status code&#xff1a;Code is 200 //断言响应状态码为 200 pm.test("Status code is 200", function () {pm.response.to.have.status(200); });pm: postman的实例 test() …

2024小迪安全信息收集第七课

目录 ICO图标 Django Flask Tornado 一、#JavaScript-开发框架-Vue&Node.js Vue Node.js 二、#PHP-开发框架-ThinkPHP&Laravel&Yii ThinkPHP Laravel Yii 三、#Java-框架组件-Fastjson&Shiro&Solr&Spring 52类110个主流Java组件和框架介绍…

提升专业素养的实用指南

在当今竞争激烈的职场&#xff0c;仅仅拥有专业技能已经不足以立于不败之地。持续提升自身专业素养&#xff0c;才是保持竞争力、实现职业目标的关键。那么&#xff0c;如何才能有效地提升专业素养&#xff0c;在职业道路上走得更稳、更远呢&#xff1f;以下是一些实用性建议&a…

C++ 查表 ← 数组、map、vector 等数据结构

【C 查表】 在C中&#xff0c;“查表”通常指的是使用数组或 map、vector 等数据结构来存储数据&#xff0c;并通过索引或键值进行 O(1) 时间复杂度的访问。【示例代码】 #include <iostream> #include <vector> #include <map> #include <unordered_map…

网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

tryhackme-Pre Security-Windows Fundamentals 3(Windows基础知识3)

任务1&#xff1a;Introduction&#xff08;介绍&#xff09; 我们将继续探索 Windows 操作系统。 总结前两个房间&#xff1a; 在 Windows Fundamentals 1 中&#xff0c;我们介绍了桌面、文件系统、用户帐户控制、控制面板、设置和任务管理器。在 Windows Fundamentals 2 中…

pdf转换文本:基于python的tesseract

电脑系统&#xff1a;win10专业版 不能访问需要魔法上网 安装tesseract 在GitHub上下载:tesseract下载地址 找到自己电脑版本下载 双击安装&#xff0c;一路next&#xff0c;除了这一步 第三个加号点开&#xff0c;把带Chinese的都勾选 安装完成后配置环境&#xff0c;Win …

国产云厂商数据库产品--思维导图

为了对比国产云厂商数据库产品&#xff0c;我查阅了各云厂商的官方介绍&#xff0c;墨天轮等平台的部分数据和文章&#xff0c;整理出了简易的思维导图。 会去整理&#xff0c;也是因为有点懵&#xff0c;比如说阿里的PolarDB数据库&#xff0c;看起来就是一个数据库&#xff…

MongoDB(下)

MongoDB 索引 MongoDB 索引有什么用? 和关系型数据库类似&#xff0c;MongoDB 中也有索引。索引的目的主要是用来提高查询效率&#xff0c;如果没有索引的话&#xff0c;MongoDB 必须执行 集合扫描 &#xff0c;即扫描集合中的每个文档&#xff0c;以选择与查询语句匹配的文…

Unity 3D饼状图效果

一. 效果展示 二.基础类 using System.Collections; using System.Collections.Generic; using UnityEngine;public class DrawCylinder : MonoBehaviour {// 网格渲染器MeshRenderer meshRenderer;// 网格过滤器MeshFilter meshFilter;// 用来存放顶点数据List<Vector3>…