首页 > 其他分享 >consul安装及使用

consul安装及使用

时间:2022-10-08 12:03:06浏览次数:80  
标签:data consul 192.168 0.211 agent 使用 安装 Consul

Consul 是 HashiCorp 公司的一个用于实现分布式系统的服务发现与配置工具。Consul内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案。由于出现得晚些,Consul具有功能完善、部署简单、使用方便等特点。

安装consul:

Consul由Go语言开发,因此也继承了Go语言跨平台,易安装的特点。可以在其官网​​https://www.consul.io/downloads.html​​下载,各个平台的安装包都提供了。基本解压就可以使用。

这里以Windows平台为例,我这里下载的是64位版本,解压后就一个exe程序,直接以如下命令启动:

1

consul agent-dev

这里有两个参数:

启动后,可以看到如下提示信息:

1

2

3

4

5

6

7

8

9

10

11

> consul agent –dev

==> Starting Consul agent...

==> Consul agent running!

Version: 'v1.4.0'

Node ID: 'e59c9885-c8df-608a-f870-dab9078f5c0d'

Node name: 'Develop-PC1'

Datacenter: 'dc1' (Segment: '<all>')

Server: true (Bootstrap: false)

Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: 8502, DNS: 8600)

Cluster Addr: 127.0.0.1 (LAN: 8301, WAN: 8302)

Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false

Web界面:

Consul自带一个界面美观,功能强大的,开箱即用的Web界面。通过该界面我们可以查看所有的服务以及节点,查看所有的健康监测及其当前的状态,以及读取和设置键/值数据。

该界面被映射到/ui上,和HTTP API使用相同的端口。默认就是http://localhost:8500/ui。


如果你要在其它机器上访问该Web界面,可以加上-client参数指定绑定的IP。

1

consul agent -dev -bind=192.168.2.210 -client 0.0.0.0

静态配置服务

consul支持配置文件的方式静态配置服务,首先我们定义一个json格式的配置文件:

1

2

3

4

5

6

7

8

9

{

    "service": {

        "name": "web",

        "tags": [

            "rails"

        ],

        "port": 80

    }

}

配置文件主要指定的是服务名称,地址,端口等信息。

然后用-config-dir指定配置文件目录启动consul,consul会自动加载该目录下的所有json文件,每个文件作为一个静态配置服务。

1

> consul agent -dev -bind=192.168.0.211 -config-dir ./services


1

2

3

4

5

6

7

8

9

==> Starting Consul agent...

==> Consul agent running!

...

2018/12/05 11:43:23 [DEBUG] agent: Node info in sync

2018/12/05 11:43:23 [DEBUG] agent: Service "web" in sync

2018/12/05 11:43:23 [DEBUG] agent: Node info in sync

2018/12/05 11:43:25 [DEBUG] agent: Skipping remote check "serfHealth" since it is managed automatically

2018/12/05 11:43:25 [DEBUG] agent: Service "web" in sync

2018/12/05 11:43:25 [DEBUG] agent: Node info in sync

从输出信息中可以看到名为"web"的服务已经同步进来。


也可以在web界面上看到该服务:


动态注册服务

除了静态配置外,使用的最多的还是服务主动注册的方案。consul提供了一系列rest接口使得我们可以方便的注册自己的服务。

创建服务

· 

接口地址:http://localhost:8500/v1/agent/service/register

· 

· 

操作方式:PUT

· 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

{

    "ID": "redis1",

    "Name": "redis",

    "Tags": [

        "primary",

        "v1"

    ],

    "Address": "127.0.0.1",

    "Port": 8000,

    "EnableTagOverride": false,

    "Check": {

        "DeregisterCriticalServiceAfter": "90m",

        "Script": "/usr/local/bin/check_redis.py",

        "HTTP": "http://localhost:5000/health",

        "Interval": "10s"

    }

}


集群搭建

consul的集群拓扑架构如下图所示:


它主要具有如下两种状态的节点:

Server: 有完整功能的代理,这些功能包括参与Raft选举,维护集群状态,响应RPC查询,与其他数据中心交互WAN gossip和转发查询给leader或者远程数据中心。

Client:一个Client是一个转发所有RPC到server的代理。这个client是相对无状态的。client唯一执行的后台活动是加入LAN gossip池。这有一个最低的资源开销并且仅消耗少量的网络带宽。

consul的集群搭建本身涉及的内容比较多,具体可参看文章​​Consul 集群部署​​。本文这里就介绍一个最简单的拓扑情况:1server + nclient的场景。

启动Server:

启动Server的指令一般如下:

1

consul agent -data-dir=./data -node=node0 -bind=192.168.0.211 -datacenter=dc1 -ui -client=0.0.0.0 -server -bootstrap-expect 1

这里用到了不少参数,这里就简单的介绍下:

·-data-dir=./data 必须,指定数据文件存储路径

· -node=node0 必须,指定了节点的名称,该名称在整个网络中必须唯一。

· -bind=192.168.0.211 多Ip地址机器上必须,指定了绑定的Ip地址

·-datacenter=dc1 可选,指定了所属的数据中心,默认为dc1

·-ui 可选,是否启用web服务器

·-client=0.0.0.0 可选,指定了可以访问的客户端范围,默认是127.0.0.1

· -server 必须,表明了该节点是server节点

· -bootstrap-expect 1 可选

· 

consul安装及使用_配置文件

有了上述知识后,在最简单的场景下,一般可以简化为如下形式:

1

consul agent -data-dir ./data -node=node0 -bind=192.168.0.211 -ui -server

启动Client:

启动Client的指令一般如下:

1

consul agent -data-dir=./data -node=node1 -bind=192.168.0.210 -datacenter=dc1 -ui -client=0.0.0.0 -join 192.168.0.211

同样,基于前面的介绍,我们也可以把启动客户端指令简化如下:

1

consul agent -data-dir=./data -node=node1 -bind=192.168.0.210 -ui -join 192.168.0.211

相比启动Server的指令,少了一个-server,表明它是一个客户端agent,同是,多了一个-join 192.168.0.211,表明了它需要连接到那个server。这个参数也可以不配置,通过命令行consul join 192.168.0.211手动加入。

启动了client后,就可以通过consul members指令查看成员了:

1

2

3

4

> consul members

Node Address Status Type Build Protocol DC Segment

node0 192.168.0.211:8301 alive server 1.4.0 2 dc1 <all>

node1 192.168.0.210:8301 alive client 1.4.0 2 dc1 <default>

也可以通过Http接口查看:

​http://localhost:8500/v1/catalog/nodes​

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

[

    {

        "ID": "4314607d-629c-24a0-9e6c-d787efebe8c9",

        "Node": "node0",

        "Address": "192.168.0.211",

        "Datacenter": "dc1",

        "TaggedAddresses": {

            "lan": "192.168.0.211",

            "wan": "192.168.0.211"

        },

        "Meta": {

            "consul-network-segment": ""

        },

        "CreateIndex": 5,

        "ModifyIndex": 6

    },

    {

        "ID": "0a59426a-1723-6389-8681-0a16b54965e4",

        "Node": "node1",

        "Address": "192.168.0.210",

        "Datacenter": "dc1",

        "TaggedAddresses": {

            "lan": "192.168.0.210",

            "wan": "192.168.0.210"

        },

        "Meta": {

            "consul-network-segment": ""

        },

        "CreateIndex": 456,

        "ModifyIndex": 457

    }

]

同样,也可以在web界面查看:



标签:data,consul,192.168,0.211,agent,使用,安装,Consul
From: https://blog.51cto.com/u_15135810/5737141

相关文章

  • 什么时候使用websocket(即时通讯)
    用于多个用户相互交流用于展示服务器端经常变动的数据websocket和http的区别http只能是客户端向服务器发出请求,服务器返回查询结果。HTTP协议做不到服务器主动向客户......
  • Mastercam9.1使用技巧及常见问题
    mastercam9.1中文版使用技巧mastercam9.1快捷键Alt+2设置系统颜色F2缩小Alt+3设置系统图层F3重画Alt+4设置限定图层F4分析Alt+5......
  • Java--匿名内部类--使用场景/实例
    原文网址:Java--匿名内部类--使用场景/实例_IT利刃出鞘的博客-CSDN博客简介    本文用示例介绍Java中匿名内部类的一些使用场景。    这些场景包括:多......
  • 关于Object.keys()和Object.values()的使用
    关于Object.keys()和Object.values()的使用1.关于Object.keys()1)处理对象,返回可枚举的所有可枚举属性的字符串数组letperson={name:'张三',age:25,address:'深圳'......
  • vCenter 6.7 使用Grafana监控失败的处理
    背景国庆处理的vCenter监控.老的vCenter6.0的平台很正常.但是新的vCenter6.7就经常出现断连的情况.花费了快一个多小时才搞定,这里记录一下.问题现象vCenter......
  • ABAP 选择屏幕内的类型以及使用
    选择屏幕组件主要记录了ABAP编程中选择屏幕常用的组件选择框范围选择框radio单选check选择单行展现配合radio和check使用较多下拉框自定义下拉框按钮文件框文......
  • Flutter(四):Flutter 语言 Dart基础使用
    一、变量和常量变量vara=1;varstr='abc';常量constPI=3.14;不可变对象finalPI=3.14;finalTIME=newDateTime.now()二、流程控制语句if(year......
  • formData的使用
    原文链接:https://blog.csdn.net/weixin_46058921/article/details/122387516一、简介:   FormData接口提供了一种表示表单数据的键值对key/value的构造方式,如果要......
  • vue-cli脚手架的安装
    vue-cli提供一个官方命令行工具,可用于快速搭建大型单页应用。现如今,随着vue.js越来越火爆,更多的项目都用到vue进行开发,在实际的开发项目中,如何搭建开发脚手架呢,今天我分享......
  • xm-select简单使用一例
    HTML<divid="admin_ids"class="xm-select-demo"></div><scriptsrc="/Public/js/xm-select.js"></script><script> varadmin_ids=xmSelect.render({ el:'#adm......