Consul的使用
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的使用的更多相关文章
- Consul 服务注册与服务发现
上一篇:Mac OS.Ubuntu 安装及使用 Consul 1. 服务注册 对 Consul 进行服务注册之前,需要先部署一个服务站点,我们可以使用 ASP.NET Core 创建 Web 应用程序 ...
- Mac OS、Ubuntu 安装及使用 Consul
Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...
- 使用C# 和Consul进行分布式系统协调
随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.今天我们就来看看如何使用C# ,利用开源对分布式服务 ...
- 分布式服务注册和发现consul 简要介绍
Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,Consul的方案更"一站式",内置了服务注册与发现框 架 ...
- 第二章 consul的安装和启动
安装环境: mac:64bit(查看mac位数:打开终端-->"uname -a") consul_0.6.4_darwin_amd64.zip和consul_0.6.4_w ...
- 应用.Net+Consul维护RabbitMq的高可用性
懒人学习的过程就是工作中老大让干啥让做啥就研究研究啥,国庆放假回来的周末老大通过钉钉给我布置了个任务, RabbitMQ高可用解决方案,我想说钉钉太坑了: 这是国庆过后9号周日晚上下班给的任务,我周一 ...
- Consul的一个更新:服务端节点故障后重连
研究了一段时间Consul,想写个攻略来着,但太赖了而且表达能力非正常人...今天发现HashiCorp果然接纳大众意见改了点东西.. 场景是: 假如Consul集群内有三个Server Node 时 ...
- 搭建consul 集群
1. 准备工作 a) 启动三台虚拟机 s1:10.1.7.141 s2:10.1.7.139 s3:10.1.7.138 b) 每台机器上在 /home新建文件夹 mkdir ...
- Centos 7 Docker、docker-compose、Registrator、Consul、Consul Template和Nginx实现高可扩展的Web框架
安装所需软件 Docker Docker-compose 配置docker-compose.yml文件内容如下: #load balancer will automatically update th ...
- Consul Windows 安装
下载文件https://www.consul.io/downloads.html, 解压完毕后只有一个consul文件 consul 启动一个 Agent consul agent -server - ...
随机推荐
- [转载]Redis 持久化之RDB和AOF
原文链接:https://www.cnblogs.com/itdragon/p/7906481.html 温馨提示 在正式数据(当然是非生产环境啦)练习以下操作时,一定一定一定记得备份dump.rdb ...
- Hadoop大数据平台节点的动态增删
环境:CentOS 7.4 (1708 DVD) 工具:MobaXterm 一. 节点的动态增加 1. 为新增加的节点(主机)配置免密码登录.使用ssh-keygen和ssh-copy-id命令(详 ...
- CorelDRAW常用工具之渐变工具
我们在进行宣传单页或者LOGO等等各种平面设计时,颜色的使用是极为重要的一方面.有些新手可能还不知道怎么填充多种颜色的渐变,有的背景色不止2个颜色渐变,而是由多种颜色调成的. 我们在画布上画两个图形, ...
- 基于Python+requests搭建的自动化框架-实现流程化的接口串联
框架产生目的:公司走的是敏捷开发模式,编写这种框架是为了能够满足当前这种发展模式,用于前后端联调之前(后端开发完接口,前端还没有将业务处理完毕的时候)以及日后回归阶段,方便为自己腾出学(mo)习(yu ...
- selenium截图功能
selenium自动化测试完后需要查看值观的结果,或者查操作过程中是否正确,此时需要使用自带的截图功能. 示例1: from time import sleep from selenium impor ...
- SAD DNS--新型DNS缓存中毒攻击
一.DNS基础知识: 1.DNS简介: DNS 域名服务,用于建立 域名与 ip地址的 一对一 映射.DNS 将域名转换为 IP地址,以便浏览器能够加载 Internet 资源. 类似于一个翻译系统, ...
- Alpha冲刺-第四次冲刺笔记
Alpha冲刺-冲刺笔记 这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE2 这个作业要求在哪里 https://edu.cnblogs. ...
- c++11-17 模板核心知识(十二)—— 模板的模板参数 Template Template Parameters
概念 举例 模板的模板参数的参数匹配 Template Template Argument Matching 解决办法一 解决办法二 概念 一个模板的参数是模板类型. 举例 在c++11-17 模板核 ...
- 在html页中添加视频的几种方式
1.avi格式代码片断如下: <object id="video" width="400" height="200" border=& ...
- C#数据结构-二叉树-顺序存储结构
什么是二叉树:每个树的节点只有两个子树的树形结构. 为什么使用顺序存储结构:使用数组存放满二叉树的各结点非常方便,可以根据一个结点的索引号很容易地推算出它的双亲.孩子.兄弟等结点的编号,从而对这些结点 ...