咱们已经介绍了1--SpringCloud的服务注册与发现Eureka,其中,主要演示了如何构建和启动服务注册中心Eureka Server,以及如何将服务注册到Eureka Server中,可是在以前的示例中,这个服务注册中心是单点的,显然这并不适合应用于线上生产环境,那么下面在前文的基础上,咱们来看看该如何构建高可用的Eureka Server集群。html
若是您还不熟悉如何构建服务中心和注册服务,请先阅读1--SpringCloud的服务注册与发现Eurekagit
Eureka Server除了单点运行以外,还能够经过运行多个实例,并进行互相注册的方式来实现高可用的部署,因此咱们只须要将Eureke Server配置其余可用的serviceUrl就能实现高可用部署。spring
下面以中1--SpringCloud的服务注册与发现Eureka的eureka-server为基础,对其改造,构建双节点的服务注册中心。app
建立application-peer1.properties文件微服务
做为peer1服务中心的配置,并将serviceUrl指向peer2post
spring.application.name=eureka-server server.port=1111 eureka.instance.hostname=peer1 eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/
建立application-peer2.properties文件url
做为peer2服务中心的配置,并将serviceUrl指向peer1spa
spring.application.name=eureka-server server.port=1112 eureka.instance.hostname=peer2 eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/
修改host文件3d
Windows:C:\Windows\System32\drivers\etc Linux:/etc/hosts
code
127.0.0.1 peer1
127.0.0.1 peer2
经过修改 application.properties里面的spring.profiles.active
属性来分别启动peer1和peer2
此时访问peer1的注册中心:
http://localhost:1111/
,以下图所示,咱们能够看到registered-replicas
中已经有peer2节点的eureka-server了。一样地,访问peer2的注册中心:http://localhost:1112/
,能看到registered-replicas
中已经有peer1节点,而且这些节点在可用分片(available-replicase)之中。咱们也能够尝试关闭peer1,刷新http://localhost:1112/
,能够看到peer1的节点变为了避免可用分片(unavailable-replicas)。
在设置了多节点的服务注册中心以后,咱们主须要简单需求服务配置,就能将服务注册到Eureka Server集群中。咱们以1--SpringCloud的服务注册与发现Eureka中的eureka-service为基础,修改application.properties
配置文件:
#指定微服务的名称后续在调用的时候只须要使用该名称就能够进行服务的访问。 spring.application.name=compute-service server.port=2222 #属性对应服务注册中心的配置内容,指定服务注册中心的位置。 eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
上面的配置主要对eureka.client.serviceUrl.defaultZone
属性作了改动,将注册中心指向了以前咱们搭建的peer1与peer2。
下面,咱们启动该服务,经过访问http://localhost:1111/
和http://localhost:1112/
,能够观察到compute-service同时被注册到了peer1和peer2上。若此时断开peer1,因为compute-service同时也向peer2注册,所以在peer2上其余服务依然能访问到compute-service,从而实现了高可用的服务注册中心。
虽然上面咱们以双节点做为例子,可是实际上因负载等缘由,咱们每每可能须要在生产环境构建多于两个的Eureka Server节点。那么对于如何配置serviceUrl来让集群中的服务进行同步,须要咱们更深刻的理解节点间的同步机制来作出决策。
Eureka Server的同步遵循着一个很是简单的原则:只要有一条边将节点链接,就能够进行信息传播与同步。什么意思呢?不妨咱们经过下面的实验来看看会发生什么。
访问http://localhost:1112/
,能够看到3个注册中心组成了集群,eureka-service服务经过peer1同步给了与之互相注册的peer2和peer3。
经过上面的实验,咱们能够得出下面的结论来指导咱们搭建服务注册中心的高可用集群: