Config Server高可用

一 简介
构建高可用的Config Server集群,包括Config Server的高可用,以及依赖Git仓库的高可用。

二 Git仓库的高可用
由于配置的内容都存储在Git仓库中,所以要想实现Config Server的高可用,必须有一个高可用的Git仓库。有两种方式可以实现Git仓库的高可用。
1 使用第三方的Git仓库:这种方式非常简单,可使用例如Github、BitBucket、git@osc、Coding等提供的仓库托管服务,这种服务本身就已经实现了高可用。
2 自建Git仓库管理系统:使用第三方服务的方式虽然省去了很多麻烦,但是很多场景下,倾向于自建Git仓库管理系统。此时就需要保证自建Git的高可用。

三 Config Server注册到Eureka Server上
a、mima-cloud-config-server服务启动两个节点,分为为6063、6066

b、mima-cloud-config-client服务bootstrap.yml配置
1、单机bootstrap.yml配置:

#注意config-client的配置需要放到bootstrap.yml中
management:
  security:
    enabled: false
spring:
  application:
    name: mima-cloud-config-client
  cloud:
    consul:
      discovery: 
        instanceId: ${spring.application.name}:${server.port}
      host: localhost
      port: 8500
      config:
        enabled: true #falseu7981u7528Consulu914du7f6euff0cu9ed8u8ba4true
        format: YAML    # u8868u793aconsulu4e0au9762u6587u4ef6u7684u683cu5f0f u6709u56dbu79cd YAML PROPERTIES KEY-VALUE FILES
        #data-key: configuration    #u8868u793aconsulu4e0au9762u7684KEYu503c(u6216u8005u8bf4u6587u4ef6u7684u540du5b57) u9ed8u8ba4u662fdata
        data-key: data    #u8868u793aconsulu4e0au9762u7684KEYu503c(u6216u8005u8bf4u6587u4ef6u7684u540du5b57) u9ed8u8ba4u662fdata
        #prefixu8bbeu7f6eu914du7f6eu503cu7684u57fau672cu6587u4ef6u5939
        #defaultContextu8bbeu7f6eu6240u6709u5e94u7528u7a0bu5e8fu4f7fu7528u7684u6587u4ef6u5939u540du79f0
        #profileSeparatoru8bbeu7f6eu7528u4e8eu4f7fu7528u914du7f6eu6587u4ef6u5728u5c5eu6027u6e90u4e2du5206u9694u914du7f6eu6587u4ef6u540du79f0u7684u5206u9694u7b26u7684u503c 
    config:
      #安全认证设置用户名密码
      uri: http://localhost:6063/ #config-server访问地址
      #指定profile,对应config-server所获取的配置文件中的{profile}
      #配置文件的几种写法
      #{application}-{profile}.yml
      #{application}-{profile}.properties
      #{application}/{profile}.yml
      profile: prod #相当于在远程git项目找到application-prod.properties文件
      label: master

 

2、高可用bootstrap.yml配置:

#注意config-client的配置需要放到bootstrap.yml中
management:
  security:
    enabled: false
spring:
  application:
    name: mima-cloud-config-client
  cloud:
    consul:
      discovery: 
        instanceId: ${spring.application.name}:${server.port}
      host: localhost
      port: 8500
      config:
        enabled: true #falseu7981u7528Consulu914du7f6euff0cu9ed8u8ba4true
        format: YAML    # u8868u793aconsulu4e0au9762u6587u4ef6u7684u683cu5f0f u6709u56dbu79cd YAML PROPERTIES KEY-VALUE FILES
        #data-key: configuration    #u8868u793aconsulu4e0au9762u7684KEYu503c(u6216u8005u8bf4u6587u4ef6u7684u540du5b57) u9ed8u8ba4u662fdata
        data-key: data    #u8868u793aconsulu4e0au9762u7684KEYu503c(u6216u8005u8bf4u6587u4ef6u7684u540du5b57) u9ed8u8ba4u662fdata
        #prefixu8bbeu7f6eu914du7f6eu503cu7684u57fau672cu6587u4ef6u5939
        #defaultContextu8bbeu7f6eu6240u6709u5e94u7528u7a0bu5e8fu4f7fu7528u7684u6587u4ef6u5939u540du79f0
        #profileSeparatoru8bbeu7f6eu7528u4e8eu4f7fu7528u914du7f6eu6587u4ef6u5728u5c5eu6027u6e90u4e2du5206u9694u914du7f6eu6587u4ef6u540du79f0u7684u5206u9694u7b26u7684u503c 
    config:
      profile: prod
      label: master
      discovery:
        # 默认false,设为true表示使用注册中心中的configserver配置而不自己配置configserver的uri
        enabled: true  
        # 指定config server在服务发现中的serviceId,默认为:configserver         
        serviceId: mima-cloud-config-server

 

3、获取配置文件属性

@RestController
@RefreshScope
public class ConfigClientController {

    @Value("${env}")
    private String env;
    
    @Value("${password}")
    private String password;
    
    @Value("${username}")
    private String username;

    @GetMapping("/config/profile")
    public String hello() {
        return this.env+","+this.password+","+this.username;
    }
}

http://localhost:6062/config/profile

原文地址:https://www.cnblogs.com/linjiqin/p/10339420.html