consul

springcloud整合consul注意点

  1. 必须依赖有
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <!-- 必须有健康检查,因为consul就是通过该依赖提供的健康检查接口的返回值来判断服务是否可用的,没有改依赖,consul会认为服务挂掉了-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

如果需要将yaml配置托管到consul注册中心则可以在添加consul-config依赖

  1. bootstrap.yaml文件必有,配置如下:
# 必须要有bootrap.yaml文件,否则consul客户端的连接地址的默认的127.0.0.1,即application.yaml中配置的consul的地址和端口不会生效
spring:
  cloud:
    consul:
      host: 192.168.177.200
      port: 8500
  1. 如下配置项必须设为true,这样consul会使用ip:port访问服务,默认是false,即通过host:port访问,比如我电脑host是DESKTOP-MHA5LGK,那么最后就是DESKTOP-MHA5LGK:9006,但基本这种情况是调不通的
spring.cloud.consul.prefer-ip-address=true

shell脚本批量删除consul的无效/失效服务

shell脚本批量删除consul的无效/失效服务

spring.cloud.consul配置详解

spring:
    cloud:
        consul:
	        enabled: true //是否启用consul
            host: ip // consul server的ip地址
            port: 8500 // consul运行的端口号
            ribbon:
                enabled: true //是否启用ribbon进行客户端负载均衡
            config:
                enable: true
            discovery:
                heartbeat: //配置是否进行health check,以及频率
                    enabled: true
                    ttlValue: 10
                enable:true // 是否去发现其他服务
                register:true //是否将自身服务注册到consul中
                tags: tagName //为同名的服务打tag用于区分
                default-query-tag: tagName
                query-passing: true
                preferIpAddress: true # 默认是false(比如我电脑的host是DESKTOP-MHA5LGK,那么consul记录的就是DESKTOP-MHA5LGK:9006,即会通过该方式访问

query-passing:config client可以通过配置的url或者服务发现的方式拉取config server的配置。如果服务发现的方式来拉取配置,默认情况下ConsulDiscoveryClient获取服务的时候是根据服务id获取所有服务节点,如果获取了down的服务,则会造成拉取配置失败。ConsulDiscoveryProperties的默认设置queryPassing=false,即返回所有的服务,包括down掉的。通过配置改为true则可返回所有健康检查通过的服务。
preferIpAddress:ConsulDiscoveryProperties这个类是consul服务发现的配置类。默认情况下preferIpAddress值为false,也就是通过host来进行服务地址的注册和检查(即DESKTOP-MHA5LGK:9006),但是当环境不支持host访问时就会出问题,所以需要配置preferIpAddress=true(为true那么访问方式就是192.168.43.38:9000)。

consul界面的配置不生效

我启动服务指定的是common配置文件,consul默认的是application环境,
在这里插入图片描述
其实等同于unfied-file-service,application所以这里面所有的配置只是替换了spring,

没有替换spring-common,而spring-common里面是最高的。所以应该这样,unfied-file-service,common,那么consul的配置就会生效。其实配置不生效consul框架也没有打印日志吗

consul命令行

https://www.jianshu.com/p/339cd3d1d7c4
列出所有的数据中心: ./consul catalog datacenters
列出所有的节点:./consul catalog nodes
列出所有的服务:./consul catalog services

consul接口(curl请求的,linux命令行的)

consul常用API接口

get http://192.168.177.200:8500/v1/agent/services 返回所有服务的注册信息
put http://192.168.177.200:8500/v1/agent/service/deregister/stock-service-9011 删除一个服务

consul创建配置文件

config/demo,local/data
config/demo,test/data
config–配置目录
demo是项目注册名即spring.application.name
local是profiles
data是目录


config:默认值,也可以通过如下配置

---
spring:
  profiles: local
  cloud:
    consul:
      host: 127.0.0.1
      port: 8500
      discovery:
        healthCheckPath: /actuator/health
        prefer-ip-address: true
      config:
        fail-fast: false
        enabled: true
        format: YAML  # 默认值
        prefix: config  # 默认值
        defaultContext: application # 默认值
        profileSeparator: ','  # 默认值
        data-key: data  # 默认值

consul配置中心

参考链接

  1. jar,外部,consul的yaml都有同一key,读取优先级从高到低【consul>外部> jar】
  2. 外部配置了同名yaml文件,那么jar中的同名yaml就会完全失效
  3. key的优先级:jar>外部>consul

jar ----consul

外部—consul

jar —外部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值