文档章节

Spring config server

拾玖叶
 拾玖叶
发布于 2018/06/13 15:42
字数 609
阅读 84
收藏 2

server

  1. 添加依赖
dependencies {
    compile 'org.springframework.cloud:spring-cloud-config-server'
    compile 'org.springframework.cloud:spring-cloud-starter-eureka'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
}
  1. 添加annotation
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApp {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApp.class, args);
    }
}
  1. application.yaml配置文件添加config repo
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: file://${user.home}/space/app-config
          search-paths: '{application}/{profile}'
server:
  port: 7001

上面使用的本地文件系统方式进行配置仓库的内容管理,该方式仅用于开发和测试。在生产环境中务必搭建自己的Git配置库。

  1. 将config server注册进服务发现,application.yaml
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:11111/eureka
    healthcheck:
      enabled: true
  1. 同时可以考虑开启actuator endpoints。
    endpoints.enabled默认true。其中/health在后面Git配置库中有更多作用。
management:
  security:
    enabled: false

clinet

  1. 添加依赖
dependencies {
    compile 'org.springframework.cloud:spring-cloud-starter-eureka'
    compile 'org.springframework.cloud:spring-cloud-starter-config'
    compile 'org.springframework.boot:spring-boot-starter-actuator'
}
  1. bootstrap.yml配置
spring:
  cloud:
    config:
\#      uri: http://localhost:7001
      discovery:
        enabled: true
        service-id: config-server
      fail-fast: true
  application:
    name: hello-cloud
  profiles:
    active: ${SPRING_PROFILES_ACTIVE:local}
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:11111/eureka
    healthcheck:
      enabled: true
server:
  port: 8001

上面spring.application.name即会用在search-paths的{application},spring.profiles.active即是search-paths的{profile}。
同时从服务发现中查找config-server。如果不使用服务发现,可使用spring.cloud.config.uri指定静态的url。
spring.cloud.config.fail-fast用于快速验证config server的连接可用状态,防止container前期load时长过长,到后面config server才发现不能用而启动失败。

  1. 添加服务发现的annotation
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }
}
  1. 开启actuator endpoints。其中/refresh可以对配置进行动态刷新。
management:
  context-path: /actuator
  security:
    enabled: false
  1. 写一个支持刷新Example。
@RefreshScope
@RestController
public class HelloController {
    private final Logger logger = Logger.getLogger(getClass().getName());
    @Value("${from}")
    private String from;
    @GetMapping("/from")
    public String from(){
        return this.from;
    }
}

刷新操作

  1. 修改配置库内from value。
  2. curl -X POST http://localhost:8001/actuator/refresh。
  3. 再次访问http://localhost:8001/from

在config server添加多个配置库

  1. application.yaml
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: git@github.com:XXX/app-config.git
          search-paths: '{application}/{profile}'
          passphrase: ********
          force-pull: true
          repos:
            none_prod:
              pattern:
                - '*/dev'
              uri: git@github.com:XXX/app-config.git
              searchPaths: '{application}/{profile}'
            prod:
              pattern:
                - '*/prod'
              uri: git@github.com:XXX/prod-app-config.git
              searchPaths: '{application}'
        health:
          repositories:
            none_prod:
              name: none_prod
              profiles: dev
server:
  port: 7001
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:11111/eureka
    healthcheck:
      enabled: true

spring.cloud.config.server.git.uri为默认配置库。 spring.cloud.config.server.health.repositories用来配置/health endpoint中健康检查的repos。

  1. 这里采用使用本地ssh setting的方式。
  • 首先,本地${user.home}/.ssh下有ssh key。
  • 再次,ssh key加入ssh-agent。主要要确定config和know_host文件中记录。
$ eval "$(ssh-agent -s)"
\# 添加config文件
\# Host gitlab.com
\# HostName gitlab.com
\# AddKeysToAgent yes
\# UseKeychain yes
\# User TTT
\# IdentityFile ~/.ssh/id_tw_rsa
$ ssh-add -K ~/.ssh/id_tw_rsa
\# 查看agent public keys
$ ssh-add -l
  • 最后,如果key中有设置passphrase,在application.yaml一定要配置spring.cloud.config.server.git.passphrase。

© 著作权归作者所有

拾玖叶
粉丝 1
博文 37
码字总数 26851
作品 0
武汉
高级程序员
私信 提问
Spring Cloud Config 基础示例

Spring Cloud Config 简介 什么是Srping Cloud Config? Spring Cloud Config 是一种分布式配置中心框架, 为分布式系统中的外部化配置提供服务器和客户端支持。(同类技术还有vault,zookeep...

lc_fly1
2018/11/27
442
0
SpringCloud配置中心高可用搭建

本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行。 引入依赖 spring-cloud-config-server这个就是配置中心server的依赖。 配置中心做到高可用本...

Java技术栈
2018/05/22
95
0
跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config

经过前文讲解,至此,微服务架构已经日趋完善——现在已经可以做一个大型的应用了!然而,随着项目的迭代,微服务数目往往与日俱增,如何高效地管理配置成为我们必须解决的问题。本节来讨论如...

周立_ITMuch
2019/01/31
90
0
跟我学Spring Cloud(Finchley版)-20-Spring Cloud Config-Git仓库配置详解

在跟我学Spring Cloud(Finchley版)-19-配置中心-Spring Cloud Config 一节中,已实现使用Git仓库作为Config Server的后端存储,本节详细探讨如何配置Git仓库。 一、占位符支持 Config Ser...

周立_ITMuch
2019/02/08
68
0
Spring Cloud Config 集成 Spring Cloud Bus 同步远程配置

软件版本: Spring Boot - 2.1.3.RELEASE Spring Cloud - Greenwich.SR1 Spring Cloud Config Server 端 Spring Config Server 端依赖: bootstrap.properties 配置文件配置 : Spring Cloud......

OSC首席混子
2019/04/02
180
0

没有更多内容

加载失败,请刷新页面

加载更多

IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版

注:本人使用的idea是最新版(2019.1.2),要是其他的版本的不要惊慌〜,基本上都一样,没有什么太大的差别的 首先我要说一下,拉取项目分两个,一个,你就没有项目,拉取仓库的整个项目,而...

杨木发
今天
54
0
pyqt5环境搭建(Ubuntu19.10+pycharm+python3)

1.安装pyqt5 sudo apt-get install python3-pyqt5 sudo apt-get install qttools5-dev-tools sudo apt-get install qt5-default 2.安装pycharm 下载pycharm社区版安装包并解压 在桌面新建pyc......

小芯片
今天
54
0
Vue造轮子-tab组件(中)

1. 如果给一个标签一个class,标签本身又有class,vue是默认会合并的。只有两个属性是这样一个是class,一个是style。这样就比较好改样式。 <g-tabs-head class="red"></g-tabs> 2. 组件的...

ories
昨天
59
0
Windows 版本 Anaconda 配置加速源安装软件

C:\Users\lenovo\.condarc 首先安装Anaconda最新版本。 其次添加安装目录到环境变量。文本为 C:\ProgramData\Anaconda3\Library\bin 运行 conda 命令在 Windows 用户下生成文件 .conda...

白豆腐徐长卿
昨天
232
0
如何从Bash函数返回字符串值

我想从Bash函数返回一个字符串。 我将用Java编写示例以显示我想做的事情: public String getSomeString() { return "tadaa";}String variable = getSomeString(); 下面的示例在bash中...

javail
昨天
71
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部