spring cloud config分布式配置中心的高可用问题
在前面的文章中,我们实现了配置文件统一管理的功能,但是我们可以发现,我们仅仅只用了一个server,如果当这个server挂掉的话,整个配置中心就会不可用,下面,我们就来解决配置中心的高可用问题。
下面我们通过整合eureka来实现配置中心的高可用,因为作为架构内的配置管理,本身其实也是可以看作架构中的一个微服务,我们可以把config server也注册为服务,这样所有客户端就能以服务的方式进行访问。通过这种方法,只需要启动多个指向同一gitlab仓库位置的config server端就能实现高可用了。
一、config server端加入eureka
1、加入eureka依赖
<dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-eureka</artifactid> </dependency>
2、添加eureka支持,将配置服务注册到eureka上去
@enableeurekaclient
3、修改server端的配置文件
加入eureka注册的配置,bootstrap.yml
server: port: 8889 eureka: client: service-url: defaultzone: http://localhost:8761/eureka instance: prefer-ip-address: true spring: application: name: foo cloud: config: server: git: uri: <span>https://gitlab.xxx.com/xxxxx/xxxxx.git</span> # 配置gitlab仓库的地址 search-paths: <span>/config-repo</span> # gitlab仓库地址下的相对地址,可以配置多个,用,分割。 username: your name # gitlab仓库的账号 password: your password # gitlab仓库的密码
启动config server
4、修改端口号,再启动一个config server
5、查看服务是否注册成功
二、config 客户端加入eureka
1、加入eureka的pom依赖,同config server
2、修改config客户端的配置文件
bootstrap.properties经过测试,此处客户端只能是bootstrap.properties,否则会一直连端口8888
server.port=8890 spring.application.name=configserver spring.cloud.config.name=configserver spring.cloud.config.profile=dev spring.cloud.config.label=master # 开启config服务发现支持 spring.cloud.config.discovery.enabled=true # 此处需要设置成config server在eureka上注册的服务名 spring.cloud.config.discovery.service-id=foo # 指定服务发现中心 eureka.client.service-url.defaultzone=http://localhost:8761/eureka
其中,通过eureka.client.service-url.defaultzone参数指定服务注册中心,用于服务的注册与发现,再将spring.cloud.config.discovery.enabled参数设置为true,开启通过服务来访问config server的功能,最后利用spring.cloud.config.discovery.serviceid参数来指定config server注册的服务名。这里的spring.application.name和spring.cloud.config.profile和前面博客中的意义一致。
3、在application主类上添加eureka支持,同config server一致
三、验证
1、查看eureka server上的服务
2、查看config server是否正常
在浏览器中分别输入:,,看是否有返回结果如下:
{ "name": "configserver", "profiles": [ "dev" ], "label": "master", "version": "8949024814dcb6d61f97dc49db7e9dadcfc724b1", "state": null, "propertysources": [ { "name": "https://gitlab.xxx.com/xxxxx/xxxxx/project/config-repo/configserver.properties", "source": { "name": "chhliuxyh", "hello": "i'm the king of the world!!!", "profile": "profile-default" } } ] }
3、查看客户端是否正常
在浏览器中输入,看是否有如下返回
i'm the king of the world!!!
如果上面几步正常,则说明是ok的。
4、将8888端口对应的config server停掉,然后重新输入,看是否ok!我们发现仍然是ok的,这样我们就完成了配置中心的高可用了!
<pre code_snippet_id="2245130" snippet_file_name="blog_20170306_4_711400"></pre> <pre></pre> <pre></pre>
总结
以上所述是小编给大家介绍的spring cloud config分布式配置中心的高可用实现方法,希望对大家有所帮助
推荐阅读
-
详解spring cloud config整合gitlab搭建分布式的配置中心
-
spring cloud config分布式配置中心的高可用问题
-
Spring Cloud微服务架构的构建:分布式配置中心(加密解密功能)
-
Spring Cloud Config实现分布式配置中心
-
SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码
-
spring cloud配置高可用eureka时遇到的一些坑
-
跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh
-
spring cloud 入门系列七:基于Git存储的分布式配置中心--Spring Cloud Config
-
Spring Cloud 之分布式配置中心--Config
-
SpringCloud实战(六)-高可用的分布式配置中心(Spring Cloud Config)