Eureka Server的高可用
Eureka Server除了单点运行之外,还可以通过运行多个实例,并进行互相注册的方式来实现高可用的部署,所以我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。
下面我们来构建一个三节点的服务注册中心。
创建application-peer1.properties
,作为peer1服务中心的配置,并将serviceUrl指向peer2,peer3
spring.application.name=eureka-server
info.version=@project.version@
server.port=1001
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:1002/eureka/,http://localhost:1003/eureka/
创建application-peer2.properties
,作为peer2服务中心的配置,并将serviceUrl指向peer1,peer3
spring.application.name=eureka-server
info.version=@project.version@
server.port=1002
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/,http://localhost:1003/eureka/
创建application-peer3.properties
,作为peer3服务中心的配置,并将serviceUrl指向peer1,peer2
spring.application.name=eureka-server
info.version=@project.version@
server.port=1003
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/,http://localhost:1002/eureka/
然后通过spring boot的--spring.profiles.active
依次启动服务。
软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到三个不同的环境,开发环境、测试环境以及生产环境,通常这三个环境会有很多配置参数不同,例如数据源、文件路径、url等,如果每次上线一个新版本时都手动修改配置会十分繁琐,容易出错。spring 为我们提供了 profile
机制来解决这个问题。
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3
两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现