搭建高可用的Config Server
到目前为止,我们已经学会了Congfig Client如何从配置中心Config Server的本地仓库和Git远程仓库读取配置文件。当服务实例很多时,所有的服务实例需要同时从配置中心Config Server读取配置文件,这时可以考虑将配置中心Config Server做成一个集群化的微服务,从而达到高可用。将Config Server和Config Client注册在Eureka Server,Config Server多实例集群部署的架构如图1所示。
图1 Config Server集群架构图
下面基于7.2.1小节进行改造,搭建一个高可用的Config Server集群,具体步骤如下:
1、 构建Eureka Server
为了方便测试效果,我们这里新建一个eureka-server项目作为Config Server的注册中心,其搭建过程与第2章2.2小节一致。不过这里设置的eureka-server端口号是
8761。
2、 改造Config Server
(1)Config Server作为服务器,需要在工程中的pom.xml配置文件中加入 Eureka Client起步依赖,代码如下所示。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)在项目的启动类ConfigServerApplicatio添加@EnableEurekaServer和 @EnableConfigServer注解,开启Eureka Server和Config Server功能,如例1所示。
例1 config-server\src\main\java\com\itheima\configserver\ConfigServerApplication.java
1 import org.springframework.boot.SpringApplication;
2 import org.springframework.boot.autoconfigure.SpringBootApplication;
3 import org.springframework.cloud.config.server.EnableConfigServer;
4 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
5 @SpringBootApplication
6 @EnableConfigServer
7 @EnableEurekaClient
8 public class ConfigServerApplication {
9 public static void main(String[] args) {
10 SpringApplication.run(ConfigServerApplication.class, args);
11 }
12 }
(3)修改配置文件application.yml文件,为Config Server指定服务注册的地址等信息,如例1所示。
例2 config-server\src\main\resources\application.yml
1 spring :
2 cloud:
3 config:
4 server:
5 native:
6 search-locations: classpath:/shared
7 profiles:
8 active: native
9 application:
10 name: config-server
11 server:
12 port: 8769
13 eureka:
14 client:
15 serviceUrl:
16 defaultZone: http://localhost:8761/eureka
3、 改造Config Client
(1)在pom文件中加入Eureka Client起步依赖。在项目启动类上添加
@EnableEurekaClient注解启动Eureka Client功能。
(2)在配置文件bootstrap.yml加入指定服务注册地址等相关配置,具体代码如例3示。
例3 config-client\src\main\resources\bootstrap.yml
1 spring:
2 application:
3 name: config-client
4 cloud:
5 config:
6 uri: http://localhost:8769
7 fail-fast: true
8 profiles:
9 active: dev
(3)依次启动eureka-server、config-server和config-client。启动时需要注意,只有等待eureka-server注册成功后,才可以启动config-client。
(4)使用浏览器访问http://localhost:8762/foo
,查看效果。
4、 搭建Config Server集群
搭建高可用的Config Server服务只需要将Config Server多实例部署,使用Spring Initializr方式创建一个名称为config-server2的Config Server项目,设置端口号为8768,服务名也为config-server,其他配置信息和搭建过程与config-server项目一致。
5、 测试运行
使用浏览器访问http://localhost:8761
,效果如图2所示。
图2 高可用的Config Server注册中心
在图2中,Eureka注册中心注册的CONFIG-SERVER共有两个实例,端口号分别为8768和8769,说明我们已经成功实现高可用的Config Server。