九、高可用注册中心

高可用注册中心

在微服务架构这样的分布式环境中,我们需要考虑发生故障的情况,所以生产环境中必须进行高可用部署,对于微服务也如此,对于服务注册中心也一样。但是在前面,一直是单节点的服务注册中心,这在生产环境是不合适的,所以需要构建高可用的服务注册中心以增强系统的可用性。
EurekaServer的设计一开始就考虑了高可用问题,在Eureka服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外。在单节点服务注册中心 我设置了两个参数,让服务注册中心不注册自己:
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

这里写图片描述

EurekaServer的高可用实际就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果,下面尝试搭建高可用服务注册中心滚的集群。在之前的上面进行扩展。构建一个双节点的服务注册中心集群。

除此之外,Eureka还支持Region和Zone的概念。其中一个Region可以包含多个Zone。Eureka在启动时需要指定一个Zone名,即当前Eureka属于哪个zone, 如果不指定则属于defaultZone。Eureka Client也需要指定Zone, Client(当与Ribbon配置使用时)在向Server获取注册列表时会优先向自己Zone的Eureka发请求,如果自己Zone中的Eureka全挂了才会尝试向其它Zone。Region和Zone可以对应于现实中的大区和机房,如在华北地区有10个机房,在华南地区有20个机房,那么分别为Eureka指定合理的Region和Zone能有效避免跨机房调用,同时一个地区的Eureka坏掉不会导致整个该地区的服务都不可用

本文我们通过运行eureka-server多个实例,并进行互相注册的方式来实现高可用的部署,我们只需要将Eureke Server配置其他可用的serviceUrl就能实现高可用部署。

我们可以创建三个注册中心节点,每个节点进行两两注册,实现完全对等的效果,可以达到集群的最高可用性,任何一个节点挂掉都不会影响服务的注册与发现。

1、 在/etc区/hosts文件中添加对peer1 和 peer2和peer3的转换, 让上面配置的host形式的
servi ceUr l能在本地正确访间到; Windows系统路径为C: \Windows\System32\
drivers\etc\hosts。
127.0.0.1 eureka-server-peer1
127.0.0.1 eureka-server-peer2
127.0.0.1 eureka-server-peer3

2、创建三个spring boot 但是为了方便我们在一个工程里面:
通过spring.profiles.active属性来分别启动peer1和peer2、peer3
这里写图片描述

peer1:
这里写图片描述

#eureka server注册的name,唯一标识
spring.application.name=eureka-server
#eureka server服务的端口号
server.port=1111

eureka.instance.hostname = peerl
#指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://peer2:2222/eureka/,http://peer3:3333/eureka/

peer2:

这里写图片描述

#eureka server注册的name,唯一标识
spring.application.name=eureka-server
#eureka server服务的端口号
server.port=2222

eureka.instance.hostname = peer2
#指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer3:3333/eureka/

peer3:

这里写图片描述

#eureka server注册的name,唯一标识
spring.application.name=eureka-server
#eureka server服务的端口号
server.port=3333

eureka.instance.hostname = peer3
#指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:2222/eureka/

3、通过spring.profiles.active属性来分别启动peer1和peer2、peer3
这里写图片描述


# 每次启动一个备用注册中心只需要修改active即可
spring.profiles.active=peer2
# 不向注册中心注册自己
eureka.client.register-with-eureka=false
# 不检索服务
eureka.client.fetch-registry=false

4、启动peer1,此时访问peer1的注册中心:http://localhost:1111/。registered-replicas中已经有peer2和peer3节点的eureka-server了。
这里写图片描述

我们也可以尝试关闭peer1,刷新http://localhost:1111/,peer1的节点变为了不可用分片(unavailable-replicas)。

启动peer2,此时访问peer2的注册中心:http://localhost:2222/。registered-replicas中已经有peer1和peer3节点的eureka-server了。
这里写图片描述

启动peer3,此时访问peer3的注册中心:http://localhost:3333/。registered-replicas中已经有peer1和peer2节点的eureka-server了。

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值