在http://blog.csdn.net/wangpengzhi19891223/article/details/78840646中,实现了spring cloud的三个核心–注册中心、服务提供者、服务消费者的简单Dome,本文将重点关注spring cloud注册中心Eureka的高可用配置。
在上文简单的Dome中,如果关闭注册中心,则整个链条断掉,显然不能满足高可用的需求,在生产环境中,注册中心随时可能因为各种原因挂掉,自然注册中心要满足高可用的设计目标。当然Eureka也实现了高可用。 简单的一句话概述Eureka的高可用就是:相互注册、相互备份。
来看例子: 上上文实现的Eureka中,增加两个配置文件在resource下:application-peer1.properties,application-peer2.properties: 现在工程目录:
application-peer1.properties
server.port = 1111
eureka.instance.hostname=peer1
spring.application.name=eureka-server
eureka.client.service-url.defaultZone=http://peer2:1112/eureka/
application-peer2.properties
server.port = 1112
eureka.instance.hostname=peer2
spring.application.name=eureka-server
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/
第二步:修改host文件,增加pee1、peer2, 指向本机127.0.0.1
127.0.0.1 peer1
127.0.0.1 peer2
host文件路径,不知道的请百度。
第三步,用maven对项目进行打包,打包之后打开target目录:
打开两个cmd命令行工具,分别执行:
java -jar spring-cloud-register-1.0-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar spring-cloud-register-1.0-SNAPSHOT.jar --spring.profiles.active=peer2
分别访问:
http://peer1:1111/
http://peer2:1112/
会看到如下的界面:
访问peer1,可以看到peer2的注册信息。 同样访问peer2也能看到peer1。 这样就完成了相互备份的高可用配置。
同样,我们对上文中的service进行打包,用命令启动两个实例:
打包启动前,要修改application.properties文件,增加注册中心配置:
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
启动两个service实例:
java -jar spring-eureka-server-1.0-SNAPSHOT.jar --server.port = 8081
java -jar spring-eureka-server-1.0-SNAPSHOT.jar --server.port = 8082
启动之后,观察注册中心,可以发现,这两个实例,都注册在两个注册中心上了。
在访问服务的时候,只要有一个注册中心处于可用状态,整个服务就是可用的。