天天看点

spring cloud config采坑笔记

一直都局限网上Demo一样的配置中心学习深度,没有实际项目经验,今天好不容易接手一个spring cloud项目的运维,可以好好玩玩,学习学习。

背景:

    微服务几十个,本地开发环境不想所有服务都启动,本地CPU与内存也抗不住,于是想本地只启动要修改的服务,假设为A服务,注册中心和其他所有服务用SIT环境的,由于没有做负载均衡,所以把SIT环境的A服务停掉,启动本地的A服务,注册到SIT环境,理论上是可行的,

实际上遇到各种坑:

    1.把A服务的注册中心改成SIT环境的,结果发现启动报错,一看各种配置参数找不到,肯定是获取不到配置中心的参数,日志明明打印了:Fetching config from server at http://*.*.*.*:9999/config-server,地址是对的,可就是获取不到,对照其他的,好像也没配错。

解决办法:在A服务配置加上日志信息, debug:true,重大发现,输出RestTemplate-http get http://*.*.*.*:9999/config-server/serviceA/dev,明显获取配置文件URL不对,肯定是配错了。

Spring:

  application:

     name: serviceA

  profiles:

  #本服务激活哪个环境,为SIT

  active:${DEPLOYMODE:SIT}  

  cloud:

    config:

       discovery:

         enabled: true

         #配置中心的application Name 

         service-id: config-server

         #获取配置中心哪个环境的配置文件,注意SIT中也可以改成${DEPLOYMODE:Dev},获取Dev的配置。

       profile: ${DEPLOYMODE:SIT}

       fail-fast: true

       #大坑就在这里,下面这个name是获取配置文件的名称,并不是所有的服务都需要加载所有的配置,bootstrap-       config,common这两个是公共配置,serviceA是本服务配置,只要加载这几个就可以吧,之前name写成了: config-server,以为跟service-id是一个东西,所以老找不到配置。

       name: bootstrap-config,common,serviceA

     main:

       allow-bean-definition-overriding: true

debug: true

最总获取配置中心的日志为:

RestTemplate-http get http://*.*.*.*:9999/config-server/bootstrap-config,common,serviceA/SIT,服务终于可以正常启动了