spring cloud config-server 高可用配置中心

spring cloud config 簡介

Spring Cloud Config爲服務端和客戶端提供了分佈式系統的外部化配置支持。配置服務器爲各應用的全部環境提供了一箇中心化的外部配置。java

spring cloud config 分佈式部署

    部署分佈式配置管理分爲如下4部git

  •     將分佈式系統的配置文件集中管理到文件系統上
spring.application.name=config-server
# config server port
server.port=8887

# use file system backend
spring.profiles.active=native
# url of file system where configuration files stored
spring.cloud.config.server.native.searchLocations=file:////root/config-repo

    Spring Cloud Config提供本地存儲配置的方式。咱們只須要設置屬性spring.profiles.active=native,Config Server會默認從應用的src/main/resource目錄下檢索配置文件。也能夠經過spring.cloud.config.server.native.searchLocations=file:////root/config-repo性來指定配置文件的位置,這樣的話就能夠將全部的配置文件統一管理。固然也能夠從git上獲取。spring

   目錄config-repo用於存放全部的配置文件bootstrap

  1. 存放配置文件的目錄結構爲{label}\{application}-{profile}.properties
  2. {label}能夠用於對應prod、test、uat、dev、release等等
  3. {application}爲各個模塊的名字,如log、order等
  4. {profile}爲profile的名字
  •     對集中配置管理服務器進行配置(因爲須要高可用那麼只須要將config-server也註冊爲服務,這樣全部客戶端就能以服務的方式進行訪問,而後只須要啓動多個指向同一文件位置的config-server就能夠)
spring.application.name=config-server
# config server port
server.port=8887

# use file system backend
spring.profiles.active=native
# url of file system where configuration files stored
spring.cloud.config.server.native.searchLocations=file:////root/config-repo

# 配置服務註冊中心
eureka.client.serviceUrl.defaultZone=http://test:111@localhost:8761/eureka/,http://test:111@1ocalhost:8762/eureka/
# 在eurake註冊的名稱是IP地址+端口
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

將config-servefr註冊服務該怎麼作呢?很簡單在對應的pom文件中添加以下配置:服務器

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-config-server</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
</dependencies>
  •     對各環境(客戶端)進行配置(bootstrap.properties)
spring.application.name=zuul
spring.cloud.config.profile=configInfo
spring.cloud.config.label=devs

eureka.client.serviceUrl.defaultZone=http://test:111@localhost:8761/eureka/,http://test:111@localhost:8762/eureka/

# 在eurake註冊的名稱是IP地址+端口
eureka.instance.preferIpAddress=true
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
  • spring.application.name:對應前配置文件中的{application}部分
  • spring.cloud.config.profile:對應前配置文件中的{profile}部分
  • spring.cloud.config.label:對應前配置文件的config-repo下的目錄

這裏須要格外注意:上面這些屬性必須配置在bootstrap.properties中,config部份內容才能被正確加載。由於config的相關配置會先於application.properties,而bootstrap.properties的加載也是先於application.propertiesapp

其中,經過eureka.client.serviceUrl.defaultZone參數指定服務註冊中心,用於服務的註冊與發現,再將spring.cloud.config.discovery.enabled參數設置爲true,開啓經過服務來訪問Config Server的功能,最後利用spring.cloud.config.discovery.serviceId參數來指定Config Server註冊的服務名。這裏的spring.application.namespring.cloud.config.profile用來定位config-server的資源。分佈式

客戶端對應的pom文件中須要添加以下配置this

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
</dependencies>
  •     客戶端取得配置文件並使用
spring.datasource.url=jdbc\:db2\://localhost\:50000/hrxtdev
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.ibm.db2.jcc.DB2Driver\
config.server.url=http://localhost:8080
server.port =8180
server.context-path =/log
@Component
@ConfigurationProperties(prefix = "config.server")
public class ConfigServerProperties{
    private String url;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

}
相關文章
相關標籤/搜索