Spring Cloud学习之使用构建高可用Config Server
说明:
springboot 版本:1.5.12.Release
springcloud 版本:Dalston SR5
开发工具:eclipse-2018.12
1、新建maven父工程(要选择pom类型的打包方式),引入基础依赖,并对依赖版本进行管理
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.scau</groupId>
<artifactId>spring-cloud-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>spring-cloud-demo</name>
<modules>
<module>spring-cloud-eureka-server</module>
<module>spring-cloud-eureka-provider-8086</module>
<module>spring-cloud-config-server</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.12.RELEASE</version>
<relativePath />
</parent>
<properties>
<!-- 设置项目编码格式为 UTF-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR5</spring-cloud.version>
<lombok.version>1.18.6</lombok.version>
</properties>
<dependencies>
<!-- 端点监听依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 热部署依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 测试依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 管理依赖版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>
</project>
2、在父工程下新建一个maven module,导入eureka-server相关依赖,作为服务注册中心
(1)修改pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.scau</groupId>
<artifactId>spring-cloud-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-eureka-server</artifactId>
<dependencies>
<!-- 注意这里是eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
</project>
(2)在application.yml中配置Eureka Server
spring:
profiles:
active: dev
---
spring:
profiles: dev
application:
name: eureka-server
server:
port: 8761
#配置eureka服务注册中心
eureka:
client:
service-url:
defaultZone: http://localhost:${server.port}/eureka
#不从eureka server上获取服务
fetch-registry: false
#不把本身注册到eureka server上
register-with-eureka: false
#开启端点监控
management:
security:
enabled: false
(3)在主启动类使用@EnableEurekaServer
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
3、创建一个新的maven module,作为config server
(1)修改pom.xml,引入相关依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.scau</groupId>
<artifactId>spring-cloud-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-config-server</artifactId>
<dependencies>
<!-- 注意这里是config server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- 注意这里是eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
</dependencies>
</project>
(2)在resource下新建configs文件夹,来存放其他模块的配置文件(eg:eureka-provider-8086.yml)
(3)在application.yml中配置config server相关内容与服务注册url,将这个服务注册到eureka server中
server:
port: 8769
#配置从类路径下的config文件夹下读取配置文件
spring:
application:
name: config-server
cloud:
config:
server:
native:
search-locations: classpath:configs
profiles:
active:
- native
#配置eureka服务注册中心
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
instance:
instance-id: config-server.com
prefer-ip-address: true
#开启端点监控
management:
security:
enabled: false
(4)在主启动类上使用@EnableConfigServer与@EnableEurekaClient
@EnableEurekaClient
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
4、再新建一个maven module,作为Eureka client(eg:这里命名为eureka-provider-8086)
(1)修改pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.scau</groupId>
<artifactId>spring-cloud-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>spring-cloud-eureka-provider-8086</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
</project>
(2)在bootstrap.yml(比application.yml拥有更高优先级)中配置从config server这个服务获取配置文件内容
spring:
application:
name: eureka-provider-8086
config-name: config-server
#配置从服务名为config-server中获取配置 ,并且如果连接不上就快速失败
cloud:
config:
discovery:
enabled: true
service-id: ${spring.application.config-name}
fail-fast: true
label: master
profiles:
active:
- dev
#配置eureka服务注册中心 (PS:这里的服务注册中心要与config server的服务注册中心相同)
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
instance:
prefer-ip-address: true
instance-id: eureka-provider-8086.com
(3)在主启动类上使用@EnableEurekaClient
@EnableEurekaClient
@SpringBootApplication
public class EurekaProviderApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaProviderApplication.class, args);
}
}
5、测试是否成功
(1)启动eureka server
(2)启动config server
(3)启动eureka-provider-8086
访问localhost:8761/eureka(即服务注册中心),如下
访问localhost:8086/info(刚才在eureka-provider-8086.yml中配置的端点信息),如下
到此:构建config server并作其作为 服务注册到eureka server就完成 了,不同版本的cloud可能配置有些不同;
发现有什么错误的话,请指出