官网地址: https://www.consul.io/intro/index.html spring cloud 集成consul : https://www.springcloud.cc/spring-cloud-consul.html consul的启动安装 下载文件,解压,启动命令 consul agent -dev 访问地址: http://localhost:8500/ ? ? SpringCloud 整合 Consul 1 导入pom文件 <! --SpringCloud consul-server 注册中心consul--> <dependency> <groupId>org.springframework.cloud > 2 编写yml文件 spring: application: name: cloud-consumer-order cloud: consul: # consul
This can be used by an operator to inspect data in Consul or toeasily pipe data into processes without Additionally, the CONSUL_INDEX environment variable will beset. This maps to theX-Consul-Index value in responses from the HTTP API. 1.1.2 GlobalParameters 内部API:/v1/catalog/nodes 输出信息: [ { "Node": "nyc1-consul-1", "Address": "192.241.159.115" } , { "Node": "nyc1-consul-2", "Address": "192.241.158.205" }, { "Node": "nyc1-consul
一、Consul 能做什么? Consul包含很多组件,总体来数,Consul是一种服务发现和配置工具。 3、K/V存储:动态配置、一致性协调、leader选举、特征标记等,Consul的HTTP的API使开发者更好的使用。 4、多数据中心:Consul创造性的提供了多数据中心机制。 Consul是分布式的(P),高可用系统(A)。 每一个Consul服务提供节点,都运行着一个Consul代理,Consul代理并不意味着必须发现其它的服务,或者进行相应的数据操作,代理只需要对健康检查负责。 代理连接一个或者多个Consul服务端,Consul服务端存储,复制数据,选取leaader。虽然Consul服务端可以单例运行,但是通常建议每个数据中心3到5个实例集群运行,以防数据丢失。
安装consul 下载地址 https://releases.hashicorp.com/consul/,将下载的consul.exe 文件目录添加到系统环境中,然后执行 consul agent -dev 启动,默认监听8500端口,可以访问 http://127.0.0.1:8500/ 进行查看 在golang项目中安装consul go get github.com/hashicorp/ consul 代码: server.go 注册服务 package main import ( "fmt" consulapi "github.com/hashicorp/consul/api" fmt.Println(err) } client.go 发现可用服务 package main import ( "fmt" consulapi "github.com/hashicorp/consul [0].Service.Port) } 删除服务 destroy.go package main import ( "fmt" consulapi "github.com/hashicorp/consul
Consul是什么? ? Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。Consul是分布式的、高可用的、 可横向扩展的。 Consul架构 ? Consul是一个分布式高可用的系统。 consul_0.8.5_linux_amd64.zip $ mv consul /usr/local/bin/ 安装完即可执行命令验证: $ consul usage: consul [--version watch Watch for changes in Consul 开发模式 consul 开发者模式,可以快速开启单节点的 consul服务,具有完整功能,方便开发测试。 ", "tags": ["nginx"], "port": 80}}' | tee ~/consul/etc/web.json// 重启consul,并指定配置文件目录consul agent -dev
集群部署 节点IP 节点名称 192.168.1.181 consul-01 192.168.1.182 consul-02 192.168.1.183 consul-03 节点一配置 # 创建目录 mkdir -p /data/consul/{data,conf,bin,logs} # 下载consul压缩包,解压到/data/consul/bin/目录下 # 创建配置文件 vim /data systemctl start consul 启用 ACL 访问控制 # 重新启动consul,在任意一节点上初始化consul acl [root@i-lra7lmuy ~]# consul acl /consul consul # 编辑配置文件 vim /data/consul/conf/consul.json { "bind_addr": "192.168.1.100", -2c4b-849a7195e3c9 consul.snap # 查看备份consul状态文件 consul snapshot inspect consul.snap # 还原consul服务器状态
简介 在阅读本文前我想您应该对微服务架构有一个基本的或者模糊的了解 Consul是一个服务管理软件,它其实有很多组件,包括服务发现配置共享键值对存储等 本文主要讲解Consul的服务注册服务发现以及集群的配置 是长期运行在每个consul集群成员节点上守护进程。 如果你在一台服务器上运行了一个server,它会默认有一个client绑定到server上,并且地址是127.0.0.1 consul安装 consul下载地址:https://www.consul.io 或者可以把consul的目录路径加入到Path环境变量中,就不用每次到目录下打命令了 启动consul 上面说过,consul可以以client和server的方式启动 Server:consul agent -ui-dir=C:\consul\dist 把-server去掉就是client模式了 consul agent:启动consul的命令,要么是server要么是client -bootstrap-expect
集群 补充一下单点服务器Consul集群的步骤,我的虚拟机ip 192.168.88.144,配置3个节点, Consul v1.12.1 server01@server01-virtual-machine :~$ consul version Consul v1.12.1 wget https://releases.hashicorp.com/consul/1.12.1/consul_1.12.1_darwin_arm64 .zip unzip consul_1.12.1_darwin_arm64.zip mv consul /usr/local/bin/consul 目录: ├── client1 ├── client2 /server1/data", "log_level":"INFO", "log_file":"/home/server01/soft/consul/server1/log/consul.log /server2/data", "log_level":"INFO", "log_file":"/home/server01/soft/consul/server2/log/consul.log
Note: 在有多个IP的环境下,必须指定IP,否则会失败 [root@h104 consul]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever [root@h104 consul ]# consul agent -dev ==> Starting Consul agent... ==> Error starting agent: Failed to get advertise address [root@h104 consul]# 启动 consul 后,系统会监听在一些端口 [root@h104 ~]# netstat -tunpea | grep consul tcp 0 0 192.168.100.104:8300 0.0.0.0:* LISTEN 0 47240 11552/consul
上图是官网提供的一个事例系统图,图中的Server是consul服务端高可用集群,Client是consul客户端。consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。 每个Server或Client都是一个consul agent。Consul集群间使用了GOSSIP协议通信和raft一致性算法。 使用Consul也非常简单,基本可以做到开箱即用 这篇文章《使用C# 和Consul进行分布式系统协调 》是在单机上做的, 我们现在要大家一个3节点的集群,本文就是介绍如何搭建一个3节点的Consul /consul join 10.0.0.7 到这里整个consul server 集群就算完成了,可以利用consul members查看集群中包含的node信息。 搭建管理工具 consul自带的WEB UI,Web ui是consul提供的可视化的服务web界面,可以对key/value和服务、节点进行操作 a) 下载consul web ui(包含一个
因为牵扯到自动注册服务,需要在脚本中使用linux命令,所以不使用docker方式启动consul,直接使用下载安装包,命令启动,具体如下: consul最好使用集群方式启动,但考虑到服务器数量少的缘故 下载安装包: wget https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip 解压 unzip consul _1.5.0_linux_amd64.zip cd consul_1.5.0 mv consul /usr/local/bin 创建目录,配置ACL mkdir -p /data/consul.d/ ", //这个可以自定义 "acl_default_policy": "deny", //默认策略所有的都禁止 "acl_down_policy": "extend-cache" } 启动consul并开启 acl验证 consul agent -server -ui -bootstrap-expect=1 -data-dir=/data/consul/ -node=agent-one -advertise
Consul 架构简介 Consul 是一款不错的服务注册与发现工具。 Consul 架构图: ? 图片上 datacenter 分成上下两个部分, 但是这两个部分又不是完全隔离的。 同一个 Consul agent 程序,启动的时候,通过制定不同的参数来运行 Server 和 Client 模式。 目前 Consul 的架构全部升级为 client-Server 模式,服务注册不再向 consul-Server进行注册,而是向服务所在机器的 consul-client 进行注册,通过 Consul-Client 将注册信息同步到 Consul-Server 机器中。 高可用 服务实例向本级别 consul-client 进行注册,如果 consul-client 不可用,只影响 consul-client 所在机器的服务实例,不影响另外一台机器上的实例。
文章目录 1、consul官方架构 2、Concul服务发现的完成流程 1、consul官方架构 Consul支持多数据中心,在上图中有两个数据中心(DateCenter),数据中心之间通过Internet 2、Concul服务发现的完成流程 服务器Server1、Server2、Server4部署Consul Server集群,Server2上的Consul Server节点为Leader。 服务注册到Consul既可以通过HTTP API(8500端口)的方式,也可以通过Consul配置文件的方式。 Consul Client是无状态的,它将注册信息通过RPC转发到Consul Server,服务信息保存在Server的各个节点中,并且通过Raft实现了强一致性。 假设服务器Server6中的ServerD需要访问ServiceB,就先访问本机Consul Client提供的HTTP API,本机Client会将请求转发到Consul Server。
简介 consul是一个服务发现框架 类似的还有zookeeper,eureka,etcd等 作用 服务发现(service discovery) 健康检查(health checking) 配置存储管理 (key/value storage) 可支持任意数量的区域:multi-datacente consul与eureka比较 最大的区别是Eureka保证AP, Consul为CP Consul强一致性 因为Consul的raft协议要求必须过半数的节点都写入成功才认为注册成功 Leader挂掉时,重新选举期间整个consul不可用。保证了强一致性但牺牲了可用性。 服务的健康检查 Euraka 使用时需要显式配置健康检查支持;Zookeeper,Etcd 则在失去了和服务进程的连接情况下任务不健康,而 Consul 相对更为详细点,比如内存是否已使用了90%,文件系统的空间是不是快不足了 多数据中心支持 Consul 通过 WAN 的 Gossip 协议,完成跨数据中心的同步;而且其他的产品则需要额外的开发工作来实现; KV 存储服务 除了 Eureka ,其他几款都能够对外支持 k-v
查看状态 可以使用HTTP API来检查配置 [root@h104 consul]# curl http://localhost:8500/v1/health/state/critical [{"Node ","Output":"","ServiceID":"web","ServiceName":"web","CreateIndex":593,"ModifyIndex":593}][root@h104 consul ]# [root@h104 consul]# ---------- [root@docker ~]# curl http://localhost:8500/v1/health/state/critical 提供了一个简单的键值存储机制,可以使用这个特性来存储动态配置,服务协调,主节点选举和其它一些功能 [root@h104 consul]# curl -v http://localhost:8500/v1 : 1 < X-Consul-Knownleader: true < X-Consul-Lastcontact: 0 < Date: Fri, 18 Mar 2016 16:14:49 GMT < Content-Length
]# [root@h104 consul]# [root@h104 consul]# 查询值 查询用 GET 方法 ? ]# [root@h104 consul]# ---- 删除值 删除用 DELETE 方法 [root@h104 consul]# curl -X DELETE http://localhost ]# [root@h104 consul]# ---- 更新值 更新和存值一样使用 PUT 方法,只是提供一个与原值不同的内容就可以了 [root@h104 consul]# curl http:/ consul]# [root@h104 consul]# curl -X PUT -d 'great' http://localhost:8500/v1/kv/web/key1? ]# [root@h104 consul]#
TIPS •本文基于Consul 1.5.3,理论适用于Consul 1.6及更低版本。 •安装单机版Consul详见:《安装单机版Consul》 知识预热 Consul常用命令 命令 解释 示例 agent 运行一个consul agent consul agent -dev join 将 agent加入到consul集群 consul join IP members 列出consul cluster集群中的members consul members leave 将节点移除所在集群 consul 读取配置文件: consul agent -dev -config-file="consul-config/consul.json" 参考文档 consul agent 有20来个选项,本文只列出了常用选项 consul client 否 node2 192.168.11.145 consul client 是 搭建步骤 •启动node0机器上的Consul(node0机器上执行): consul agent
前言 Consul 是一个服务发现和配置工具 它有如下功能和特性: 服务发现 健康检查 健值存储 多数据中心 Consul 的作用类似于 Zookeeper 或 etcd ,和 etcd 一样也是使用 Go 实现的,也是使用的 Raft 算法 Consul 的架构 Docker Swarm 中使用 Consul 来进行服务发现,这里简单分享一下 Consul 操作的相关基础,详细内容可以参考 官方文档 Tip: 当前的最新版本为 Consul 0.6.4
什么是Consul? Consul是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接。 服务还包括健康检查,以便 Consul 监控不健康的服务。 查询:Consul的基于身份的DNS支持在Consul目录中查找健康的服务。 数据中心是Consul基础设施中可以执行基本Consul操作的最小单元。数据中心至少包含一个Consul服务器代理,实际部署中包含三到五个服务器代理和几个Consul客户端代理。 代理 可通过运行Consul二进制文件来启动Consul代理,它们是实现Consul控制平面功能的守护进程。可以将代理作为服务器或客户端启动。所有节点都要允许代理。参阅Consul代理获取更多信息。 服务器代理 个人理解,服务器代理,即以服务器模式运行Consul代理的节点,对应上图中的Consul Server。Consul服务器代理存储所有状态信息,包括服务和节点IP地址、健康检查和配置。
Consul介绍 Consul是一套开源的分布式服务发现和配置管理系统,支持多数据中心分布式高可用。 解压Consul zip包,复制consul二进制文件到系统PATH中包含的路径下,以确保它可以被执行。 2.1 验证安装 安装Consul后,通过打开新的终端回话并且输入consul是否可用来验证安装是否工作。 通过执行consul你应该可以看到下面类似的输出: $ consul Usage: consul [--version] [--help] <command> [<args>] Available commands 启动Consul 3.1 开发模式运行: $ consul agent -dev ==> Starting Consul agent... ==> Consul agent running!