草庐IT

《consul 简易上手指南》

edisonfish 2023-03-28 原文

consul 是一个用来做服务发现的框架,具有分布式、高可用以及可横向扩展的特性

 

什么是服务发现?为什么要实现服务发现?

举个常见的例子:

 

假设有一台 client 想要实现不同的业务,就需要调用接口去访问后端的server

 

那这样 client 就需要知道后端 server 的网络配置,通常是将 server 的网络配置写到 client 配置文件中

 

 

 

这样就会出现几个问题:

  1. 后面如果新增后端 server,就需要将新配置写进 client 本地上,导致后期配置文件越来越多,不便于维护

  2. 一旦后端某一服务的网络配置发生变化,需要修改 client 的配置

  3. 一旦后端某一服务出现故障,需要人工剔除配置项

 

为此,我们需要引入一个中间件来给 client 和 server 之间解耦,client 不需要关心后端 server 的配置,当需要实现某一业务的时候,只需要去服务发现中间件上面去获取到对应 server 的网络配置即可

 

 

 

 

初识 consul

Consul 是 HashiCorp 公司推出的开源工具,由 go 语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,非常轻量,用于实现分布式系统的服务发现与配置的解决方案

 

常用的服务发现框架有:zookeeper、 etcd、Consul

 

consul 的一些特性:

  • 服务发现

    • Consul 提供了通过 DNS 或者 HTTP 接口的方式来注册服务和发现服务

    • 一些外部的服务通过 Consul 找到它所依赖的服务

  • 健康检查

    • Consul 的 Client 可以提供任意数量的健康检查,既可以与业务相关联(是否返回200 状态码)也可以与本地节点相关联(cpu 使用率等)

  • KV 存储

    • Consul 提供了简单的http接口,可以实现动态配置、功能标记、领袖选举等功能

  • 安全服务通信

    • 可以为服务生成和分发 TLS 证书,以便建立 TLS 连接

  • 多数据中心

    • consul 集群由多个 server 和 client 组成,所有的服务都可以注册到这些节点上

 

简单部署

consul 安装

 

 

下载后可以发现 consul 就是一个可执行的二进制文件

 

为了简单起见,我们现在将以开发模式启动 Consul 代理。这种模式对于快速简单地启动单节点 Consul 环境非常有用

 

我们现在单机简单部署一下consul

 

 

 

#开发模式启动consul agnet
consul agent -dev -client=0.0.0.0

 

执行上面这条命令之后,consul 会被启动起来,并且占用终端

 

加上 -client=0.0.0.0 参数是让我们能够通过本地浏览器来访问 consul 提供的 http 接口(即 consul 能够对外提供服务)

 

 

 

 注册服务

 

接下来我们将简单注册一个服务并在 web 界面上实现健康检查

 

这是官方文档给出的一个注册服务的配置示例:

 

 

编写一个服务定义配置文件,假设有一个名为 web 的服务在端口 80 上运行

 

 

 

ctrl+c 终止掉 consul 服务,重启 consul

 

 

  • 查询服务

一旦 consul 启动,我们可以通过 HTTP API 方式来查询

 

即使用  /v1/catalog/service/{name}  查询

 

 还可以,通过浏览器访问 consul web界面去查看

 

 

 

 

可以看到 web 服务已经注册上去了

 

自带健康检查功能

 

 

k-v 操作

除了提供服务发现和健康检查之外,consul 还支持 kv 存储

 

通过 kv 存储,可以实现动态配置保存、修改等功能

 

举个例子

 

有一台 server 提供 web 服务,它将网络配置信息以键值对形式保存到 consul 上

 

当 client 需要去调用这个 web 服务的时候,就去 consul 上面找到相关的 key 然后获取对应的 value

 

而当 server 的网络配置发生变化时,可以在 consul 上面直接修改 value

 

 

 

如上图所示,key 为 webserver,value 为 ip 和 port,以 YAML 的形式保存

 

consul 上面的 value 有多种形式(JSON、HCL、XML、YAML)

 

一般我们对 kv 的操作有两种方式:

  1. 通过命令行来操作(CLI API)

  2. 通过 consul 提供的 web 界面(HTTP API)来操作

 

使用 CLI API 操作 key/value

 

consul 命令操作 kv 文档:

https://developer.hashicorp.com/consul/commands/kv

 

#语法:
consul kv put

 

我们想新增一个叫做 webserver 的 key,它的 value 如下:

 

ip=1.1.1.1
port=80

 

查看发现没有 webserver 这个 key

 

 

 我们添加一下

 

 

 

#语法
consul kv delete

 

假设我们提供 web 服务的 server 发生故障了,需要在 consul 上面删掉它的配置

 

 

 

 

 

 

假设你某一个 key 对应有多个value,如果修改 value 的话是全部修改的,不能说修改 value 中的某一个值

 

举个例子,我想修改 webserver 中的 port,将其改成100

 

 

我只能全部修改,不能单独改 port 字段

 

 

有一种比较好的方法,就是使用 import 和 export 参数

第一步:我们先将当前的 kv 导出到本地来做备份

 

 

 第二步:将新配置文件 import 上去

 

 

 

 

#语法
consul kv get


查看指定 key

 

 

 

 查看指定 key 的详细信息

 

 

 

递归列出所有的 key 以及对应的 value

 

 

 


递归列出所有的 key

 

 

 

 

使用HTTP API操作key/value

使用浏览器访问 ip:8500 即可进入 consul web 界面

 

然后鼠标点点点就行了,本文不过多介绍

 

 

 

 

 

有关《consul 简易上手指南》的更多相关文章

  1. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  2. Ruby 和指南针路径与 yeoman 项目 - 2

    我安装了ruby​​、yeoman,当我运行我的项目时,出现了这个错误:Warning:Running"compass:dist"(compass)taskWarning:YouneedtohaveRubyandCompassinstalledthistasktowork.Moreinfo:https://github.com/gruUse--forcetocontinue.Use--forcetocontinue.我有进入可变session目标的路径,但它不起作用。谁能帮帮我? 最佳答案 我必须运行这个:geminstallcom

  3. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  4. ruby - Ruby gems 的问题(损坏?)试图让指南针在 npm 中工作 - 2

    我不是Ruby专家,但想弄清楚发生了什么,因为我试图让指南针在节点应用程序中工作,但我的Ruby似乎坏了。打字:ruby--version让我:ruby2.1.1p76(2014-02-24revision45161)[x86_64-darwin13.0]我安装了Homebrew,之前遇到过Ruby版本的问题,但它似乎已安装并且可以正常工作。但是,当我使用gem输入请求时,出现此错误:$gem-hErrorloadingRubyGemsplugin"/Users/user_dir/.rvm/gems/ruby-2.1.1@global/gems/executable-hooks-1.3

  5. ruby - 使用指南针安装 bootstrap sass - 2

    我正在尝试安装bootstrap-sass并收到以下错误。我试过旧版本的sass,但bundler一直在安装3.3.0。WARN:UnresolvedspecsduringGem::Specification.reset:sass(~>3.2)WARN:Clearingoutunresolvedspecs.Pleasereportabugifthiscausesproblems./Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches/browser_support.r

  6. JMockit 使用指南 - 2

    目录配置模拟模拟类型与实例期望录制-回放-验证指定调用计数验证指定自定义结果验证调用参数联级模拟部分模拟模拟未实现的类其他伪装伪装方法及类伪装未实现类本文主要内容如何在SpringBoot中配置使用JMockit如何mock/faking依赖的对象如何对行为mock如何VerificationJMockit之所以强大,是因其使用了javaagent对类的字节码做了修改,在JVM的所有mock工具中,它是功能最强大的。同时注解又是最少的。配置在SpringBoot项目中使用JMockit隔离代码做单元测试,需要做以下配置引入JMockit依赖。dependencies>dependency>gr

  7. ruby-on-rails - 是否有针对经验丰富的 Ruby 开发人员的 Rails 指南? - 2

    几年前,我从一些Rails初学者指南开始学习Ruby/Rails。那时我已经学习了Rails的基础知识,例如模型和路由的一些约定优于配置,以及如何使用helpers等。但是,我并没有坚持多久,因为此后不久我发现了Sinatra,并决定我个人更喜欢它。不过,我最终真的爱上了Ruby,从那以后我写了很多Ruby,几乎没有一个是针对任何Rails项目的。然而,事实证明大部分可用的Ruby工作都是针对Rails应用程序的。所以我现在想再尝试一下Rails。现在,该引用资料很棒并且有很多有用的信息,但我只查看了我需要的特定内容的引用资料,而没有记住。但我不太可能在引用资料中看到像script/c

  8. ruby-on-rails - 关于将实例变量传递给 redirect_to 方法的困惑。正如 Rails 指南中所见 - 2

    我正在研究ruby​​onrails指南,即http://guides.rubyonrails.org/layouts_and_rendering.html上的“布局和渲染”主题我对将实例变量传递给redirect_to方法感到困惑。这怎么可能?我认为redirect_to与重定向到另一个网页或url相关。在指南中给出的示例中,它说了以下内容:2.2.2RenderinganAction’sViewIfyouwanttorendertheviewthatcorrespondstoadifferentactionwithinthesametemplate,youcanuserenderw

  9. 《ChatGPT实用指南》(精编版)重磅发布,全网免费分享,快上车,别掉队 - 2

    文/高扬(微信公众号:量子论)据上次3月18号发布的V1.8版,已经过去十天,这期间AI领域发生了很多重大变化。因此,我们对《ChatGPT实用指南》进行了重大改版,增加了大量实用的操作和详细的讲解,保证小白可以轻松上手,快速驾驭ChatGPT。V2.0版本亮点:1、结构更合理。分为基础篇、进阶篇、高级篇,从易到难,由浅入深,符合学习规律。2、内容更充实。扩充了27页的内容,尽量看图说话,将操作步骤一步步地展示出来。3、排版更美观。按图书出版的规范制作,便于知识点查阅。后记:2022年11月底,我们在HackerNews上看到了关于ChatGPT的新闻报道后,开始意识到,人工智能的春天来了,这

  10. U3D游戏开发工程师正确入行姿势指南 - 2

    2021年,游戏圈上演了一场精彩绝伦的抢人大战。在上海游戏圈,年薪百万的人越来越多了。据多名HR估算,在上海,过去一年TA、引擎、美术等稀缺岗位拟的薪资涨幅大概在20%-30%左右。某位圈内知名资深游戏猎头对此发出感叹:“50K的数值策划、角色原画;70K的技术美术;80K的技术总监...他们的年薪总包都接近百万,就连应届生入行的薪资也水涨船高,这要是放在以往都是不敢想象的”。以往含年薪、期权等的年总包收入上百万元,起码得是总监级别。如今工作五六年的人从广深跳到上海游戏公司,年薪能从50-70万跃上100万元,拿百万年薪的游戏从业者越来越多了上海游戏圈近年发展迅速,既有颇具发展潜力的中生代F4

随机推荐