Consul 简化了分布式环境中的服务的注册和发现流程,通过 HTTP 或者 DNS 接口发现。支持外部 SaaS 提供者等。

consul提供的一些关键特性:

service discovery:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。

health checking:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。

key/value storage:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。

multi-datacenter:无需复杂的配置,即可支持任意数量的区域(数据中心)。

官方网站:https://www.consul.io/

系统环境:CentOS release 6.5 (Final) x64

consul最新版的下载地址

https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip

下载解压,里面只有一个consul可执行文件,执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost consul-0.6.4]# consul
usage: consul [--version] [--help] <command> [<args>]
  
Available commands are:
  agent     Runs a Consul agent
  configtest   Validate config file
  event     Fire a new event
  exec      Executes a command on Consul nodes
  force-leave  Forces a member of the cluster to enter the "left" state
  info      Provides debugging information for operators
  join      Tell Consul agent to join cluster
  keygen     Generates a new encryption key
  keyring    Manages gossip layer encryption keys
  leave     Gracefully leaves the Consul cluster and shuts down
  lock      Execute a command holding a lock
  maint     Controls node or service maintenance mode
  members    Lists the members of a Consul cluster
  monitor    Stream logs from a Consul agent
  reload     Triggers the agent to reload configuration files
  rtt      Estimates network round trip time between nodes
  version    Prints the Consul version
  watch     Watch for changes in Consul

其中,最常用到的命令是agent

输入consul agent -h 可以查看帮助。其中常见的参数解释如下:

-advertise:通知展现地址用来改变我们给集群中的其他节点展现的地址,一般情况下-bind地址就是展现地址 
-bootstrap:用来控制一个server是否在bootstrap模式,在一个datacenter中只能有一个server处于bootstrap模式,当一个server处于bootstrap模式时,可以自己选举为raft leader。 
-bootstrap-expect:在一个datacenter中期望提供的server节点数目,当该值提供的时候,consul一直等到达到指定sever数目的时候才会引导整个集群,该标记不能和bootstrap公用 
-bind:该地址用来在集群内部的通讯,集群内的所有节点到地址都必须是可达的,默认是0.0.0.0 
-client:consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1 
-config-file:明确的指定要加载哪个配置文件 
-config-dir:配置文件目录,里面所有以.json结尾的文件都会被加载 
-data-dir:提供一个目录用来存放agent的状态,所有的agent允许都需要该目录,该目录必须是稳定的,系统重启后都继续存在 
-dc:该标记控制agent允许的datacenter的名称,默认是dc1 
-encrypt:指定secret key,使consul在通讯时进行加密,key可以通过consul keygen生成,同一个集群中的节点必须使用相同的key 
-join:加入一个已经启动的agent的ip地址,可以多次指定多个agent的地址。如果consul不能加入任何指定的地址中,则agent会启动失败,默认agent启动时不会加入任何节点。 
-retry-join:和join类似,但是允许你在第一次失败后进行尝试。 
-retry-interval:两次join之间的时间间隔,默认是30s 
-retry-max:尝试重复join的次数,默认是0,也就是无限次尝试 
-log-level:consul agent启动后显示的日志信息级别。默认是info,可选:trace、debug、info、warn、err。 
-node:节点在集群中的名称,在一个集群中必须是唯一的,默认是该节点的主机名 
-protocol:consul使用的协议版本 
-rejoin:使consul忽略先前的离开,在再次启动后仍旧尝试加入集群中。 
-server:定义agent运行在server模式,每个集群至少有一个server,建议每个集群的server不要超过5个 
-syslog:开启系统日志功能,只在linux/osx上生效 
-ui-dir: 提供存放web ui资源的路径,该目录必须是可读的 
-pid-file: 提供一个路径来存放pid文件,可以使用该文件进行SIGINT/SIGHUP(关闭/更新)agent

要想利用consul提供的服务实现服务的注册与发现,我们需要建立consul cluster。

在consul方案中,每个提供服务的节点上都要部署和运行consul的agent,所有运行consul agent节点的集合构成consul cluster。

consul agent有两种运行模式:server和client。这里的server和client只是consul集群层面的区分,与搭建在cluster之上的应用服务无关。

以server模式运行的consul agent节点用于维护consul集群的状态,

官方建议每个consul cluster至少有3个或以上的运行在server mode的agent,client节点不限。

我们这里以安装三个节点为例,环境配置如下

192.168.1.100 以server模式运行

192.168.1.101,192.168.1.102 以client模式运行

一:配置consul

把上面下载的文件解压,并把consul拷贝到/opt/consul目录,然后把/opt/consul目录加入到环境变量(三个节点依次配置)

二:运行

1:在192.168.1.100节点上面进行

1
2
3
4
5
cd /opt/consul
 
mkdir data
 
consul agent -server -bootstrap -bind=0.0.0.0 -client=192.168.1.100 -data-dir=data -ui -node=192.168.1.100

这样,就启动了一个节点

2:在192.168.1.101节点上面进行

1
2
3
4
5
cd /opt/consul
 
mkdir data
 
consul agent -bind=0.0.0.0 -client=192.168.1.101 -data-dir=data -node=192.168.1.101 -join=192.168.1.100

3:在192.168.1.102节点上面进行

1
2
3
4
5
cd /opt/consul
 
mkdir data
 
consul agent -bind=0.0.0.0 -client=192.168.1.102 -data-dir=data -node=192.168.1.102 -join=192.168.1.100

全部节点启动完之后

访问http://192.168.1.100:8500/  即可查看consul集群的管理页面

在任意节点执行consul members 即可查看集群节点信息

这里在192.168.1.100节点执行

1
2
3
4
5
[root@localhost consul-0.6.4]# consul members -rpc-addr=192.168.1.100:8400
Node      Address       Status Type  Build Protocol DC
192.168.1.101 192.168.1.101:8301 alive  client 0.6.4 2     dc1
192.168.1.102 192.168.1.102:8301 alive  client 0.6.4 2     dc1
192.168.1.100 192.168.1.100:8301 alive  server 0.6.4 2     dc1

关闭节点

1
consul leave -rpc-addr=192.168.1.100:8400

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家

详解consul的安装和配置的更多相关文章

  1. 【java】详解JDK的安装和配置

    目录结构: contents structure [+] 什么是JDK JDK的三个版本 JDK包含的主要内容 JDK的安装 JDK的配置 配置JAVA_HOME 配置PATH 到底自己需不需要配置C ...

  2. 详解Springboot中自定义SpringMVC配置

    详解Springboot中自定义SpringMVC配置 WebMvcConfigurer接口 ​ 这个接口可以自定义拦截器,例如跨域设置.类型转化器等等.可以说此接口为开发者提前想到了很多拦截层面的需 ...

  3. 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单

    写在开头 现在scrapy的安装教程都明显过时了,随便一搜都是要你安装一大堆的依赖,什么装python(如果别人连python都没装,为什么要学scrapy….)wisted, zope interf ...

  4. linux命名详解及其软件安装实例

    始于cd,ls命令 好啦,步入正题,我使用的linux连接工具为xshell,mRemoteNG,对两款工具不做介绍啦,你可以百度一下,实在不会入左上方群. 进入之后,便是上面的界面黑乎乎一片,对于初 ...

  5. NHibernate实战详解(二)映射配置与应用

    关于NHibernate的资料本身就不多,中文的就更少了,好在有一些翻译文章含金量很高,另外NHibernate与Hibernate的使用方式可谓神似,所以也有不少经验可以去参考Hibernate. ...

  6. 详解zabbix中文版安装部署

    一.zabbix简介(摘自百度百科) zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供柔软 ...

  7. Linux详解(基础、环境配置、项目部署入门)

    Linux(CentOS 7)操作系统 消息队列(Kafka.RabbitMQ.RocketMQ),缓存(Redis),搜索引擎(ES),集群分布式(需要购买多台服务器,如果没有服务器我们就只能使用虚 ...

  8. 洗礼灵魂,修炼python(74)--全栈项目实战篇(2)——前期准备之详解虚拟机下安装ubuntu,基本配置,远程访问

    如果上一篇我转发的关于ubuntu的博文,你看完觉得还没准备好,那么,本篇从最基础的开始,安装虚拟机到正常使用ubuntu 虚拟机 1.什么是虚拟机 虚拟机(Virtual Machine)指通过软件 ...

  9. MySQL5.7安装详解及常见安装问题解决

    数据库安装 Python开发使用mysql数据库5.5版本以上(django2.0之后放弃mysql5.5之前的支持),在mysql版本当中5.7之前的版本都有.exe或者.msi的可执行安装文件,但 ...

随机推荐

  1. asp.net文件夹上传下载组件

    ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现. 下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压. ASP.NE ...

  2. IIS相关的常见报错

    1.错误消息 401.3: 无权限 您无权使用您提供的凭据查看此目录或页(由于访问控制列表而导致访问被拒绝).请让 Web 服务器的管理员授予您访问“E:\IIS_Deploy\WebServices ...

  3. 19、Executor原理剖析与源码分析

    一.原理图解 二.源码分析 1.Executor注册机制 worker中为Application启动的executor,实际上是启动了这个CoarseGrainedExecutorBackend进程: ...

  4. LeetCode之打家劫舍

    1. 问题 在一条直线上,有n个房屋,每个房屋中有数量不等的财宝,有一个盗 贼希望从房屋中盗取财宝,由于房屋中有报警器,如果同时从相邻的两个房屋中盗取财宝就会触发报警器.问在不触发报警器的前提下,最多 ...

  5. python 小技巧,给设计好的dict 增加嵌套值

    beijing={} beijing={'} 现在要给beijing的增加一个shanghai1 的嵌套值 beijing['shanghai1']['name']=1 运行: 那么在python3. ...

  6. jQuery学习笔记——基本了解

    安装 两种方法: 从 jquery.com 下载jQuery. 从 CDN 中载入 jQuery, 如从我的博客中加载 jQuery: <script src="https://blo ...

  7. 和小哥哥一起刷洛谷(7) 图论之dijkistra算法

    关于dijkstra 维基百科 戴克斯特拉算法(英语:Dijkstra's algorithm,又译迪杰斯特拉算法)由荷兰计算机科学家艾兹赫尔·戴克斯特拉在1956年提出.戴克斯特拉算法使用了广度优先 ...

  8. Statement.setQueryTimeout(seconds)在家中环境的再次试验 证明此语句还是有效的

    对比实验:https://www.cnblogs.com/xiandedanteng/p/11955887.html 这次实验的环境是T440p上安装的Windows版Oracle11g,版本为: O ...

  9. cv2.warpAffine 参数详解

    本文链接:https://blog.csdn.net/qq878594585/article/details/81838260本文为作者原创文章,未经同意严禁转载! opencv中的仿射变换在pyth ...

  10. Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas

    Arthas 用户文档 — Arthas 3.1.0 文档https://alibaba.github.io/arthas/ alibaba/arthas: Alibaba Java Diagnost ...