版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/java_yes/article/details/80706168
根据《SpringCloud微服务实战》第三章,使用SpringBoot 2.0.1.RELEASE版本,对应的SpringCloud版本为Finchley.M7
高可用注册中心
在微服务架构这样的分布式环境中,我们不可能使用单节点的服务注册中心,如果down掉了,那整个项目都会崩溃。所以我们需要构建高可用的服务注册中心以增强系统的可用性。
在Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外。在上篇文章中我们说到配置以下两个属性,不让服务端自己注册自己。
eureka.client.register-with-eureka: false
eureka.client.fetch-registry: false
Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心。我们在上篇文章的服务注册中心基础上,进行更改。
配置文件application.yaml
首先再创建三个yaml文件。application-server1.yaml,application-server2.yaml,application-server3.yaml
server的目录结构为:
application.yaml
spring:
application:
name: eureka-server-cluster
profiles:
active: server1
application-server1.yaml
server:
port: 8100
eureka:
instance:
hostname: server1
instance-id: ${spring.application.name}:${server.port}
client:
serviceUrl:
defaultZone: http://server2:8200/eureka,http://server3:8300/eureka
application-server2.yaml
server:
port: 8200
eureka:
instance:
hostname: server2
instance-id: ${spring.application.name}:${server.port}
client:
serviceUrl:
defaultZone: http://server1:8100/eureka,http://server3:8300/eureka
application-server3.yaml
server:
port: 8300
eureka:
instance:
hostname: server3
instance-id: ${spring.application.name}:${server.port}
client:
service-url:
defaultZone: http://server1:8100/eureka,http://server2:8200/eureka
更改hosts文件
127.0.0.1 localhost server1 server2 server3
就这样,我们就完成了一个高可用的注册中心。三个注册中心互相注册,比两个更可靠。
我们通过jar包对配置中心进行启动。
控制台进入到相应的target文件夹后,输入
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=server1
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=server2
java -jar eureka-server-1.0-SNAPSHOT.jar --spring.profiles.active=server3
这样三个服务中心分别启动。在浏览器依次打开:localhost:8100、localhost:8200、localhost:8300。此时能看到注册信息,每个服务注册中心被其他两个成功注册。
注册界面
server1监控界面
server2监控界面
server3监控界面
ok,此时我们完成了一个简单的高可用注册中心。
此时如果我们关闭server3,那可以看到server3变为unavailable-replicas(不可用分片),而其他的一个还是available-replicas(可用分片)。