================================
©Copyright 蕃薯耀 2021-03-05
http://fanshuyao.iteye.com/
一、Consul下载地址:
https://www.consul.io/downloads
Windows:consul_1.9.3_windows_amd64.zip
Linux:consul_1.9.3_linux_amd64.zip
二、Windows Consul安装和使用
1、以windows为例,解压 consul_1.9.3_windows_amd64.zip 到 D:\0soft\consul_1.9.3_windows_amd64,文件夹有一个exe文件(consul.exe)
2、配置环境变量,将Consul的路径:D:\0soft\consul_1.9.3_windows_amd64配置到系统PATH路径中
3、打开cmd命令窗口,在窗口输入:consul -v或者consul --version查看版本
consul -v
C:\Users\xxx> consul -v
Consul v1.9.3
Revision f55da9306
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
4、打开cmd命令窗口,在窗口输入:consul agent -dev启动consul(开发模式)
consul agent -dev
5、consul的默认端口是8500,通过浏览器打开:http://localhost:8500访问Consul管理后台
http://localhost:8500
6、通过cmd命令窗口查看members
consul members
C:\Users\liqiongy>consul members
Node Address Status Type Build Protocol DC Segment
xxx-xxxxx-10 127.0.0.1:8301 alive server 1.9.3 2 dc1 <all>
7、关闭Consul命令:
consul leave
8、重载Consul命令:
consul reload
三、Consul在微服务项目中使用
1、在pom文件中引入Consul依赖(服务提供者和消费者都需要引入)
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> <version>2.2.6.RELEASE</version> </dependency>
2、服务提供者,在application.properties文件配置Consul
server.port=8631 spring.application.name=SPRINGCLOUD-CONSUL-CLIENT-SERVICE #consul服务访问的地址:127.0.0.1或者localhost spring.cloud.consul.host=127.0.0.1 #consul服务访问的端口,默认端口就是8500 spring.cloud.consul.port=8500 spring.cloud.consul.discovery.service-name=${spring.application.name} #设置实例id,默认是项目的名称 spring.cloud.consul.discovery.instance-id=consul-8631 #显示客户端的ip地址 spring.cloud.consul.discovery.prefer-ip-address=true
3、服务提供者,服务请求
import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ConsulClientController { @Value("${server.port}") private String serverPort; @RequestMapping("/consul") public Result consul() { return Result.ok("consul端口:" + serverPort); } }
4、服务消费者,在application.properties文件配置Consul
server.port=8632 spring.application.name=SPRINGCLOUD-CONSUL-WEB #consul服务访问的地址 spring.cloud.consul.host=127.0.0.1 #consul服务访问的端口 spring.cloud.consul.port=8500 spring.cloud.consul.discovery.service-name=${spring.application.name}
5、服务消费者,服务请求
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class ConsulController { //服务提供者的服务地址 private String serviceUrl = "http://SPRINGCLOUD-CONSUL-CLIENT-SERVICE"; @Autowired private RestTemplate restTemplate; @RequestMapping(value="/getConsul", produces = MediaType.APPLICATION_JSON_VALUE) public Result getConsul() { Result result = restTemplate.getForObject(serviceUrl + "/consul", Result.class); return result; } }
6、RestTemplate配置(服务消费者端)
import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class RestConfig { //@LoadBalanced注解实现负载均衡 @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } } 四、测试服务消费者请求服务提供者的服务 浏览器打开服务消费的请求地址: http://127.0.0.1:8632/getConsul 请求返回的结果: { "result": true, "timestamp": "2021-03-04 15:14:17", "msg": "操作成功。", "datas": "consul端口:8631" }
五、Linux yum安装Consul,Linux yum安装consul
1、安装yum-utils
yum install -y yum-utils
2、配置consul的下载仓库:
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
必须要有此步,不然直接安装会因为在默认仓库找不到,导致安装失败:
[root@host-14 bin]# yum -y install consul
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
没有可用软件包 consul。
错误:无须任何处理
3、Linux yum安装consul(consul-1.9.3-1.x86_64.rpm),106M,下载很慢
sudo yum -y install consul
安装成功:
Running transaction
正在安装 : consul-1.9.3-1.x86_64
验证中 : consul-1.9.3-1.x86_64
已安装:
consul.x86_64 0:1.9.3-1
完毕!
4、安装完成后,consul检查版本号
consul -v
[root@host-14 bin]# consul -v
Consul v1.9.3
Revision f55da9306
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
5、Linux启动consul:
最简单的启动(后台管理不能访问,没启动ui):
consul agent -dev
启动2(建议使用这个启动。0.0.0.0表示不绑定客户端IP地址,不然只能使用特定的IP访问):
consul agent -dev -ui -node=consul-dev-14 -client=0.0.0.0
启动3:绑定client地址(Linux不能使用consul kv put my/aa aa命令插入数据,因为127.0.0.1访问不了)
mkdir -p /java/data/consul consul agent -dev -ui -data-dir=/java/data/consul -node=consul-dev-14 -client=192.168.170.14
consul绑定client地址后出错:dial tcp 127.0.0.1:8500: connect: connection refused
[root@host-14 ~]# consul kv put xxx/config/num 1
Error! Failed writing data: Put "http://127.0.0.1:8500/v1/kv/xxx/config/num": dial tcp 127.0.0.1:8500: connect: connection refused
常用参数:
-http-port 默认是8500 -client:客户端模式,http dns,默认127.0.0.1,回环令牌网址 -data-dir:状态数据存储文件夹,所有的节点都需要。文件夹位置需要不收consul节点重启影响,必须能够使用操作系统文件锁,unix-based系统下,文件夹文件权限为0600,注意做好账户权限控制, -dev:开发模式,去掉所有持久化选项,内存服务器模式。 -ui:内置web ui界面。 -bind:绑定的内部通讯地址,默认0.0.0.0,即,所有的本地地址,会将第一个可用的ip地址散播到集群中,如果有多个可用的ipv4,则consul启动报错。[::]ipv6,TCP UDP协议,相同的端口。防火墙配置。 -bootstrap:启动模式,此模式下,节点可以选举自己为leader,一个数据中心只能有一个此模式启动的节点。机群启动后,新启动的节点不建议使用这种模式。 -bootstrap-expect:设定一个数据中心需要的服务节点数,可以不设置,设置的数字必须和实际的服务节点数匹配。consul会等待直到数据中心下的服务节点满足设定才会启动集群服务。初始化leader选举,不能和bootstr- ap混用。必须配合-server配置。
6、测试consul启动,打开Linux新窗口,输入请求命令
curl localhost:8500/v1/catalog/nodes
或者浏览器打开(注意:后台管理不兼容IE浏览器,请使用Chrome浏览器打开):
http://192.168.170.14:8500/
或者查看进程:
ps -ef | grep consul
返回结果:
[root@host-14 ~]# curl localhost:8500/v1/catalog/nodes
[
{
"ID": "914be537-f613-27a4-497a-2e7f9706f50c",
"Node": "host-14",
"Address": "127.0.0.1",
"Datacenter": "dc1",
"TaggedAddresses": {
"lan": "127.0.0.1",
"lan_ipv4": "127.0.0.1",
"wan": "127.0.0.1",
"wan_ipv4": "127.0.0.1"
},
"Meta": {
"consul-network-segment": ""
},
"CreateIndex": 11,
"ModifyIndex": 13
}
]
7、关闭Consul
consul leave
或者
kill -9 PID(Consul进程ID)
成功关闭结果:
[root@host-14 ~]# consul leave
Graceful leave complete
六、Consul使用KV命令
1、增加数据
consul kv put xxx/config/num 1
响应结果:
Success! Data written to: xxx/config/num
curl 192.168.170.14:8500/v1/kv/xxx/aa
覆盖之前的键增加(即修改):
consul kv put xxx/config/num 20
增加字符串数据
consul kv put xxx/config/str thisIsString
2、查询数据
consul kv get xxx/config/num
查询数据(详情)
consul kv get -detailed xxx/config/num
查询所有键数据
consul kv get -recurse
3、删除数据
consul kv delete xxx/config/str
删除所有以xxx开头的键数据:
consul kv delete -recurse xxx
4、修改已经存在的数据,就是使用新数据覆盖之前的键
consul kv put xxx/config/num 30
七、Consul常用option选项命令
-bootstrap:启动模式,此模式下,节点可以选举自己为leader,一个数据中心只能有一个此模式启动的节点。机群启动后,新启动的节点不建议使用这种模式。 -bootstrap-expect:设定一个数据中心需要的服务节点数,可以不设置,设置的数字必须和实际的服务节点数匹配。consul会等待直到数据中心下的服务节点满足设定才会启动集群服务。初始化leader选举,不能和bootstr- ap混用。必须配合-server配置。 -bind:绑定的内部通讯地址,默认0.0.0.0,即,所有的本地地址,会将第一个可用的ip地址散播到集群中,如果有多个可用的ipv4,则consul启动报错。[::]ipv6,TCP UDP协议,相同的端口。防火墙配置。 -client:客户端模式,http dns,默认127.0.0.1,回环令牌网址 -config-file:配置文件位置 -config-dir:配置文件所在文件夹,会加载其下所有配置文件,.json或者.hcl文件,加载顺序为字母表顺序;可用配置多个此配置,从而加载多个文件夹,子文件夹的配置不会被加载。 -config-format:配置文件格式,配置了,则加载相应个是的文件。不配置,则consul自动识别。 -data-dir:状态数据存储文件夹,所有的节点都需要。文件夹位置需要不收consul节点重启影响,必须能够使用操作系统文件锁,unix-based系统下,文件夹文件权限为0600,注意做好账户权限控制, -datacenter:数据中心名称,默认dc1,一个数据中心的所有节点都必须在一个LAN中。 -dev:开发模式,去掉所有持久化选项,内存服务器模式。 -disable-host-node-id:不使用host信息生成node ID,适用于同一台服务器部署多个实例用于测试的情况。随机生成nodeID -dns-port:v7.0以后,自定义dns 端口,覆盖默认8600 -enable-script-checks:是否允许使用脚本进行健康检查,默认false,最好配置enable acl -encrypt:consul网络通讯加密key,base64加密,16比特;consul keygen产生。集群中的每个实例必须提供相同的,只需提供一次,然后会保存到数据文件。重启自动加载。consul节点启动后提供,会被忽略。 -hcl:添加hcl格式配置,和已有的配置合并。可以使用多个此配置。 -http-port:http api端口,覆盖默认的8500。适用于云环境指定。 -log-file:日志记录文件,如果没有提供文件名,则默认Consul-时间戳.log -log-level:日志级别,默认info,包含:trace,debug,info,warn,err;consul monitor监控 -log-rotate-bytes:新日志文件生成大小阈值。 -log-rotate-rotation:新日志生成时间阈值 -join:需要加入的其它节点地址,可以多次使用,加入多个节点。 -retry-join:会进行加入重试,适用于认定加入节点最终会正常的情况。ipv4,ipv6,dns -retry-interval:上述,重试间隔,默认30s -retry-max:重试次数,默认0,无限次重试 -join-wan, -retry-join-wan, -retry-interval-wan, -retry-max-wan -node:节点名称,默认主机名 -node-id:节点ID, -pid-file:consul 存储 pid 的文件位置,用于主动发信号。如停止节点,重载配置等。 -protocol:使用的协议,升级时使用。consul -v查看协议版本 -raft-protocol:使用raft协议版本,默认3 -raft-snapshot-threshold:raft执行快照,提交次数阈值。一般不需要设置,io密集型应用可以调高。避免所有的节点同一时间快照。此值过大,会造成相应日志文件变大,节点重启恢复会耗费更长时间。1.1.0后,默认1- 6384,之前8192. -raft-snapshot-interval:执行快照间隔,影响类似上个配置,1.1.0后默认30s,之前5s。 -rejoin:节点会尝试重新加入集群。 -server:服务端节点模式。 -server-port:服务端RPC端口,v1.2.2后提供。 -non-voting-server:服务节点不参与选举,接受日志复制,用于横向扩展,服务查询请求。(类比zookeeper 观察者节点) -syslog:linux OSX系统,配置日志输出到系统日志。 -ui:内置web ui界面。 -ui-dir:web ui 资源文件夹,使用此配置,则不需也不能使用再-ui配置
(如果文章对您有所帮助,欢迎捐赠,^_^)
================================
©Copyright 蕃薯耀 2021-03-05
http://fanshuyao.iteye.com/
相关推荐
在本示例中,我们将深入探讨如何将Spring Cloud与Consul、Mybatis和Jersy集成,以构建一个高效的服务提供方系统。首先,我们来理解每个组件的关键作用。 Spring Cloud是一个微服务开发工具集,它简化了配置、服务...
在本文中,我们将深入探讨基于Java的Spring Cloud与Consul集成的应用示例,以及如何构建一个包含Feign和Hystrix的微服务架构。标题"springcloud-consul DEMO"表明我们将关注的是Spring Cloud框架与Consul服务发现和...
Spring Cloud Consul 是 Spring Boot 应用提供了 Consul 的支持,Consul 既可以作为注册中心使用,也可以作为配置中心使用。Consul 是 HashiCorp 公司推出的开源软件,提供了微服务系统中的服务治理、配置中心、控制...
5. **多数据中心支持**:Consul设计之初就考虑到了多数据中心的场景,因此Spring Cloud Consul也能支持跨数据中心的服务发现和配置管理。 在实际应用中,结合Jersy(一个实现Java RESTful Web Services的轻量级框架...
**Spring Cloud Consul Consumer** 是一个基于Spring Cloud框架构建的应用,它主要负责作为微服务架构中的客户端,通过Consul这个服务发现和配置管理工具来发现并调用其他服务。在这个项目中,Consul充当了服务注册...
在本示例中,我们将深入探讨如何将Spring Cloud与Consul结合使用,构建一个服务消费方的应用,并且集成JSP(JavaServer Pages)和Mybatis作为数据访问层。这个项目的核心在于利用Spring Cloud的发现机制,通过Consul...
Spring Cloud作为微服务解决方案的一部分,提供了多种服务发现工具,其中Consul是其中一个流行的选择。本文将深入探讨Spring Cloud如何整合Consul实现服务注册。 Consul是由HashiCorp公司开发的一款分布式系统服务...
Spring Cloud Consul 是 Spring Cloud 的一个子项目,它为 Spring Boot 应用提供了与 Consul 集成的工具,使得在 Spring 应用中可以方便地利用 Consul 进行服务发现和配置管理。 在Spring Cloud Consul中,服务提供...
在开发过程中,利用"consul.bat"和"consul_1.5.1_windows_amd64.zip"等工具,开发者可以在本地快速搭建Consul环境,进行微服务的调试和测试,从而更好地理解和掌握Spring Cloud Consul的使用。 通过深入理解Spring ...
在`spring-cloud-lidong-example`这个示例项目中,你可以看到具体的代码实现,包括如何配置和使用Nacos或Consul进行服务注册与发现。通过研究这个例子,你可以更好地理解这两个工具在SpringCloud中的实际应用。
在微服务架构中,Spring Cloud Consul 是一个重要的组件,用于服务发现和服务管理。Consul 提供了健康检查、KV存储、多数据中心的解决方案。在这个示例中,我们结合了Feign和Hystrix,来实现优雅的服务调用和容错...
Spring Cloud 服务提供方,向Consul注册中心注册,支持服务部署在docker中(eureka暂不支持,严格地说是注册的信息无效) 修改application.properties 和bootstrap.properties
在使用Spring Cloud Consul作为服务发现机制时,可能会遇到服务注册后被标记为"critical"状态的问题。这通常意味着Consul无法正确地进行健康检查,从而导致服务被认为不健康。解决此类问题的关键在于理解Consul如何...
SpringCloud consul-api-1.4.5.jarSpringCloud consul-api-1.4.5.jar
1. **Spring Cloud Consul**:Consul是一个服务网格工具,用于实现服务发现、健康检查、KV存储和多数据中心的解决方案。在Spring Cloud中,Consul作为服务注册与发现的工具,使得服务实例可以在启动时自动注册到...
在Spring Cloud生态系统中,Consul是一个广泛使用的服务发现与配置管理工具。本项目"springcloud-consul-consumer"旨在演示如何在Spring Cloud应用中将Consul作为服务注册中心,实现服务消费者的配置。以下是对这个...
最新版consul,在所在盘符路径上输入cmd进入,输入consul.exe agent -dev启动,之后在浏览器中输入localhost:8500/即可看到consul管理界面,将consul作为注册中心讲解请关注本人博客
spring-cloud-consul-example, spring 云领事示例是microservices系统的示例 spring-cloud-consul-example自述文件:英语 | 中文。spring-cloud-consul-example是microservices系统的一个例子。系统包含收费管理。...