eureka-server高可用

版权声明:本文为博主原创文章,转载需标明出处哦 ^-^。 https://blog.csdn.net/qq_33101675/article/details/88867963

github:https://github.com/Maple521/springcloud/tree/master/eureka-server-high-availability

在微服务架构这样的分布式环境中,我们需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于服务注册中心也一样,接下来我们需要构建高可用的服务注册中心以增强系统的可用性。

Eureka Server 设计一开始就考虑了高可用问题,在Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外。是否还记得在单节点的配置中,我们设置过下面这两个参数,让服务注册中心不注册自己:

eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

Eureka Server 的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,已实现服务清单的互相同步,达到高可用的效果。下面我们就来尝试搭建高可用服务注册中心的集群。我是在

https://github.com/Maple521/springcloud/tree/master/eureka-server 的基础上扩展的,构建一个双节点的服务注册中心的集群。

创建application-peer1.properties,作为peer1服务中心的配置,并将serviceUrl指向peer2:

spring.application.name=eureka-server
server.port=1111

eureka.instance.hostname=peer1
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/

创建application-peer2.properties,作为peer2服务中心的配置,并将serviceUrl指向peer1:

spring.application.name=eureka-server
server.port=1112

eureka.instance.hostname=peer2
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/

在/etc/hosts文件中添加对peer1和peer2的转换,让上面配置的host形式的serviceUrl能在本地正确访问到

127.0.0.1       peer1

127.0.0.1       peer2

然后用idea打包,打完之后用终端进到target里,通过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

启动完成后,访问peer1的注册中心 http://localhost:1111/,如下图所示,我们可以看到,registered-replicas中已经有peer2节点的eureka-server了。同样的,我们访问peer2的注册中心 http://localhost:1112/,也能看到registered-replicas中已经有peer1节点,并且这些节点在可用分片(available-replicas)之中。

我们也可以尝试关闭peer1,可以看到http://localhost:1111/已经不能访问,http://localhost:1112/里,可以看到peer1的节点变为里不可用分片(unavailable-replicas),Instances currently registered with Eureka 也只有一个实例了。

自此,我们的eureka-server高可用模式就已经搭建好了,在设置了多节点的服务注册中心之后,服务提供方还需要做一些简单的配置才能将服务注册到Eureka Server集群中。我们已上节(https://github.com/Maple521/springcloud/tree/master/eureka-client)为例,修改application.properties配置文件,如下所示:

spring.application.name=hello-service
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

上面的配置主要是对eureka.client.serviceUrl.defaultZone属性做了改动,将注册中心指向了我们上面搭建的peer1与peer2。

下面我们启动peer1、peer2与服务提供方,通过访问 http://localhost:1111/http://localhost:11112/ 观察下

从上面两个图我们可以观察到,hello-server服务同时被注册到了 peer1和peer2上。若此时断开peer1,peer2上到其他服务依然能访问到 hello-service,从而实现了服务注册中心的高可用。

猜你喜欢

转载自blog.csdn.net/qq_33101675/article/details/88867963