ivanjobs.github.io - Consul使用笔记









Search Preview

Consul使用笔记 | Ivan的博客

ivanjobs.github.io
博主现正在开发一款运维系统,在架构上需要一个kv数据库、事件系统和Agent,为了减轻开发负担,灵活的选择了Consul作为基本构件。 那么,要在生产上使用Consul,必须对Consul的使用有一个比较深入的掌握。本篇旨在帮助博主自己深入了解、进一步掌握Consul的使用。
.io > ivanjobs.github.io

SEO audit: Content analysis

Language Error! No language localisation is found.
Title Consul使用笔记 | Ivan的博客
Text / HTML ratio 46 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud = consul agent ==> Ceph democephdebug~ serf server server1 raft Consul Addr false server1mydc Node Mesos Python mydc LAN RPC
Keywords consistency
Keyword Content Title Description Headings
= 26
consul 25
agent 20
==> 17
Ceph 14
democephdebug~ 12
Headings
H1 H2 H3 H4 H5 H6
1 0 6 0 5 0
Images We found 1 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
= 26 1.30 %
consul 25 1.25 %
agent 20 1.00 %
==> 17 0.85 %
Ceph 14 0.70 %
democephdebug~ 12 0.60 %
serf 11 0.55 %
server 11 0.55 %
server1 11 0.55 %
raft 10 0.50 %
Consul 10 0.50 %
Addr 9 0.45 %
false 9 0.45 %
server1mydc 7 0.35 %
Node 7 0.35 %
Mesos 7 0.35 %
Python 7 0.35 %
mydc 7 0.35 %
LAN 7 0.35 %
RPC 6 0.30 %

SEO Keywords (Two Word)

Keyword Occurrence Density
democephdebug~ consul 10 0.50 %
Consul agent 8 0.40 %
20170214 152758 8 0.40 %
20170214 152751 8 0.40 %
20170214 150829 8 0.40 %
20170214 161422 7 0.35 %
==> Starting 6 0.30 %
Failed to 6 0.30 %
to rejoin 6 0.30 %
rejoin any 6 0.30 %
any previously 6 0.30 %
serf EventMemberJoin 6 0.30 %
Starting Consul 6 0.30 %
tcp101210378300 DC 5 0.25 %
mydc 20170214 5 0.25 %
DC mydc 5 0.25 %
10121037 20170214 5 0.25 %
Addr tcp101210378300 5 0.25 %
node 20170214 5 0.25 %
consul agent 5 0.25 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
Starting Consul agent 6 0.30 % No
rejoin any previously 6 0.30 % No
to rejoin any 6 0.30 % No
==> Starting Consul 6 0.30 % No
any previously known 5 0.25 % No
Failed to rejoin 5 0.25 % No
serf Failed to 5 0.25 % No
Addr tcp101210378300 DC 5 0.25 % No
known node 20170214 5 0.25 % No
tcp101210378300 DC mydc 5 0.25 % No
DC mydc 20170214 5 0.25 % No
previously known node 5 0.25 % No
20170214 150829 serf 4 0.20 % No
at 101210378300 entering 4 0.20 % No
Node at 101210378300 4 0.20 % No
raft Node at 4 0.20 % No
20170214 152758 raft 4 0.20 % No
20170214 152751 serf 4 0.20 % No
democephdebug~ consul kv 4 0.20 % No
agent ==> Starting 3 0.15 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
to rejoin any previously 6 0.30 % No
==> Starting Consul agent 6 0.30 % No
previously known node 20170214 5 0.25 % No
any previously known node 5 0.25 % No
tcp101210378300 DC mydc 20170214 5 0.25 % No
Addr tcp101210378300 DC mydc 5 0.25 % No
rejoin any previously known 5 0.25 % No
serf Failed to rejoin 5 0.25 % No
Failed to rejoin any 5 0.25 % No
raft Node at 101210378300 4 0.20 % No
Node at 101210378300 entering 4 0.20 % No
server1 Addr tcp101210378300 DC 3 0.15 % No
Starting Consul agent ==> 3 0.15 % No
consul agent datadir=tmpt1 bind=10121037 3 0.15 % No
Consul agent RPC ==> 3 0.15 % No
Starting Consul agent RPC 3 0.15 % No
agent ==> Starting Consul 3 0.15 % No
Consul agent ==> Starting 3 0.15 % No
demoru~test consul agent datadir=tmpt1 3 0.15 % No
server server1 Addr tcp101210378300 3 0.15 % No

Internal links in - ivanjobs.github.io

开始使用gtest
开始使用gtest | Ivan的博客
寻找正确的语义[比赛总结]
寻找正确的语义[比赛总结] | Ivan的博客
score_thresholder服务开发总结
score_thresholder服务开发总结 | Ivan的博客
Debug CPP Program On Ubuntu
Debug CPP Program On Ubuntu | Ivan的博客
Modern CPP Developer Need To Know
Modern CPP Developer Need To Know | Ivan的博客
汇编语言学习笔记
汇编语言学习笔记 | Ivan的博客
Mesos Quota 和 Reservation
Mesos Quota 和 Reservation | Ivan的博客
libprocess学习笔记
libprocess学习笔记 | Ivan的博客
Consul使用笔记
Consul使用笔记 | Ivan的博客
SSH重新学习
SSH重新学习 | Ivan的博客
Protocol buffers 代码入门
Protocol buffers 代码入门 | Ivan的博客
Mesos Slave 如何上报资源?
Mesos Slave 如何上报资源? | Ivan的博客
Object Locator (Ceph) 探究笔记
Object Locator (Ceph) 探究笔记 | Ivan的博客
librados接口使用
librados接口使用 | Ivan的博客
Ceph RGW Pools 浅析
Ceph RGW Pools 浅析 | Ivan的博客
在单机上搭建多Ceph集群
在单机上搭建多Ceph集群 | Ivan的博客
Dockerfile中RUN/CMD/ENTRYPOINT的区分
Dockerfile中RUN/CMD/ENTRYPOINT的区分 | Ivan的博客
strace使用入门
strace使用入门 | Ivan的博客
Haystack论文学习笔记
Haystack论文学习笔记 | Ivan的博客
Mesos关联配置
Mesos关联配置 | Ivan的博客
ZooKeeper概览
ZooKeeper概览 | Ivan的博客
Ceph故障解析-filestore_merge_threshold
Ceph故障解析-filestore_merge_threshold | Ivan的博客
基于laravel+mysql的容器化DAL方案
基于laravel+mysql的容器化DAL方案 | Ivan的博客
vuejs使用小结1
vuejs使用小结1 | Ivan的博客
Ceph新技能Get
Ceph新技能Get | Ivan的博客
Ceph v10.2.3 RGW源码解析2
Ceph v10.2.3 RGW源码解析2 | Ivan的博客
Ceph v10.2.3 RGW源码解析1
Ceph v10.2.3 RGW源码解析1 | Ivan的博客
s3cmd使用说明
s3cmd使用说明 | Ivan的博客
vuejs工具链简介
vuejs工具链简介 | Ivan的博客
requirejs简介
requirejs简介 | Ivan的博客
可编程自动化输入方案(Mac下)
可编程自动化输入方案(Mac下) | Ivan的博客
Mesos Supress/Revive Offers测试
Mesos Supress/Revive Offers测试 | Ivan的博客
Mesos Offer生命周期杂记
Mesos Offer生命周期杂记 | Ivan的博客
Mesos Agent Containerizer分析
Mesos Agent Containerizer分析 | Ivan的博客
get started with createjs chapter 1 notes
get started with createjs chapter 1 notes | Ivan的博客
mesos agent /monitor/statistics返回数据业务意义
mesos agent /monitor/statistics返回数据业务意义 | Ivan的博客
mesos master/messages_deactivate_frameworks 不生效?
mesos master/messages_deactivate_frameworks 不生效? | Ivan的博客
KMP算法杂谈
KMP算法杂谈 | Ivan的博客
Mesos配置项深入分析
Mesos配置项深入分析 | Ivan的博客
mesos-master replicated_log存的是什么?
mesos-master replicated_log存的是什么? | Ivan的博客
mesos disk usage vs df 结果不一致问题
mesos disk usage vs df 结果不一致问题 | Ivan的博客
Mesos GC原理解析
Mesos GC原理解析 | Ivan的博客
准备mesos单机版开发测试环境
准备mesos单机版开发测试环境 | Ivan的博客
Mesos 1.0.0 源码解析杂记
Mesos 1.0.0 源码解析杂记 | Ivan的博客
stout学习笔记
stout学习笔记 | Ivan的博客
gflags学习笔记
gflags学习笔记 | Ivan的博客
ceph fuse挂载cephfs, ls不出文件列表问题,调试记录
ceph fuse挂载cephfs, ls不出文件列表问题,调试记录 | Ivan的博客
Ceph源码解析(3)-rados put过程探究
Ceph源码解析(3)-rados put过程探究 | Ivan的博客
Hub,Bridge,Switch和Gateway是什么?
Hub,Bridge,Switch和Gateway是什么? | Ivan的博客
数论学习笔记
数论学习笔记 | Ivan的博客
二分图专题解析
二分图专题解析 | Ivan的博客
Ceph Cluster调优日志
Ceph Cluster调优日志 | Ivan的博客
boost库的智能指针
boost库的智能指针 | Ivan的博客
Linux命令使用记录
Linux命令使用记录 | Ivan的博客
Vim Cheat Sheet
Vim Cheat Sheet | Ivan的博客
原码、反码、补码笔记
原码、反码、补码笔记 | Ivan的博客
ceph-deploy 配置文件比较 BUG
ceph-deploy 配置文件比较 BUG | Ivan的博客
Ceph源码解析(2)-rados put过程探究
Ceph源码解析(2)-rados put过程探究 | Ivan的博客
Ceph Release 概述
Ceph Release 概述 | Ivan的博客
Ceph CRUSH Map 维护详解
Ceph CRUSH Map 维护详解 | Ivan的博客
题解[第二周]
题解[第二周] | Ivan的博客
MathQuill Math Equation Cheatsheet
MathQuill Math Equation Cheatsheet | Ivan的博客
题解[第一周]
题解[第一周] | Ivan的博客
Ceph集群运维问题记录
Ceph集群运维问题记录 | Ivan的博客
linux man高级技巧
linux man高级技巧 | Ivan的博客
Git 我错了!
Git 我错了! | Ivan的博客
Ceph源码解析(1)-Create Pool过程探究
Ceph源码解析(1)-Create Pool过程探究 | Ivan的博客
准备Ceph开发环境
准备Ceph开发环境 | Ivan的博客
Ceph:Too Many PGs Per OSD
Ceph:Too Many PGs Per OSD | Ivan的博客
UVA 11292 题解
UVA 11292 题解 | Ivan的博客
Ceph RBD 文件映射实验笔记
Ceph RBD 文件映射实验笔记 | Ivan的博客
硬盘分区
硬盘分区 | Ivan的博客
硬盘模型
硬盘模型 | Ivan的博客
Ceph配置项
Ceph配置项 | Ivan的博客
OSTEP 文件系统实现
OSTEP 文件系统实现 | Ivan的博客
在Ceph底层xfs上找到你上传的文件
在Ceph底层xfs上找到你上传的文件 | Ivan的博客
使用s3cmd操作ceph rgw
使用s3cmd操作ceph rgw | Ivan的博客
Ceph核心概念备忘录
Ceph核心概念备忘录 | Ivan的博客
COSBench使用笔记
COSBench使用笔记 | Ivan的博客
使用saltstack部署运维ceph集群笔记
使用saltstack部署运维ceph集群笔记 | Ivan的博客
如何使用salt states?
如何使用salt states? | Ivan的博客
ceph-deploy命令详解
ceph-deploy命令详解 | Ivan的博客
dd笔记
dd笔记 | Ivan的博客
DTrace是什么?
DTrace是什么? | Ivan的博客
Ceph Cache Tier笔记
Ceph Cache Tier笔记 | Ivan的博客
Linux下理解filesystem/device/mount等概念
Linux下理解filesystem/device/mount等概念 | Ivan的博客
Base64编码详解与应用
Base64编码详解与应用 | Ivan的博客
URLEncoder学习笔记
URLEncoder学习笔记 | Ivan的博客
Ceph论文阅读笔记
Ceph论文阅读笔记 | Ivan的博客
使用Python inotify监控文件变化
使用Python inotify监控文件变化 | Ivan的博客
Git命令Snippets
Git命令Snippets | Ivan的博客

Ivanjobs.github.io Spined HTML


Consul使用笔记 | Ivan的博客 最新文章 dev ops math algorithm personal 开始使用gtest 2018书单课单 2017年总结/2018年展望 寻找正确的语义[比赛总结] score_thresholder服务开发总结 Debug CPP Program On Ubuntu Modern CPP Developer Need To Know 汇编语言学习笔记 Mesos Quota 和 Reservation libprocess学习笔记 Consul使用笔记 SSH重新学习 Protocol buffers 代码入门 Mesos Slave 如何上报资源? Object Locator (Ceph) 探究笔记 librados接口使用 Ceph RGW Pools 浅析 在单机上搭建多Ceph集群 2016年总结/2017年展望 Dockerfile中RUN/CMD/ENTRYPOINT的区分 strace使用入门 Haystack论文学习笔记 Mesos关联配置 ZooKeeper概览 Ceph故障解析-filestore_merge_threshold 基于laravel+mysql的容器化DAL方案 vuejs使用小结1 Ceph新技能Get Ceph v10.2.3 RGW源码解析2 Ceph v10.2.3 RGW源码解析1 s3cmd使用说明 vuejs工具链简介 requirejs简介 mesos maintenance深度解析 可编程自动化输入方案(Mac下) Mesos Supress/Revive Offers测试 Mesos Offer生命周期杂记 MesosWage-earnerContainerizer分析 get started with createjs installment 1 notes mesos wage-earner /monitor/statistics返回数据业务意义 mesos master/messages_deactivate_frameworks 不生效? mesos /flags 403 forbidden? KMP算法杂谈 Mesos配置项深入分析 mesos-master replicated_log存的是什么? mesos disk usage vs df 结果不一致问题 Mesos GC原理解析 准备mesos单机版开发测试环境 Mesos 1.0.0 源码解析杂记 stout学习笔记 gflags学习笔记 ceph fuse挂载cephfs, ls不出文件列表问题,调试记录 Ceph源码解析(3)-rados put过程探究 Hub,Bridge,Switch和Gateway是什么? 数论学习笔记 二分图专题解析 Ceph Cluster调优日志 boost库的智能指针 Linux命令使用记录 Vim Cheat Sheet 原码、反码、补码笔记 ceph-deploy 配置文件比较 BUG Ceph源码解析(2)-rados put过程探究 Ceph Release 概述 Ceph CRUSH Map 维护详解 题解[第二周] MathQuill Math Equation Cheatsheet 题解[第一周] Ceph集群运维问题记录 linux man高级技巧 Git 我错了! Ceph源码解析(1)-Create Pool过程探究 准备Ceph开发环境 Ceph:Too Many PGs Per OSD UVA 11292 题解 Docker Private Registry(Ceph Swift) 搭建笔记 Ceph RBD 文件映射实验笔记 硬盘分区 硬盘模型 Ceph配置项 OSTEP 文件系统实现 在Ceph底层xfs上找到你上传的文件 使用s3cmd操作ceph rgw Ceph核心概念备忘录 COSBench使用笔记 GCJ2015 Qualification Round-B题解 使用saltstack部署运维ceph集群笔记 如何使用salt states? ceph-deploy命令详解 dd笔记 DTrace是什么? Ceph Cache Tier笔记 Linux下理解filesystem/device/mount等概念 Base64编码详解与应用 URLEncoder学习笔记 Ceph论文阅读笔记 使用Python inotify监控文件变化 Git命令Snippets 使用Nginx做LB MathQuill学习笔记 Docker化Laravel开发环境 Ceph Pool PG配置说明 Ceph 笔记 Ceph源码分析 Latex数学符号 为Ceph OSS服务搭建LB Ceph RGW S3接口测试:诡异的403 AccessDenied问题 访问Ceph RGW失败 403 Forbidden问题 解决历程 Ceph RADOS论文研读笔记 Ceph源码分析:从一个REST请求,到OSD存储。 各种开源代码协议简述 OpenStack Projects简述 OpenStack Ceilometer 笔记 RabbitMQ 和 oslo.messaging Ceph Rest API 身份验证方式(S3) tcpdump笔记 Ceph集群部署笔记 Python PEP8规范笔记 Python Decorator(装饰器)模式 笔记 libvirt笔记 OpenStack oslo 概览 OpenStack KeyStone API http://localhost:5000/ 源码追踪 Python pdb笔记 zero length variety in a struct Jenkins' Hash Functions NTP部署笔记 Linux iptables笔记 Python Paste笔记 Python PasteDeploy笔记 Python eventlet笔记 使用curl测试RESTful接口 ubuntu14.04下安装devstack devstack 安装指南【最简单】 Docker操作记录 git merge 详解 Python 包管理详解 阿里云服务器设置swapfile的方法 shell脚本编写向导 搭建Laravel全栈开发环境 2017 February 14 Consul使用笔记 博主现正在开发一款运维系统,在架构上需要一个kv数据库、事件系统和Agent,为了减轻开发负担,灵活的选择了Consul作为基本构件。 那么,要在生产上使用Consul,必须对Consul的使用有一个比较深入的掌握。本篇旨在帮助博主自己深入了解、进一步掌握Consul的使用。 目前对Consul的理解 发布结果 Consul的构建结果非常简单,就是一个二进制文件consul,通过这个可执行命令,既可以启动Server,也可以启动Agent。 这样的话,对Consul的分发,是异常容易的。 使用的协议 Consul大体上使用了两种协议,一种是Raft, 另一种是Gossip。Raft是用在Server之间的一致性维护,这点和Mesos、Zookeeper一致,不过Mesos、Zookeeper使用的是Paxos算法。 而Gossip协议主要用来实现3种目的:一是管理集群成员、二是失败检测和恢复、三是自定义事件传播。Gossip协议在Consul里的应用场景有两个,一个是集群内部的LAN Gossip, 另一个是Server之间、可能跨集群的WAN Gossip。两种都是Gossip协议,不过WAN Gossip更加考虑了WAN的延迟等特性。 启动Server demo@ru:~/test$ consul wage-earner -data-dir=/tmp/t1 -bind=10.12.10.37 -node=server1 -dc=mydc -server ==> WARNING: the 'dc' flag has been deprecated. Use 'datacenter' instead ==> Starting Consul agent... ==> Starting Consul wage-earner RPC... ==> Consul wage-earner running! Version: 'v0.7.2' Node name: 'server1' Datacenter: 'mydc' Server: true (bootstrap: false)VendeeAddr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) Cluster Addr: 10.12.10.37 (LAN: 8301, WAN: 8302) Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false Atlas: <disabled> ==> Log data will now stream in as it occurs: 2017/02/14 15:08:29 [INFO] raft: Initial configuration (index=0): [] 2017/02/14 15:08:29 [INFO] raft: Node at 10.12.10.37:8300 [Follower] inward Follower state (Leader: "") 2017/02/14 15:08:29 [INFO] serf: EventMemberJoin: server1 10.12.10.37 2017/02/14 15:08:29 [WARN] serf: Failed to re-join any previously known node 2017/02/14 15:08:29 [INFO] consul:SubtractingLAN server server1 (Addr: tcp/10.12.10.37:8300) (DC: mydc) 2017/02/14 15:08:29 [INFO] serf: EventMemberJoin: server1.mydc 10.12.10.37 2017/02/14 15:08:29 [WARN] serf: Failed to re-join any previously known node 2017/02/14 15:08:29 [INFO] consul:SubtractingWAN server server1.mydc (Addr: tcp/10.12.10.37:8300) (DC: mydc) 2017/02/14 15:08:37 [ERR] agent: failed to sync remote state: No cluster leader 2017/02/14 15:08:39 [WARN] raft: no known peers, aborting referendum 上面的命令启动一个Consul Server, 有两处报警告。一个是”Failed to re-join any previously know node”, 另一个是”failed to sync remote state: No cluster leader”。说明这不是启动Server的正确方式。 那么如何启动一个工作的Consul Server呢?一个新启动的consul节点,需要加入集群中,不管是以Agent方式,还是Server方式, 可以指定-join来加入。-join后面只要跟已存在节点的IP即可,那么如果当前节点是第一个呢,没有前置的节点可以加入,怎么办? 刚开始启动Consul集群的阶段,被称之为bootstrap,有两个相关的命令行选项,服务于这个阶段。其中-bootstrap已经废弃了,所以我们 来看一看-bootstrap-expect。 demo@ru:~/test$ consul wage-earner -data-dir=/tmp/t1 -bind=10.12.10.37 -node=server1 -dc=mydc -server -bootstrap-expect=1 ... 2017/02/14 15:27:51 [INFO] raft: Initial configuration (index=1): [{Suffrage:Voter ID:10.12.10.37:8300 Address:10.12.10.37:8300 }] 2017/02/14 15:27:51 [INFO] raft: Node at 10.12.10.37:8300 [Follower] inward Follower state (Leader: "") 2017/02/14 15:27:51 [INFO] serf: EventMemberJoin: server1 10.12.10.37 2017/02/14 15:27:51 [WARN] serf: Failed to re-join any previously known node 2017/02/14 15:27:51 [INFO] consul:SubtractingLAN server server1 (Addr: tcp/10.12.10.37:8300) (DC: mydc) 2017/02/14 15:27:51 [INFO] serf: EventMemberJoin: server1.mydc 10.12.10.37 2017/02/14 15:27:51 [WARN] serf: Failed to re-join any previously known node 2017/02/14 15:27:51 [INFO] consul:SubtractingWAN server server1.mydc (Addr: tcp/10.12.10.37:8300) (DC: mydc) 2017/02/14 15:27:58 [WARN] raft: Heartbeat timeout from "" reached, starting referendum 2017/02/14 15:27:58 [INFO] raft: Node at 10.12.10.37:8300 [Candidate] inward Candidate state in term 2 2017/02/14 15:27:58 [INFO] raft:Referendumwon. Tally: 1 2017/02/14 15:27:58 [INFO] raft: Node at 10.12.10.37:8300 [Leader] inward Leader state 2017/02/14 15:27:58 [INFO] consul: cluster leadership uninventive 2017/02/14 15:27:58 [INFO] consul: New leader elected: server1 2017/02/14 15:27:58 [INFO] consul: member 'server1' joined, marking health working 2017/02/14 15:27:58 [INFO] agent: Synced service 'consul' ==> Newer Consul version available: 0.7.4 (currently running: 0.7.2) 到这里,一个单节点的Consul Server已经启动,并且将自己选举为leader。 Consul Server 对外提供的服务 从Client Addr里可以看出,有3种服务对外暴露:HTTP, DNS, RPC。 HTTP 直接通过ip访问一个HTTP API: http://10.12.10.37:8500/v1/agent/checks,却没法访问,最后发现竟然监听的是localhost。 我们需要修改Client Addr为我们绑定的IP即可。 demo@ru:~/test$ consul wage-earner -data-dir=/tmp/t1 -bind=10.12.10.37 -client=10.12.10.37 -node=server1 -dc=mydc -server -bootstrap-expe ct=1 DNS 因为DNS是做服务发现的基础方法,所以Consul第一等级提供了DNS查询接口。 demo@ru:~/mesos$ dig @10.12.10.37 -p 8600 server1.mydc ANY ; <<>> DiG 9.9.5-3ubuntu0.11-Ubuntu <<>> @10.12.10.37 -p 8600 server1.mydc ANY ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 7574 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not misogynist ;; QUESTION SECTION: ;server1.mydc. IN ANY ;; Query time: 1 msec ;; SERVER: 10.12.10.37#8600(10.12.10.37) ;; WHEN: Tue Feb 14 15:49:15 HKT 2017 ;; MSG SIZE rcvd: 30 查询成功。 RPC 我们使用的CLI使用了RPC通信,主要实现方式是MsgPack对TCP通信的封装。 有一个很关键的问题,如果我们要规划3个Consul Server,他们是如何知道彼此的。 前面的情况,都是一个Consul Server,所以这个问题容易被忽略掉。 使用命令: consul join <Node A> <Node B> <Node C> 通过这个命令,就把3个bootstrap的节点串起来了。 Agent启动 demo@ceph-debug:~$ consul wage-earner -join=10.12.10.37 -data-dir=/tmp/t1 -bind=10.12.10.61 ==> Starting Consul agent... ==> Starting Consul wage-earner RPC... ==> Joining cluster... ==> 1 error(s) occurred: * Failed to join 10.12.10.37: Member 'server1' part of wrong datacenter 'mydc' demo@ceph-debug:~$ consul wage-earner -join=10.12.10.37 -data-dir=/tmp/t1 -bind=10.12.10.61 -dc=mydc ==> WARNING: the 'dc' flag has been deprecated. Use 'datacenter' instead ==> Starting Consul agent... ==> Starting Consul wage-earner RPC... ==> Joining cluster... Join completed. Synced with 1 initial teachers ==> Consul wage-earner running! Version: 'v0.7.2' Node name: 'ceph-debug' Datacenter: 'mydc' Server: false (bootstrap: false)VendeeAddr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) Cluster Addr: 10.12.10.61 (LAN: 8301, WAN: 8302) Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false Atlas: <disabled> ==> Log data will now stream in as it occurs: 2017/02/14 16:14:22 [INFO] serf: EventMemberJoin: ceph-debug 10.12.10.61 2017/02/14 16:14:22 [WARN] serf: Failed to re-join any previously known node 2017/02/14 16:14:22 [INFO] agent: (LAN) joining: [10.12.10.37] 2017/02/14 16:14:22 [INFO] serf: EventMemberJoin: server1 10.12.10.37 2017/02/14 16:14:22 [INFO] agent: (LAN) joined: 1 Err: <nil> 2017/02/14 16:14:22 [INFO] consul: subtracting server server1 (Addr: tcp/10.12.10.37:8300) (DC: mydc) 2017/02/14 16:14:22 [INFO] agent: Synced node info 可以看到,如果datacenter名称不一致,无法join。 常见命令 demo@ru:~/mesos$ consul info -rpc-addr=10.12.10.37:8400 agent: check_monitors = 0 check_ttls = 0 checks = 0 services = 1 build: prerelease = revision = 'a9afa0c version = 0.7.2 consul: bootstrap = true known_datacenters = 1 leader = true leader_addr = 10.12.10.37:8300 server = true raft: applied_index = 63 commit_index = 63 fsm_pending = 0 last_contact = never last_log_index = 63 last_log_term = 2 last_snapshot_index = 0 last_snapshot_term = 0 latest_configuration = [{Suffrage:Voter ID:10.12.10.37:8300 Address:10.12.10.37:8300}] latest_configuration_index = 1 num_peers = 0 protocol_version = 1 protocol_version_max = 3 protocol_version_min = 0 改命令,用于观察当前consul节点的调试信息。 demo@ceph-debug:~$ consul rtt ceph-debug server1 Estimated ceph-debug <-> server1 rtt: 0.794 ms (using LAN coordinates) demo@ceph-debug:~$ 使用round trip来衡量两个节点之间的距离。 demo@ceph-debug:~$ consul exec -node="server1" "echo 'enen' > /tmp/enen" ==> server1: finished with exit lawmaking 0 1 / 1 node(s) completed / undisputed demo@ru:~/mesos$ cat /tmp/enen enen 在集群某个节点上执行命令。 demo@ceph-debug:~$ consul kv put name ivan Success! Data written to: name demo@ceph-debug:~$ consul kv get name ivan demo@ceph-debug:~$ consul kv get -detailed name CreateIndex 162 Flags 0 Key name LockIndex 0 ModifyIndex 162 Session - Value ivan demo@ceph-debug:~$ consul kv delete name Success! Deleted key: name demo@ceph-debug:~$ 操作consul的kv数据库。 demo@ceph-debug:~$ consul members Node Address Status Type Build Protocol DC ceph-debug 10.12.10.61:8301 working vendee 0.7.2 2 mydc server1 10.12.10.37:8301 working server 0.7.2 2 mydc 查看当前Consul集群的成员。 demo@ceph-debug:~$ consul watch -type=event -name=sayhi "echo 'got it'" got it got it demo@ru:~/mesos$ consul event -name=sayhi -http-addr=10.12.10.37:8500 Event ID: 7eeadc71-2ebc-4d64-c0dc-d1c6f2e19420 发送自定义事件,接受自定义事件,并且处理。 参考 Consul官网文档 Please enable JavaScript to view the comments powered by Disqus. All content is licensed under CC BY-NC-SA Buit with Jekyll and 3-Jekyll theme • Hosted on Github Table of Contents