Consul的使用

​ 生产部署中,Consul安装在要注册服务的每个节点上。Consul有两种运行模式:客户端和服务器端,每个Consul数据中心必须至少有一个服务器,负责维护Consul状态,为了确保服务器故障,建议运行3-5台,性能和容错能力较好。客户端模式用来注册服务,运行状况检查并将查询转发到服务器的轻量级进程,客户端必须在Consul数据中心中运行服务的每个节点上运行,因为客户端是有关服务运行状况的真实来源。

Consul 运行命令

$ consul agent -dev #安装完consul后启动代理

$ consul members #查看数据成员方式一,通过gossip协议获取信息

$ curl localhost:8500/v1/catalog/nodes #查看数据成员方式二,请求会转发到server上

$ consul leave #停止代理

Consul服务注册

$ mkdir ./consul.d #创建配置目录

$ echo '{
"service": {
"name": "web",
"tags": [
"rails"
],
"port": 80
}
}' > ./consul.d/web.json #创建服务配置文件

$ consul agent -dev -enable-script-checks -config-dir=./consul.d #重启代理

$ curl localhost:8500/v1/catalog/service/service_name #查询服务

$ curl localhost:8500/v1/health/service/web?passing #对运行状况良好的服务实例进行过滤查询

$ echo '{
"service": {
"name": "web",
"tags": [
"rails"
],
"port": 80,
"check": {
"args": [
"curl",
"localhost"
],
"interval": "10s"
}
}
}' > ./consul.d/web.json #为服务注册健康检查

$ consul reload #重新加载

Consul Service Mesh连接服务

​ 除了使用HTTP API直接提供服务IP地址之外,Consul还可以通过随每个服务实例在本地部署的Sidecar代理将服务彼此连接。这种部署类型(控制服务实例之间的网络流量的本地Sidecar代理)是服务网格。

​ 有时将Consul的服务网格功能称为Consul Connect功能,由于Sidecar代理控制着所有服务到服务的流量,因此他们可以收集有关它们的度量标准并将其导出到Prometheus等第三方聚合器。

注册服务和代理

$ socat -v tcp-l:8181,fork exec:"/bin/cat" #启动socat服务充当上游服务(socat是回显服务)

$ echo '{
"service": {
"name": "socat",
"port": 8181,
"connect": {
"sidecar_service": {}
}
}
}' > ./consul.d/socat.json #注册一个服务 #connect字段将注册一个sidecar代理来处理此后端服务实例的流量

$ consul reload

$ consul connect proxy -sidecar-for socat #consul内置L4代理,启动代理进程,并指定其对应的服务实例和代理注册

注册从属服务和代理
$ echo '{
"service": {
"name": "web",
"connect": {
"sidecar_service": {
"proxy": {
"upstreams": [
{
"destination_name": "socat",
"local_bind_port": 9191
}
]
}
}
}
}
}' > ./consul.d/web.json #注册一个web下游服务,与socat不同的是,connect字段不是空的,它指定了web对上游服务socat的依赖,以及代理侦听的端口

$ consul reload

这将为服务注册一个sidecar代理,该代理web将侦听端口9191,如果我们运行的是真正的Web服务,它将在环回地址上与其代理通信。代理将加密其流量,并通过网络将其发送到socat服务的sidecar代理。Socat的代理将解密流量,并将其本地发送到端口8181上的环回地址上的socat。由于没有Web服务在运行,因此将通过在我们指定的端口上与其代理进行对话来假装为Web服务(9191)。

$ consul connect proxy -sidecar-for web #使用sidecar注册中的配置启用web代理

至此我们在端口9191上可以连接socat服务并进行通信。

控制服务之间的通信

上面服务连接成功是因为我们在-dev开发模式下,ACL系统为“全部允许”。

$ consul intention create -deny web socat #创建一个意图拒绝web到socat的访问

$ consul intention delete web socat #删除意图

将数据存储在Consul KV中

​ 除了提供服务发现,运行状况检查和保护网络流量外,Consul还包含一个密钥值存储,可以使用它来动态配置应用程序,协调服务,管理领导者选举或充当Vault的数据后端。

新增

$ consul kv put redis/config/minconns 1

$ consul kv put -flags=42 redis/config/users/admin abcd1234

查询

$ consul kv get redis/config/minconns

$ consul kv get -detailed redis/config/users/admin #输出详细信息

$ consul kv get -recurse #输出所有密钥 k:v形式,字典序

删除

$ consul kv delete redis/config/minconns

$ consul kv delete -recurse redis #删除所有redis开头的密钥

修改

$ consul kv put foo bar #原有信息会被覆盖

Consul数据中心

​ 当新的agent启动的时候,它们之间无感知,要将新代理添加到现有数据中心,需要为其提供数据中心中任何其他代理的IP地址,新的代理会加入数据中心,它们之间通过gossip协议通信。

搭建环境

​ 可以通过虚拟机来模拟分布式环境。

启动代理商

​ 下面是consul启动时一些参数介绍:

​ -server:以服务器模式启动

​ -bootstrp-expect:Consul服务器数据中心总共应该有多少台服务器

​ -node:节点名称

​ -bind:该代理将侦听其他领事成员进行通信的地址。

​ -data-dir:告诉consul代理它们应将状态存储在哪里

​ -config-dir:配置文件目录。默认/etc/consul.d

$ consul agent \
-server \
-bootstrap-expect=1 \
-node=agent-one \
-bind=172.20.20.10 \
-data-dir=/tmp/consul \
-config-dir=/etc/consul.d
$ consul agent \
-node=agent-two \
-bind=172.20.20.11 \
-enable-script-checks=true \
-data-dir=/tmp/consul \
-config-dir=/etc/consul.d

​ 在两个节点分别运行上述命令后,两个代理仍然彼此不了解,各自组成自己的但节点数据中心。

Join the agents

​ 在Consul服务器上运行命令 $ consul join 172.20.20.11。没有服务器,client无法运行,所有数据中心必须至少有一个在服务器模式下运行的代理,Consul才能正常运行。

​ 提示:要加入数据中心,Consul代理只需要了解其他现有成员(可以是客户端或服务器)即可。加入数据中心后,代理会自动彼此闲聊以传播完整的成员资格信息。

停止代理

​ 在运行它的终端窗口中通过Ctrl-c或发出consul leave命令停止代理。

Consul的使用的更多相关文章

  1. Consul 服务注册与服务发现

    上一篇:Mac OS.Ubuntu 安装及使用 Consul 1. 服务注册 对 Consul 进行服务注册之前,需要先部署一个服务站点,我们可以使用 ASP.NET Core 创建 Web 应用程序 ...

  2. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  3. 使用C# 和Consul进行分布式系统协调

    随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.今天我们就来看看如何使用C# ,利用开源对分布式服务 ...

  4. 分布式服务注册和发现consul 简要介绍

    Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架 ...

  5. 第二章 consul的安装和启动

    安装环境: mac:64bit(查看mac位数:打开终端-->"uname -a") consul_0.6.4_darwin_amd64.zip和consul_0.6.4_w ...

  6. 应用.Net+Consul维护RabbitMq的高可用性

    懒人学习的过程就是工作中老大让干啥让做啥就研究研究啥,国庆放假回来的周末老大通过钉钉给我布置了个任务, RabbitMQ高可用解决方案,我想说钉钉太坑了: 这是国庆过后9号周日晚上下班给的任务,我周一 ...

  7. Consul的一个更新:服务端节点故障后重连

    研究了一段时间Consul,想写个攻略来着,但太赖了而且表达能力非正常人...今天发现HashiCorp果然接纳大众意见改了点东西.. 场景是: 假如Consul集群内有三个Server Node 时 ...

  8. 搭建consul 集群

    1.   准备工作 a)      启动三台虚拟机 s1:10.1.7.141 s2:10.1.7.139 s3:10.1.7.138 b)      每台机器上在 /home新建文件夹 mkdir ...

  9. Centos 7 Docker、docker-compose、Registrator、Consul、Consul Template和Nginx实现高可扩展的Web框架

    安装所需软件 Docker Docker-compose 配置docker-compose.yml文件内容如下: #load balancer will automatically update th ...

  10. Consul Windows 安装

    下载文件https://www.consul.io/downloads.html, 解压完毕后只有一个consul文件 consul 启动一个 Agent consul agent -server - ...

随机推荐

  1. 网站滑到指定的位置给div添加动画效果

    <!DOCTYPE html> <html> <head> <style> .anim-show { width:100px; height:100px ...

  2. 安装卸载nginx

    http://www.nginx.cn/install ubuntu和debain下的apt方式安装软件很方便,特别是对于新手安装和卸载nginx. 由于nginx不能动态添加模块,所以会经常安装和卸 ...

  3. Unity减少构建安装包的体积(210MB减小到7MB)

    概述 项目简介 由于是公司内做的项目,不方便开源,就只分享优化过程吧. 项目信息 逐日是一个移动端单机小游戏,使用Unity开发,目前已将项目使用的Unity升级到2019.4.14f1c1 (3e5 ...

  4. 配置Nginx 扩展实现图片剪裁

    在此之前需要安装ngx_http_image_filter_module,如果是采用的Docker的话可以看看我历史文章. 然后修改配置文件,增加几个location模块,配置如下,仅供参考 serv ...

  5. 一:robot framework环境安装

    1.安装robot framework: 打开cmd进入dos下,输入 pip install robotframework Microsoft Windows [版本 10.0.18362.267] ...

  6. 深度学习论文翻译解析(十五):Densely Connected Convolutional Networks

    论文标题:Densely Connected Convolutional Networks 论文作者:Gao Huang Zhuang Liu Laurens van der Maaten  Kili ...

  7. 使用@RequestBody注解获取Ajax提交的json数据

    最近在学习有关springMVC的知识,今天学习如何使用@RequestBody注解来获取Ajax提交的json数据内容. Ajax部分代码如下: 1 $(function(){ 2 $(" ...

  8. 推荐系统实践 0x0a 冷启动问题

    什么是冷启动问题 如何在没有大量用户数据的情况下设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动问题.冷启动问题主要分为三类: 用户冷启动 物品冷启动 系统冷启动 下面我们将 ...

  9. 如何破解QQ闪照

    1.如何下载 通过公主公众号 "全是软件" 然后输入 294 即可获得下载链接 https://qsrj.lanzous.com/iU4Hddnnmne 目前的闪照破解工具只能破解 ...

  10. Spring Boot 中使用 Spring Security, OAuth2 跨域问题 (自己挖的坑)

    使用 Spring Boot 开发 API 使用 Spring Security + OAuth2 + JWT 鉴权,已经在 Controller 配置允许跨域: @RestController @C ...