springcloud采用apollo配置时使用本地配置覆盖

Apollo spring apollo springboot namespase_bootstrap

只需要在bootstrap.yml中添加如下配置

apollo.bootstrap.enabled=true

然后在application.properties文件中配置好要覆盖的内容

bootstrap.yml中的相关配置如下

# apollo集成
# apollo 配置应用的 appid
app.id=springboot-apollo-demo1
# apollo meta-server地址,一般同config-server地址
apollo.meta=http://192.168.0.153:8080
#启用apollo配置开关
apollo.bootstrap.enabled=true
apollo.bootstrap.eagerLoad.enabled=true
# apollo 使用配置的命名空间,多个以逗号分隔
apollo.bootstrap.namespaces = application

配置说明:

  1. app.id:在配置中心配置的应用身份信息。
  2. apollo.bootstrap.enabled:在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息。
  3. apollo.bootstrap.eagerLoad.enabled:将Apollo配置加载提到初始化日志系统之前。
  4. apollo.bootstrap.namespaces:配置的命名空间,多个逗号分隔,一个namespace相当于一个配置文件。
  5. apollo.meta:当前环境服务配置地址,生产环境建议至少双节点,可以填写多个逗号分隔,使用一个单独的域,如 http://config.xxx.com(由nginx等软件负载平衡器支持),而不是多个IP地址,因为服务器可能会扩展或缩小。

linux安装apollo

初始化sql

Apollo spring apollo springboot namespase_github_02

Apollo spring apollo springboot namespase_github_03

部署apollo服务端

按照上面官方文档中的配置,初始化完数据库后需要修改项目文件中的db配置,连上我们自己的mysql数据库;

下载这三个包

Apollo spring apollo springboot namespase_Apollo spring_04


在下载的三个项目的config目录下修改db的链接

Apollo spring apollo springboot namespase_linux_05


然后依次启动config---admin---portal,启动的时候可能默认的/opt/logs/xxx日志存放路径没有读写权限,简单粗暴的话加个777的权限就行了.

登录apollo

http://localhost:8070/

修改/增加部门

直接在db里改就行了

Apollo spring apollo springboot namespase_bootstrap_06

Apollo spring apollo springboot namespase_bootstrap_07

客户端连接服务端springboot从apollo拉取配置

apollo上随便配置一点东西,然后点击发布

Apollo spring apollo springboot namespase_Apollo spring_08

先上依赖,注意client依赖版本和server要一致

<dependency>
     <groupId>com.ctrip.framework.apollo</groupId>
     <artifactId>apollo-client</artifactId>
     <version>1.9.0</version>
 </dependency>

配置参数

# apollo集成
# apollo 配置应用的 appid
app.id=springboot-apollo-demo1
# apollo meta-server地址,一般同config-server地址
apollo.meta=http://localhost:8080
#启用apollo配置开关
apollo.bootstrap.enabled=true
apollo.bootstrap.eagerLoad.enabled=true
# apollo 使用配置的命名空间,多个以逗号分隔
apollo.bootstrap.namespaces = application

启动类上加上@EnableApolloConfig注解

第一次启动的时候看到拉取apollo的配置文件一直拉取失败,看到控制台的报错,看到请求的ip是我虚拟机的另一个虚拟网卡的ipip不对。
官网提供了几种方法来处理。我这里选择在jvm options中加入参数来覆盖这个ip.

Apollo spring apollo springboot namespase_Apollo spring_09

官网提供的几种修改方式

Apollo spring apollo springboot namespase_spring_10

我选择的方式

-Dapollo.configService=http://localhost:8080

Apollo spring apollo springboot namespase_linux_11

成功拉取到apollo上的配置信息

Apollo spring apollo springboot namespase_spring_12

在切换集群的时候建议添加application.properties文件,我在测试的时候发现使用yml格式的刷新配置失败了