现在我们做的所有配置都是连接到我们自己的本地数据。但是在大型企业中可不是这样,他们希望配置的信息可以在几千的应用或服务器上一同改变。这样的话,我们可以使用Consul来实现配置环境变量到分布式的数据储蓄中。

6.7.1如何使用

  1. 先去https://consul.io/downloads.html网址上下载Consul.
  2. 安装之后,我们可以执行consul –version,可以盾如下信息(版本不同显示不同):

Consul v0.5.2
Consul Protocol: 2 (Understands back to: 1)

  1. 安装好了之后,我们执行这个命令启动:consul agent -server -bootstrap-expect 1 -data-dir /tmp/consul  你将会看到如下的信息:

==> WARNING: BootstrapExpect Mode is specified as 1; this is the same
as Bootstrap mode.
==> WARNING: Bootstrap mode enabled! Do not enable unless necessary
==> WARNING: It is highly recommended to set GOMAXPROCS higher than 1
==> Starting Consul agent…
==> Starting Consul agent RPC…
==> Consul agent running!
Node name: <your machine name>'
Datacenter: 'dc1'
Server: true (bootstrap: true)
Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC:
8400)
Cluster Addr: 192.168.1.227 (LAN: 8301, WAN: 8302)
Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false
Atlas: <disabled>
==> Log data will now stream in as it occurs:
2015/06/10 20:34:43 [INFO] serf: EventMemberJoin: <your machine
name> 192.168.1.227
2015/06/10 20:34:43 [INFO] serf: EventMemberJoin: <your machine
name>.dc1 192.168.1.227
2015/06/10 20:34:43 [INFO] raft: Node at 192.168.1.227:8300
[Follower] entering Follower state
2015/06/10 20:34:43 [INFO] consul: adding server <your machine
name> (Addr: 192.168.1.227:8300) (DC: dc1)
2015/06/10 20:34:43 [INFO] consul: adding server <your machine
name>.dc1 (Addr: 192.168.1.227:8300) (DC: dc1)
2015/06/10 20:34:43 [ERR] agent: failed to sync remote state: No
cluster leader
2015/06/10 20:34:45 [WARN] raft: Heartbeat timeout reached,
starting election
2015/06/10 20:34:45 [INFO] raft: Node at 192.168.1.227:8300
[Candidate] entering Candidate state
2015/06/10 20:34:45 [INFO] raft: Election won. Tally: 1
2015/06/10 20:34:45 [INFO] raft: Node at 192.168.1.227:8300
[Leader] entering Leader state
2015/06/10 20:34:45 [INFO] consul: cluster leadership acquired
2015/06/10 20:34:45 [INFO] consul: New leader elected: <your
machine name>
2015/06/10 20:34:45 [INFO] raft: Disabling EnableSingleNode
(bootstrap)
2015/06/10 20:34:45 [INFO] consul: member '<your machine name>'
joined, marking health alive
2015/06/10 20:34:47 [INFO] agent: Synced service 'consul'

  1. 服务启动之后,我们可以通过执行consul members的命令确保它包含了一个成员,结果信息如下:

Node Address Status Type Build Protocol DC

<your_machine_name> 192.168.1.227:8301 alive server 0.5.2 2

dc1

  1. Consul也提供了服务发现,健康查检,分布式锁等。我们关注的是Key/Value的服务。我们来执行这个命令设置From Consul Config值到KV存储中:curl -X PUT -d 'From Consul Config'
    http://localhost:8500/v1/kv/bookpub/my/config/value 如果你使用的windows,你可以获取cURL: http://curl.haxx.se/download.html
  2. 我们也可以通过这个数据来获取值:curl http://localhost:8500/v1/kv/bookpub/my/config/value

[{"CreateIndex":20,"ModifyIndex":20,"LockIndex":0,"Key":"bookpub/my/con
fig/value","Flags":0,"Value":"RnJvbSBDb25zdWwgQ29uZmln"}]

  1. 我们可以删除这个值,通过执行:curl -X DELETE
    http://localhost:8500/v1/kv/bookpub/my/config/value
  2. 执行这个命令来修改已经存在的值:curl -X PUT -d
    'newval' http://localhost:8500/v1/kv/bookpub/my/config/value?cas=20

6.7.2使用原理

要了解更多的Key/Value服务或关于更多Consul的工作原理,你可以访问https://consul.io/intro/getting-started/services.html。

第3步骤, 我们开始了Consul的代理。它运行着主要的操作节点和在真实的部署中,本地代理执行在个体实例中,将会使用服务节点去连接和获取数据。

这些信息显示了我们节点开始是使用一佧服务节点,创建HTTP服务的端口是8500也是DNS和RPC的服务,这些当中我们应该怎么去选择。我们可以看到我们选择了健康状态良好的那个。

当我们通过cURL来方便使用RESTful HTTP API时,我们请求使用本地的端口8500。使用RESTful API时,我们就是在处理CRUD的操作,我们使用PUT方法在一具/v1/kv节点中,为了放入bookpub/my/config/value的key.

获取数据也是很简单的,我们可以使用GET请求相似的/v1/kv服务.DELETE也是一样,唯一不同的是方法名称。

更新操作要求更多信息在URL中,名称为cas参数。这个值将会是我们想要的key—ModifyIndex,这个可以包含GET请求。在我们的例子中值是20。

6.7开启Consul使用相关推荐

  1. Ocelot + Consul实践

    关于Consul(https://www.consul.io)是一个分布式,高可用,支持多数据中心的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla ...

  2. 8分钟学会Consul集群搭建及微服务概念

    Consul介绍: Consul 是由 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul 的方案更"一站式" ...

  3. Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)

    Spring Cloud Eureka VS Consul构建微服务架构 -- 服务注册与发现 一.Spring Cloud Eureka Spring Cloud Eureka是Spring Clo ...

  4. consul知识梳理与环境搭建

    一. 什么是consul consul的基本介绍 在分布式架构中,服务治理是一个重要的问题.在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服 ...

  5. docker consul

    文章目录 一.定义 1.consul的优势 2.Consul的特性 3.构建核心 二.部署 1.consul服务器配置 2.容器服务自动注册到consul集群 3.consul-server节点配置n ...

  6. CONSUL的基本使用

                         CONSUL的基本使用以及web管理页面的开启 consul是HashiCorp公司(曾经开发过vgrant) 推出的一款开源工具, 基于go语言开发, 轻量 ...

  7. [转载]Surging 分布式微服务框架使用入门

    前言 本文非 Surging 官方教程,只是自己学习的总结.如有哪里不对,还望指正. 我对 surging 的看法 我目前所在的公司采用架构就是类似与Surging的RPC框架,在.NET 4.0框架 ...

  8. 从前慢-SpringCloud

    SpringCloud 1 什么是微服务 官网: https://www.martinfowler.com/articles/microservices.html In short, the micr ...

  9. SpringCloud 微服务工具集v1.1

    SpringCloud 微服务工具集v1.1 版本: Hoxton SR6 1.什么是微服务 官网: https://www.martinfowler.com/articles/microservic ...

  10. SpringCloud入门之项目实例

    SpringCloud 版本: Hoxton SR6 1.什么是微服务 官网: https://www.martinfowler.com/articles/microservices.html In ...

最新文章

  1. errors'MessageBoxA' : function does not take 1 parameter
  2. js---PC端滑动进度条
  3. Numpy、Scipy、matplotlib、scikit-learn等常用学习链接
  4. 2.2 使用词嵌入-深度学习第五课《序列模型》-Stanford吴恩达教授
  5. 【工具推荐】Hadoop集群监控工具 HTools
  6. OpenCV 中的绘制功能
  7. 你不知道的vscode之空间控制
  8. python柱形图代码_Python数据可视化:基于matplotlib绘制「条形图」
  9. 单实例oracle ha,Oracle单实例启动多个实例
  10. hbuilderx的快捷键整理pdf_mac键盘快捷键详解,苹果电脑键盘快捷键图文教程
  11. VMware 修复 NSA 报告的 0day
  12. java安卓开发异步任务_Android笔记4-android之多线程和异步任务
  13. php设置 url长度,URL长度有限制吗?_PHP教程
  14. 线性表——链表(含代码)
  15. MTK6762 安卓 4g 核心板不同配置区别对比
  16. “建木”萌芽,聚木成林
  17. ARM汇编之TCP Bind Shell
  18. Matlab数字信号处理的仿真系统(具有界面)
  19. 服务器ip显示cdn,怎么查看cdn原服务器ip
  20. 李建忠设计模式之“组件协作”模式

热门文章

  1. 设计模式之构造函数模式
  2. 在Java中,final修饰的类有什么特点
  3. IE9父容器overflow:auto时,子容器状态更改导致滚动条下出现额外空间的问题探讨...
  4. 游戏开发之点和圆的关系,附上C++类结构(C++基础)
  5. Kubernetes详解(二十四)——Deployment控制器更新实战与查看
  6. Ansible详解(十八)——Ansible使用小技巧
  7. C++ vector和stack入门习题(采用排序)
  8. python中的变量的学习
  9. Linux集群:LVS搭建负载均衡集群(二)
  10. JavaScript中函数的上下文——this