Consule 是什么

  Consul包含多个组件,但是作为一个整体,为你的基础设施提供服务发现和服务配置的工具.他提供以下关键特性:

  • 服务发现 Consul 的客户端可用提供一个服务,比如 api 或者mysql ,另外一些客户端可用使用 Consul 去发现一个指定服务的提供者.通过 DNS 或者 HTTP 应用程序可用很容易的找到他所依赖的服务.

  • 健康检查 Consul 客户端可用提供任意数量的健康检查,指定一个服务(比如: webserver 是否返回了200 OK 状态码)或者使用本地节点(比如:内存使用是否大于90%). 这个信息可由 operator用来监视集群的健康.被服务发现组件用来避免将流量发送到不健康的主机.

  • Key/Value存储 应用程序可用根据自己的需要使用 Consul 的层级的 Key/Value 存储.比如动态配置,功能标记,协调,领袖选举等等,简单的 HTTP API 让他更易于使用.

  • 多数据中心: Consul支持开箱即用的多数据中心.这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域.

  Consul面向DevOps和应用开发者友好.是他适合现代的弹性的基础设施.

基础架构

  Consul是一个分布式高可用的系统. 这节将包含一些基础,我们忽略掉一些细节这样你可以快速了解Consul是如何工作的.如果要了解更多细节,请参考深入的架构描述.

  每个提供服务给Consul的阶段都运行了一个Consul agent . 发现服务或者设置和获取 key/value存储的数据不是必须运行agent.这个agent是负责对节点自身和节点上的服务进行健康检查的.

  Agent与一个和多个Consul Server 进行交互.Consul Server 用于存放和复制数据.server自行选举一个领袖.虽然Consul可以运行在一台server , 但是建议使用3到5台来避免失败情况下数据的丢失.每个数据中心建议配置一个server集群.

  你基础设施中需要发现其他服务的组件可以查询任何一个Consul 的server或者 agent.Agent会自动转发请求到server .

  每个数据中运行了一个Consul server集群.当一个跨数据中心的服务发现和配置请求创建时.本地Consul Server转发请求到远程的数据中心并返回结果.

使用 Consul

  Consul集群的每个节点都必须先安装Consul.安装非常容易,Consul发布为所支持的平台和架构的二进制包.这个指南不包含从源代码编译Consul的内容。想要通过源代码进行安装,请参看 [官方文档安装手册]

安装 Consul

  安装Consul,到 [download consul 网址] 找到适合你系统的包下载他。Consul 打包为一个 ’Zip’ 文件。下载后解开压缩包,拷贝Consul到你的 PATH 路径中,在 Unix 系统中 ~/bin /usr/local/bin 是通常的安装目录.根据你是想为单个用户安装还是给整个系统安装来选择.在Windows系统中有可以安装到 %PATH% 的路径中。

验证 Consul

  完成安装后,通过打开一个新终端窗口检查consul安装是否成功.通过执行 consul你应该看到类似下面的输出

   

  如果你得到一个consul not be found的错误,你的PATH可能没有正确设置.请返回检查你的consul的安装路径是否包含在PATH中.

运行 Agent

  完成 Consul 的安装后,必须运行 agent.。agent 可以运行为 server 或 client 模式。每个数据中心至少必须拥有一台 server。建议在一个集群中有 3 或者 5 个server,原理其实和 zookeeper 类似。部署单一的server,在出现失败时会不可避免的造成数据丢失。其他的 agent 运行为 client 模式。一个 client 是一个非常轻量级的进程。用于注册服务,运行健康检查和转发对 server 的查询。agent 必须在集群中的每个主机上运行。查看启动数据中心的细节请查看 [官方文档].

启动 Agent

  为了更简单,现在我们将启动 Consul agent 的开发模式。这个模式快速和简单的启动一个单节点的Consul。这个模式不能用于生产环境,因为他不持久化任何状态.。

  OS X用户注意: Consul 使用你的主机hostname作为默认的节点名字.如果你的主机名包含时间,到这个节点的DNS查询将不会工作.为了避免这个情况,使用 -node 参数来明确的设置node名.  

  

  如你所见,Consul Agent 启动并输出了一些日志数据。从这些日志中你可以看到,我们的 agent 运行在 server 模式并且声明作为一个集群的 Leader。额外的本地成员也被标记为一个健康的成员。

  也可以通过 -data-dir=/tmp/consul 来指定数据存放位置,对于 consul 的 web UI 必须要指定对应数据的存放位置。

集群成员

  新开一个终端窗口运行 consul members, 可以看到 Consul 集群的成员。下一节我们将讲到加入集群,现在你应该只能看到一个成员,就是你自己:  

  

  这个输出显示我们自己的节点。运行的地址,健康状态,自己在集群中的角色,版本信息。添加 -detialed 选项可以查看到额外的信息。

  members 命令的输出是基于 gossip协议是最终一致的。意味着,在任何时候,通过你本地 agent 看到的结果可能不是准确匹配 server 的状态。为了查看到一致的信息,使用HTTP API(将自动转发)到Consul Server上去进行查询:

  

  除了HTTP API ,DNS 接口也可以用来查询节点。注意:你必须确定将你的 DNS 查询指向 Consul agent 的DNS服务器,这个默认运行在 8600 端口。DNS条目的格式(例如:”Armons-MacBook-Air.node.consul”)将在后面讲到。

停止 Agent

  你可以使用Ctrl-C 优雅的关闭Agent.。中断Agent之后你可以看到他离开了集群并关闭。

  在退出中,Consul 提醒其他集群成员,这个节点离开了。如果你强行杀掉进程。集群的其他成员应该能检测到这个节点失效了。当一个成员离开,他的服务和检测也会从目录中移除。当一个成员失效了,他的健康状况被简单的标记为危险,但是不会从目录中移除。Consul 会自动尝试对失效的节点进行重连。允许他从某些网络条件下恢复过来。离开的节点则不会再继续联系。

  此外,如果一个 agent 作为一个服务器,一个优雅的离开是很重要的,可以避免引起潜在的可用性故障影响达成一致性协议

  查看这里了解添加和移除server.# 注册服务

  在之前的步骤我们运行了第一个agent。看到了集群的成员,查询节点,在这里我们将注册我们的第一个服务并查询这些服务。

定义一个服务

  可以通过提供服务定义或者调用 HTTP API 来注册一个服务。服务定义文件是注册服务的最通用的方式。所以我们将在这一步使用这种方式。我们将会建立在前一步我们覆盖的代理配置。首先,为Consul配置创建一个目录。Consul 会载入配置文件夹里的所有配置文件。在Unix系统中通常类似 /etc/consul.d (.d 后缀意思是这个路径包含了一组配置文件)。

$ sudo mkdir /etc/consul.d

 然后,我们将编写服务定义配置文件。假设我们有一个名叫 web 的服务运行在 80 端口。另外,我们将给他设置一个标签。这样我们可以使用他作为额外的查询方式:

echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' > /etc/consul.d/web.json

 现在重启agent , 设置配置目录:

$ consul agent -dev -config-dir /etc/consul.d
==> Starting Consul agent...
...
[INFO] agent: Synced service 'web'
...

 你可能注意到了输出了 "synced" 了 web 这个服务。意思是这个 agent 从配置文件中载入了服务定义,并且成功注册到服务目录。

 如果你想注册多个服务,你应该在 Consul 配置目录创建多个服务定义文件。

具体后续的可以参看:http://vnzmi.com/2016/08/16/consul-quick-guide/

  后续会总结完善的

Consul 服务发现与配置的更多相关文章

  1. Consul 服务发现和配置

    Service discovery and configuration made easy. Distributed, highly available, and datacenter-aware. ...

  2. consul服务发现和配置共享的软件,

    Consul 是什么 consul是一个支持多数据中心分布式高可用服务发现和配置共享的服务软件,由HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2. ...

  3. Redola.Rpc 集成 Consul 服务发现

    Redola.Rpc 解决了什么问题? Redola.Rpc 是一个使用 C# 开发的 RPC 框架,代码开源在 GitHub 上.目前版本仅支持 .NET Framework 4.6 以上版本,未来 ...

  4. 微服务(入门三):netcore ocelot api网关结合consul服务发现

    简介 api网关是提供给外部调用的统一入口,类似于dns,所有的请求统一先到api网关,由api网关进行指定内网链接. ocelot是基于netcore开发的开源API网关项目,功能强大,使用方便,它 ...

  5. .NET Core微服务实施之Consul服务发现与治理

    .NET Core微服务实施之Consul服务发现与治理   Consul官网:https://www.consul.io Consul下载地址:https://www.consul.io/downl ...

  6. .NetCore Cap 注册 Consul 服务发现

    注册服务发现 需要使用Cap中的UseDiscovery方法 具体用法如下 var capConsulConfig = Configuration.GetSection("CapConsul ...

  7. 基于Docker的Consul服务发现集群搭建

    在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章.本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架 ...

  8. 扩展gRPC支持consul服务发现和Polly策略

    gRPC由于需要用工具生成代码实现,可开发性不是很高,在扩展这方面不是很友好 最近研究了下,进行了扩展,不需要额外的工具生成,直接使用默认Grpc.Tools生成的代理类即可 相关源码在文章底部 客户 ...

  9. 学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片

    目录 第一部分:Consul 基础 1,Consul 介绍 2,安装 Consul Ubuntu/Debian 系统 Centos/RHEL 系统 检查安装 3,运行 Consul Agent 启动 ...

随机推荐

  1. TeamWork#3,Week5,Scrum Meeting 11.6, 11.7, 11.11, 11.12

    11.6:到目前为止基本已完成相关知识的学习,各方面工作都开始进行,一开始进行比较慢. 11.7:项目遇到困难,需要补充相关知识,进度慢了下来. 11.11:各方面工作进展比较顺利,没有什么大问题. ...

  2. YQCB冲刺第二周第二天

    今天的任务依然为实现查看消费明细的功能. 遇到的问题为从数据库中分类读取,实现图标的显示. 站立会议为: 任务面板为:

  3. c# 程序重启设定

    问题情境: 程序随着时间运行,越来越大.暂时想到的两种方法,一是反攻代码,查看占内存大的函数,是不是没有回收.再就是暴力设定程序定时重启. 解决原理: 定时重启:暂设定timer,时间匹配执行rest ...

  4. 安卓开发神器vysor+adb wifi

    准备: 1.vysor需要FQ从google应用商店下载,装在google上,目前知道的免费的vysor的作用是电脑显示手机屏幕并且能操控手机. 步骤:FQ后就能下载了,FQ方法不赘述.

  5. 浅谈GIT

    浅谈GIT: 牛老师提出的git,于我而言,是一个陌生和新鲜的词汇,在此之前我从未听过git,按照老师的要求,我去搜索了关于git的介绍,有些看懂了,但大部分还是不懂得,在介绍中我了解git其实之前使 ...

  6. POJ 2411 Mondriaan's Dream 插头dp

    题目链接: http://poj.org/problem?id=2411 Mondriaan's Dream Time Limit: 3000MSMemory Limit: 65536K 问题描述 S ...

  7. 关于Eclipse上使用可视化设计界面(Java EE 使用可视化界面设计)

    Eclipse下可视化界面实现——WindowBulider安装 第一步: WindowBuilder官方下载安装说明地址:http://www.eclipse.org/windowbuilder/d ...

  8. 08_Java基础语法_第8天(Eclipse)_讲义

    今日内容介绍 1.Eclipse开发工具 2.超市库存管理系统 01Eclipse的下载安装 * A: Eclipse的下载安装  * a: 下载 * http://www.eclipse.org ...

  9. 10th 知识点学习:单元测试

    1.书中所在位置:构建之法第二章,19页—28页. 2.大致内容:书中是以案例的形式引入的介绍,具体讲述什么是单元测试,即程序员小飞进行练习单元测试,经过一系列的代码更改之后,终于成功实现.通过事后小 ...

  10. 【百度】大型网站的HTTPS实践(二)——HTTPS加密算法介绍

    大型网站的HTTPS实践(二)——HTTPS加密算法介绍 原创 网络通信/物联网 作者:AIOps智能运维 时间:2018-11-09 15:09:43  358  0 前言 在上一篇文章中,我们简要 ...