文档章节

002-consul使用技巧

伟大源于勇敢的开始
 伟大源于勇敢的开始
发布于 2019/12/14 19:10
字数 1065
阅读 10
收藏 0

consul 使用技巧

查看所有注册的服务

consul catalog services 

配置consul.json

{
 "server": true,
 "datacenter": "testgame",
 "client_addr": "0.0.0.0",
 "advertise_addr":"192.168.83.70",
 "bootstrap_expect": 1,
 "enable_syslog": true,
 "enable_script_checks": true,
 "data_dir": "/usr/local/consul/data",
 "node_name": "consul01",
 "ui":true,
 "recursors" : ["8.8.8.8"],
 "ports" : {
   "dns" : 53,
   "http": 8500,
   "server": 8300
 }
}

启动

/usr/local/consul/consul agent --config-dir=/usr/local/consul/conf/consul.json -ui

提示:如果想添加服务,则修改启动命令,并在conf/目录下添加json配置文件

添加json文件
echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' >/usr/local/consul/conf/web.json
启动
/usr/local/consul/consul agent --config-dir=/usr/local/consul/conf/ -ui
查看服务
[root@70 ~]#  consul catalog services
consul
web
通过dns查询
dig @127.0.0.1 -p 8600 web.service.consul
另一种查询方式
curl -s 127.0.0.1:8500/v1/catalog/service/web |python -m json.tool

健康检查

可以对本机的服务的特定端口进行检查,也可以对其他机器的端口进行检查

[root@70 conf]# cat 80.json 
{"service": {
    "name": "Faceid",
    "tags": ["extract", "verify", "compare", "idcard"],
    "address": "192.168.83.80",
    "port": 80,
    "check": {
        "id": "api",
           "name": "HTTP API on port 80",
        "http": "http://192.168.83.80:80",
        "interval": "10s",
        "timeout": "1s"
        }
   }
}
[root@70 conf]# cat health.json 
{"service": {
    "name": "checkfor8500",
    "tags": ["extract", "verify", "compare", "idcard"],
    "address": "192.168.83.70",
    "port": 8500,
    "check": {
        "id": "api",
           "name": "HTTP API on port 8500",
        "http": "http://localhost:8500",
        "interval": "10s",
        "timeout": "1s"
        }
   }
}
[root@70 conf]# cat web.json 
{"service": {"name": "web", "tags": ["rails"], "port": 80}}

consul中systemd

 [Unit]
Description=consul-agent
After=network-online.target

[Service]
User=root
Group=root
ExecStart=/bin/sh -c '/usr/local/consul/consul agent --config-dir=/usr/local/consul/conf/consul.json -ui'
Restart=on-failure
KillSignal=SIGINT

[Install]
WantedBy=multi-user.target

K/V

Consul提供了一个易用的键/值存储.这可以用来保持动态配置,协助服务协调,领袖选举,做开发者可以想到的任何事情 可以手动在页面进行添加k/v 可以请求

[root@70 conf]# curl -v http://localhost:8500/v1/kv/?recurse |python -m json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* About to connect() to localhost port 8500 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 8500 (#0)
> GET /v1/kv/?recurse HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:8500
> Accept: */*
> 
< HTTP/1.1 200 OK
< Content-Type: application/json
< Vary: Accept-Encoding
< X-Consul-Index: 405
< X-Consul-Knownleader: true
< X-Consul-Lastcontact: 0
< Date: Sat, 14 Dec 2019 10:56:28 GMT
< Content-Length: 237
< 
{ [data not shown]
100   237  100   237    0     0  39751      0 --:--:-- --:--:-- --:--:-- 47400
* Connection #0 to host localhost left intact
[
    {
        "CreateIndex": 405,
        "Flags": 0,
        "Key": "50",
        "LockIndex": 0,
        "ModifyIndex": 405,
        "Value": "cHl0aG9uCm15c3FsIDEyMzQ1NgpodHRwczovL3llYXN5LmdpdGJvb2tzLmlvL2RvY2tlcl9wcmFjdGljZS9yZXBvc2l0b3J5L3JlZ2lzdHJ5Lmh0bWwKaGF2YSBhcG9sbG8gZm9sZGVyIApkb2NrZXI="
    }
]

上传k/v

curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key1
curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key2?flags=42
curl -X PUT -d 'test'  http://localhost:8500/v1/kv/web/sub/key3

查看结果

[root@70 conf]# curl -s http://localhost:8500/v1/kv/web/?recurse | python -m json.tool
[
    {
        "CreateIndex": 952,
        "Flags": 0,
        "Key": "web/key1",
        "LockIndex": 0,
        "ModifyIndex": 952,
        "Value": "dGVzdA=="
    },
    {
        "CreateIndex": 953,
        "Flags": 42,
        "Key": "web/key2",
        "LockIndex": 0,
        "ModifyIndex": 953,
        "Value": "dGVzdA=="
    },
    {
        "CreateIndex": 954,
        "Flags": 0,
        "Key": "web/sub/key3",
        "LockIndex": 0,
        "ModifyIndex": 954,
        "Value": "dGVzdA=="
    }
]
获取单个key
curl -s http://localhost:8500/v1/kv/web/key1 | python -m json.tool

删除key 删除key也很简单.通过DELETE动作来完成.我们可以通过指定完整路径来删除一个单独的key.或者我们可以使用?recurse递归的删除主路径下所有key

curl -X DELETE http://localhost:8500/v1/kv/web/sub?recurse

可以通过发送相同的URL并提供不同的消息体的PUT请求去修改一个Key.另外,Consul提供一个检查并设置的操作,实现原子的Key修改.通过?cas=参数加上GET中最近的ModifyIndex来达到. 例如我们想修改 “web/key1”:

curl -X PUT -d 'newval' http://localhost:8500/v1/kv/web/key1?cas=502660
true
curl -X PUT -d 'newval' http://localhost:8500/v1/kv/web/key1?cas=502660
false

在这种情况下,第一次CAS 更新成功因为ModifyIndex是502660.而第二次失败是因为ModifyIndex在第一次更新后已经不是502660了 我们也可以使用ModifyIndex来等待key值的改变.例如我们想等待key2被修改:

curl "http://localhost:8500/v1/kv/web/key2"
[{"LockIndex":0,"Key":"web/key2","Flags":42,"Value":"dGVzdA==","CreateIndex":502663,"ModifyIndex":502663}]
curl "http://localhost:8500/v1/kv/web/key2?index=502663&wait=5s"
[{"LockIndex":0,"Key":"web/key2","Flags":42,"Value":"dGVzdA==","CreateIndex":502663,"ModifyIndex":502663}]

通过提供 ?index=,我们请求等待key值有一个比502663更大的ModifyIndex.虽然?wait=5s参数限制了这个请求最多5秒,否则返回当前的未改变的值. 这样可以有效的等待key的改变.另外,这个功能可以用于等待一组key.直到其中的某个key有修改

参考文档:

https://book-consul-guide.vnzmi.com/11_consul_template.html http://www.manongzj.com/blog/5-ntuzvtcyqxnkkmm.html https://blog.csdn.net/liuzhuchen/article/details/81913562

© 著作权归作者所有

下一篇: 001-Consul
伟大源于勇敢的开始
粉丝 10
博文 265
码字总数 142154
作品 0
深圳
运维
私信 提问
加载中

评论(0)

监控之美--prometheus配置文件动态管理

Prometheus是一套开源的监控、报警解决方案,是由SoundCloud公司开发的,从 2012 年开始编写代码,再到 2015 年 开源以来,该项目有非常活跃的社区和开发人员,目前在全世界最大的男性交友社...

Jx战壕
2017/09/13
0
0
《企业云桌面实施》-小技巧-06-为设计行业桌面虚拟化-安装和使用K2显卡

《企业云桌面实施》-系列博文-陆续更新中 《企业云桌面实施》-小技巧-01-规划注意事项 http://dynamic.blog.51cto.com/711418/1884922 《企业云桌面实施》-小技巧-02-使用ISO光驱安装esxi6.5...

CTO_LiuJinFeng
2017/10/29
0
0
基于Ansible+Docker快速实现DCOS云平台部署

本文根据DCOS联盟第一期线上分享整理而成 大家好,今天给大家分享自动快速部署DCOS服务相关组件的一些实践。 本次分享将包括以下内容: 部署在master1 和 master2 两台主机,通过检查这两台主...

刘金烨
2016/11/24
0
0
Docker - 容器部署 Consul 集群

Docker - 容器部署 Consul 集群 目录 说明 简介 了解 Consul Consul 使用场景 Consul 优势 Consul 中的概念 安装 准备 Consul 镜像 安装单个 Consul 组装集群 Consul 总结 引用和附件 说明 ...

优惠券发放
2019/04/01
0
0
Docker & Consul & Fabio & ASP.NET Core 2.0 微服务跨平台实践

相关博文: Ubuntu 简单安装 Docker Mac OS、Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和简单使用 阅读目录: Docker 运行 Consul 环境 Docker 运行 Fabio 环境 使用 ...

那谁爸爸
2018/01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vue运行机制总结

new Vue()运行之后,Vue调用_init函数进行初始化,初始化生命周期,事件,props,methods,data,computed,watch等 其中最重要的是通过Object.defineProperty设置setter和getter函数,用来 实现...

东东笔记
14分钟前
21
0
“InitializeComponent”名称在当前上下文中不存在[关闭]

如果我在Visual Studio 2010 SP1中创建一个新项目并选择“WPF应用程序”并尝试生成生成的应用程序,我会收到错误 当前上下文中不存在名称“InitializeComponent”。 今天早上,当我尝试构建当...

技术盛宴
18分钟前
44
0
Vue 列表与表格高亮设置

点击li 元素设置高亮的方法 <li v-for="(item,index) in lists" :key="index" :class="{ activeLi: currentLi == item }" @click="handleClick(index)" class="pointer"> ......

tianyawhl
20分钟前
29
0
Linux驱动开发-串口驱动

参考资料: 《LINUX设备驱动程序第三版》 linux-5.4.9 0.前言 在今天终于离职了,办完了所有的手续,感觉一身轻松,在上一家公司,作为一名程序员,已经在偏离写代码开发的歪门邪道上越走越远...

大丽水手吃卤蛋
20分钟前
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部