Spring Cloud搭建手册(2)——Spring Cloud Config

※在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:[email protected]:8361/eureka,http://admin:[email protected]: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:[email protected]:8361/eureka,http://admin:[email protected]: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

原文地址:https://www.cnblogs.com/hfultrastrong/p/8555026.html

时间: 2024-07-31 04:48:07

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

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

项目的简单介绍: 项目采用maven聚合工程 用spring boot 搭建 spring cloud的微服务 模块式开发 项目的截图: 搭建开始: 能上图 我少打字 1.首先搭建maven的聚合工程 1.1创建聚合工程的父模块 1.2设置父模块的POM文件 主要是配置 spring boot版本,spring cloud 版本,和一些通用的依赖 比如这里的 lombok依赖 <?xml version="1.0" encoding="UTF-8"?>

Spring 5.x 、Spring Boot 2.x 、Spring Cloud 与常用技术栈整合

本项目仓库提供spring.spring-boot.spring-cloud 的常用整合用例.每个用例都提供详细的图文说明,并给出官方文档的具体链接作为参考.随着spring的迭代,本仓库会持续更新,升级版本和丰富用例. 仓库地址:https://github.com/heibaiying/spring-samples-for-all 版本说明: Spring: 5.1.3.RELEASE Spring-Boot:2.1.1.RELEASE Spring-Cloud:Finchley.SR2 目

Spring Cloud第十三篇 | Spring Boot Admin服务监控

本文是Spring Cloud专栏的第十三篇文章,了解前十二篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud第二篇 | 使用并认识Eureka注册中心 Spring Cloud第三篇 | 搭建高可用Eureka注册中心 Spring Cloud第四篇 | 客户端负载均衡Ribbon Spring Cloud第五篇 | 服务熔断Hystrix Spring Cloud第六篇 | Hystrix仪表盘监控

spring boot 2.0.3+spring cloud (Finchley)熔断器Hystrix

在分布式系统中服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务会出现故障,导致依赖于他们的其他服务出现远程调度的线程阻塞.某个服务的单个点的请求故障会导致用户的请求处于阻塞状态,最终的结果是整个服务的线程资源消耗殆尽.由于服务的依赖性,会导致依赖于该故障服务的其他服务也处于线程阻塞状态,最终导致这些服务的线程资源消耗殆尽,知道不可用,从而导致整个服务系统不可用,即雪崩效应.为了防止雪崩效应,产生了熔断器模型. Hystrix是Netflix公司开源的一个项目,提供了熔断器功能,能阻止

spring boot 2.0.3+spring cloud (Finchley)7、微服务监控Spring Cloud Admin

参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI,提供如下功能: 显示 name/id 和版本号 显示在线状态 Logging 日志级别管理 JMX beans 管理 Threads 会话和线程管理 Trace 应用请求跟踪 应用运行参数信息,如: Java 系统属性 Java 环境变量属性 内存信息 Spring 环

spring cloud教程之使用spring boot创建一个应用

<7天学会spring cloud>第一天,熟悉spring boot,并使用spring boot创建一个应用. Spring Boot是Spring团队推出的新框架,它所使用的核心技术还是Spring框架,主要是Spring 4.x,所以如果熟悉spring 4的人,能够更快的接受和学会这个框架.Spring boot可以看做是在spring框架基础上再包了一层,这一层包含方便开发者进行配置管理和快速开发的模块,以及提供了一些开箱即用的工具,比如监控等. Spring Boot官方文档有中

微服务与Spring Cloud基本概念、Spring Cloud版本命名方式与版本选择

微服务是什么?Spring Cloud是什么?Spring Cloud版本命名方式?Spring Cloud版本选择? 一.微服务是什么 微服务是一种架构风格,是一种将单体应用开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API).这些服务围绕业务能力构建并且可通过全自动部署机制独立部署.这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术. 二.Spring Cloud是什么 Spring Cloud并不是

Spring框架学习-搭建第一个Spring项目

步骤一:下载Spring开发包. 官网:https://spring.io/           下载地址:https://repo.spring.io/libs-release-local/org/springframework/spring/ spring-framework-3.0.2.RELEASE-dependencies和spring-framework-4.2.4.RELEASE-dist 解压第二个,解压目录: 步骤二:搭建项目,引入Spring项目 创建项目:由于Spring是

【JavaEE】Springmvc+Spring+Hibernate搭建方法及example

前面两篇文章,分别介绍了Springmvc和Spring的搭建方法,本文再搭建hibernate,并建立SSH最基本的代码结构. Hibernate和前面两个比就比较复杂了,Hibernate是一个orm的框架,也就是负责面向对象中的对象(Object)和关系型数据库这个关系(Relation)之间的映射(Mapping).因为关系型数据库的思维方式,和编程的时候对于对象的理解是有偏差的,所以也有一些面向对象的数据库,但是随着这些orm框架的完善,面向对象的数据库就销声匿迹了. 当然,我这篇文章