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 #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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM