1. 程式人生 > >Config Server高可用

Config Server高可用

nbsp tex 兩種 訪問 for 管理系 註意 enabled alt

一 簡介
構建高可用的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 #false\u7981\u7528Consul\u914d\u7f6e\uff0c\u9ed8\u8ba4true
        format: YAML    # \u8868\u793aconsul\u4e0a\u9762\u6587\u4ef6\u7684\u683c\u5f0f \u6709\u56db\u79cd YAML PROPERTIES KEY-VALUE FILES
        #data-key: configuration    #\u8868\u793aconsul\u4e0a\u9762\u7684KEY\u503c(\u6216\u8005\u8bf4\u6587\u4ef6\u7684\u540d\u5b57) \u9ed8\u8ba4\u662fdata
        data-key: data    #\u8868\u793aconsul\u4e0a\u9762\u7684KEY\u503c(\u6216\u8005\u8bf4\u6587\u4ef6\u7684\u540d\u5b57) \u9ed8\u8ba4\u662fdata
        #prefix\u8bbe\u7f6e\u914d\u7f6e\u503c\u7684\u57fa\u672c\u6587\u4ef6\u5939
        #defaultContext\u8bbe\u7f6e\u6240\u6709\u5e94\u7528\u7a0b\u5e8f\u4f7f\u7528\u7684\u6587\u4ef6\u5939\u540d\u79f0
        #profileSeparator\u8bbe\u7f6e\u7528\u4e8e\u4f7f\u7528\u914d\u7f6e\u6587\u4ef6\u5728\u5c5e\u6027\u6e90\u4e2d\u5206\u9694\u914d\u7f6e\u6587\u4ef6\u540d\u79f0\u7684\u5206\u9694\u7b26\u7684\u503c 
    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 #false\u7981\u7528Consul\u914d\u7f6e\uff0c\u9ed8\u8ba4true
        format: YAML    # \u8868\u793aconsul\u4e0a\u9762\u6587\u4ef6\u7684\u683c\u5f0f \u6709\u56db\u79cd YAML PROPERTIES KEY-VALUE FILES
        #data-key: configuration    #\u8868\u793aconsul\u4e0a\u9762\u7684KEY\u503c(\u6216\u8005\u8bf4\u6587\u4ef6\u7684\u540d\u5b57) \u9ed8\u8ba4\u662fdata
        data-key: data    #\u8868\u793aconsul\u4e0a\u9762\u7684KEY\u503c(\u6216\u8005\u8bf4\u6587\u4ef6\u7684\u540d\u5b57) \u9ed8\u8ba4\u662fdata
        #prefix\u8bbe\u7f6e\u914d\u7f6e\u503c\u7684\u57fa\u672c\u6587\u4ef6\u5939
        #defaultContext\u8bbe\u7f6e\u6240\u6709\u5e94\u7528\u7a0b\u5e8f\u4f7f\u7528\u7684\u6587\u4ef6\u5939\u540d\u79f0
        #profileSeparator\u8bbe\u7f6e\u7528\u4e8e\u4f7f\u7528\u914d\u7f6e\u6587\u4ef6\u5728\u5c5e\u6027\u6e90\u4e2d\u5206\u9694\u914d\u7f6e\u6587\u4ef6\u540d\u79f0\u7684\u5206\u9694\u7b26\u7684\u503c 
    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

Config Server高可用