在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于服务注册中心也一样。在Eureka的服务治理设计中,所有节点既是服务提供方,也是服务消费方,服务注册中心也不例外。其实在上一篇中,我们就在单节点的配置中设置过两个参数(eureka.client.register-with-eureka=false,eureka.client.fetch-registry=false)让服务注册中心不注册自己。
Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。
spring.application.name=eureka-server
server.port=1111
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:1113/eureka/
2.2 创建配置文件application-peer2.properties,作为pee2服务中心的配置,并将serviceUrl指向peer1:
spring.application.name=eureka-server
server.port=1113
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
127.0.0.1 peer1
127.0.0.1 peer2
2.4 修改服务提供方eureka-client。修改配置,将服务注册到Eureka Server集群中:
spring.application.name=hello-service
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka
server.port=8762
通过spring.profiles.active属性来分别启动peer1和peer2:
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
http://localhost:1113而且,在上面的eureka-client中,我们只是配置向peer1注册服务,但饿哦们可以看到同样在peer2也注册了。
unavailable-replicas,这样就实现了服务注册中心的高可用。
如果我们不想使用主机名来定义注册中心的地址,也可以使用IP地址的形式,但是需要在配置文件中增加配置参数eureka.instance.prefer-ip-address=true,该值默认为false。