※在Dalston.SR2版本以后,均不能正常加密,如果必须使用此功能,需要降级到SR1或Camden SR7。

1、首先需要创建一个config-server工程,作为配置中心的服务器,用来与git、svn或者本地仓库连接,从仓库获取配置文件

① config-server工程的POM文件需要增加以下依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-security</artifactId>
</dependency>

② 在Spring Boot入口类添加注解,以启用配置中心服务器

@EnableConfigServer

③ 同样的使用application-peer1.properties和application-peer2.properties来进行配置

spring.profiles.active=peer1
server.port=8001
spring.profiles.active=peer2
server.port=8002

将公用配置,配置在application.properties里:

spring.application.name=config-server-service

#disable security when testing
management.security.enabled=false
security.user.name=admin
security.user.password=taoge1gb spring.cloud.config.server.git.uri=https://github.com/spring-cloud.git
spring.cloud.config.server.git.searchPaths=spring-cloud-config-repo
spring.cloud.config.server.git.username=taoge
spring.cloud.config.server.git.password=taoge1gb eureka.client.serviceUrl.defaultZone=http://admin:taoge1gb@eureka-server:8361/eureka,http://admin:taoge1gb@eureka-server:8362/eureka

④ 执行以下启动命令,分别启动激活peer1和peer2:

java -jar config-server-1.0.0.jar --spring.profiles.active=peer1
java -jar config-server-1.0.0.jar --spring.profiles.active=peer2

2、对于config-client来说,需要进行如下配置:

① 首先要在POM文件添加config-client的依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

② 在bootstrap.properties配置config-server信息:

eureka.client.serviceUrl.defaultZone=http://admin:taoge1gb@eureka-server:8361/eureka,http://admin:taoge1gb@eureka-server:8362/eureka

spring.cloud.config.profile=dev
spring.cloud.config.name=test
spring.cloud.config.label=develop
spring.cloud.config.username=admin
spring.cloud.config.password=taoge1gb
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server-service

※必须配置在bootstrap.properties里,使该配置在程序启动时就生效。

③ 开启失败重试功能(可选),需要在POM文件添加依赖:

<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

再在bootstrap.properties配置文件中开启重试功能:

spring.cloud.config.failFast=true

3、如果要启用配置文件中密码的加解密功能,Spring Cloud Config要求加密扩展无限强度限制,所以需要先下载JCE,替换原JDK里的加密扩展包

JDK 7:

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

JDK 8:

http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

下载完成解压后,把local_policy.jar和US_export_policy.jar拷贝并覆盖到$JAVA_HOME/jre/lib/security下即可。

4、可能遇到的问题:

①使用curl localhost:8888/encrypt -d mysecret获取加密后密文,返回401,{"timestamp":1517811624176,"status":401,"error":"Unauthorized","message":"Full authentication is required to access this resource","path":"/encrypt"}

原因:由于spring cloud config server在启动时会在控制台打印出密码,在访问时,需要带上默认的用户名和密码。

解决办法:建议在配置application.properties时,加上指定的用户名密码:

security.user.name=admin
security.user.password=taoge1gb

访问时,使用curl http://admin:taoge1gb@localhost:8888/encrypt -d mysecret

或关闭验证

management.security.enabled=false
security.basic.enabled=false

②访问curl http://admin:taoge1gb@localhost:8888/encrypt -d mysecret时,返回404,{"description":"No key was installed for encryption service","status":"NO_KEY"}

原因:没有设置加密时使用的key。

解决办法:在配置application.properties时,加上key的配置:

encrypt.key=sisterred

※在Dalston.SR2版本以后,均不能正常加密,如果必须使用此功能,需要降级到SR1或Camden SR7。

参考:https://github.com/spring-cloud/spring-cloud-config/issues/767

③ 配置的git仓库无法克隆和检出

原因:配置spring.cloud.config.server.git.uri的路径,必须是指定到.git的url才可以,可以通过在浏览器上访问,试验所配置的路径是否正确。

而在.git后的路径,则需要配置在spring.cloud.config.server.git.searchPaths。

解决办法:配置成以下形式

spring.cloud.config.server.git.uri=https://github.com/spring-cloud.git
spring.cloud.config.server.git.searchPaths=spring-cloud-config-repo

④ 更新配置后,发送/bus/refresh请求,返回401

发送curl -X POST http://localhost:8088/bus/refresh,返回如下内容:

{"timestamp":1517974621306,"status":401,"error":"Unauthorized","message":"Full authentication is required to access this resource.","path":"/bus/refresh"}

原因:由于spring cloud config client在启动时会在控制台打印出密码,在访问时,需要带上默认的用户名和密码。

解决办法:建议在配置application.properties时,加上指定的用户名密码:

security.user.name=admin
security.user.password=taoge1gb

访问时,使用curl -X POST http://admin:taoge1gb@localhost:8088/bus/refresh

或关闭验证

management.security.enabled=false
security.basic.enabled=false

Spring Cloud搭建手册(2)——Spring Cloud Config的更多相关文章

  1. 一步一步深入spring(1)--搭建和测试spring的开发环境

    1.引用jar包 到spring的网站上下载spring的jar包(本文是2.5.6),解压缩后找到 使用spring必须引用的jar包 spring.jar  commons-logging.jar ...

  2. Spring第二弹—–搭建与测试Spring的开发环境

    PS:Spring既可以使用在javaSE中,也可以使用在javaWeb中. 使用Spring需要的jar 下载spring(我下载的是2.5.6版本),然后进行解压缩,在解压目录中找到下面jar文件 ...

  3. Spring Cloud(3):配置服务(Config)

    Spring Cloud Config的目标是在在大量的微服务中,将服务配置信息和和服务的实际物理部署分离,且服务配置服务不应与服务实例一起部署.配置信息应该作为环境变量传递给正在启动的服务,或者在服 ...

  4. spring cloud 专题二(spring cloud 入门搭建 之 微服务搭建和注册)

    一.前言 本文为spring cloud 微服务框架专题的第二篇,主要讲解如何快速搭建微服务以及如何注册. 本文理论不多,主要是傻瓜式的环境搭建,适合新手快速入门. 为了更好的懂得原理,大家可以下载& ...

  5. 使用Spring Cloud搭建高可用服务注册中心

    我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客[使用Spring Cloud搭建服务注册中心]中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭 ...

  6. 使用Spring Cloud搭建服务注册中心

    我们在之前的博客中已经介绍过阿里的分布式服务框架dubbo[Linux上安装Zookeeper以及一些注意事项][一个简单的案例带你入门Dubbo分布式框架],但是小伙伴们应该也看到了,阿里的dubb ...

  7. maven 聚合工程 用spring boot 搭建 spring cloud 微服务 模块式开发项目

    项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 ...

  8. 【微服务】使用spring cloud搭建微服务框架,整理学习资料

    写在前面 使用spring cloud搭建微服务框架,是我最近最主要的工作之一,一开始我使用bubbo加zookeeper制作了一个基于dubbo的微服务框架,然后被架构师否了,架构师曰:此物过时.随 ...

  9. spring boot 2.0.3+spring cloud (Finchley)2、搭建负载均衡Ribbon (Eureka+Ribbon+RestTemplate)

    Ribbon是Netflix公司开源的一个负载均衡组件,将负载均衡逻辑封装在客户端中,运行在客户端的进程里. 本例子是在搭建好eureka的基础上进行的,可参考spring boot 2.0.3+sp ...

随机推荐

  1. marquee标签详解

    <marquee>标签,它是成对出现的标签,首标签<marquee>和尾标签</marquee>之间的内容就是滚动内容.<marquee>标签的属性主要 ...

  2. MySql(十五):MySql架构设计——可扩展性设计之 Cache 与 Search 的利用

    前言 前面章节部分所分析的可扩展架构方案,基本上都是围绕在数据库自身来进行的,这样是否会使我们在寻求扩展性之路的思维受到“禁锢”,无法更为宽广的发散开来.这一章,我们就将跳出完全依靠数据库自身来改善扩 ...

  3. css animation和keyframes

    keyframes应用在animation上,animation应用在元素上. <html> <style type="text/css"> .div1 { ...

  4. 绑定sql server数据库的用户与登录名

    服务器重装系统,重新安装上sql server,附加上以前的数据库, 然后以前是每个数据库都有一个登录用于操作该数据库,其他数据库不能操作的, 附加上数据库后该数据库安全性里的用户能看到以前建立好的用 ...

  5. C语言:存取结构体成员的点运算符(.)和箭头运算符(->)的区别

    转自:http://blog.csdn.net/taric_ma/article/details/7397362 一直以为这两个是没有什么区别的,可以相互替换,今天又翻了一下<C语言核心技术&g ...

  6. 常用的NodeJS模块

    图片处理 1.Manipulate images 官网:http://github.com/aheckmann/gm ImageMagick和GraphicsMagick主要用于图片的创建.编辑.合成 ...

  7. log_output参数是指定日志的存储方式

    log_output='FILE'表示将日志存入文件,默认值是'FILE' log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中. mys ...

  8. 转:在eclipse中 使用7.0及以上手机进行测试时logcat不打印日志的解决办法

    解决办法 替换ADT中的ddmlib.jar文件. 下载ADT对应的zip包,解压出ddmlib.jar文件 放到eclipse\configuration\org.eclipse.osgi\bund ...

  9. select元素添加option的add()方法 | try{}catch{}

    1.javascript中的select元素添加option使用add()方法 select的add方法,第一个参数是需要被添加的option元素,第二个参数决定了被添加的位置 普通浏览器中,第二个参 ...

  10. win2008r2的iis7.5手动建站方法,iis7.5中用独立用户建立网站的方法,提高网站安全性

    win2003的iis6手动建站方法,iis6中用独立用户建立网站的方法,提高网站安全性,我们前面的教程有说明,请看http://www.piis.cn/zhishi/web574.asp 现在我们说 ...