SpringCloud - (八)Eureka高可用服务注册中心

服务注册中心单实例搭建

SpringCloud - (一)Eureka服务注册与发现

服务注册中心高可用集群搭建

新建一下单个项目:

  • es-eureka-server-master(注册中心)
  • es-eureka-server-node1(注册中心节点一)
  • es-eureka-server-node2(注册中心节点二)

修改hosts文件, 文件路径: C:\Windows\System32\drivers\etc,新增以下配置

127.0.0.1 peer1
127.0.0.1 peer2

es-eureka-server-master配置文件如下:

# 配置服务端口
server.port=10000

spring.application.name=es-eureka-server

eureka.instance.hostname=localhost

// 分别向其他的注册中心注册
eureka.client.service-url.defaultZone=http://peer1:10010/eureka/,http://peer2:10020/eureka/

es-eureka-server-node1配置文件如下:

# 配置服务端口
server.port=10010

spring.application.name=es-eureka-server

eureka.instance.hostname=peer1

// 分别向其他的注册中心注册
eureka.client.service-url.defaultZone=http://localhost:10000/eureka/,http://peer2:10020/eureka/

es-eureka-server-node2配置文件如下:

# 配置服务端口
server.port=10020

spring.application.name=es-eureka-server

eureka.instance.hostname=peer2

// 分别向其他的注册中心注册
eureka.client.service-url.defaultZone=http://localhost:10000/eureka/,http://peer1:10010/eureka/

分别启动三个项目,启动过程中可能有报错,这是由于三个项目互相注册的原因,不用过多关注
以es-eureka-server-master项目为例,访问http://localhost:10000/看到如下:

这里写图片描述

  • DS Replicas : 分片副本
  • registered-replicas : 注册的分片副本
  • unavailable-replicas : 不可用分片副本
  • available-replicas 可用分片副本

特别注意
配置文件中一定不要添加如下配置:

# 表示是否将自己注册的注册中心, 默认是true
eureka.client.register-with-eureka=false
# 表示是否从注册中心获取注册信息, 默认是true
eureka.client.fetch-registry=false

如果添加了这两个配置,将会导致分片副本不可用, 如下:

修改es-eureka-server-master配置文件如下:

# 配置服务端口
server.port=10000

spring.application.name=es-eureka-server

eureka.instance.hostname=localhost

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

eureka.client.service-url.defaultZone=http://peer1:10010/eureka/,http://peer2:10020/eureka/

访问es-eureka-server-node1,http://localhost:10010/, 如下图:

这里写图片描述

此时localhost分片不可用

注册服务

此时创建es-keyword-service-master项目, 向注册中心注册, 配置文件如下:

server.port=11000

spring.application.name=es-keyword-service

# 向注册中心注册
eureka.client.service-url.defaultZone=http://localhost:10000/eureka/,http://peer1:10010/eureka/,http://peer2:10020/eureka/

此时三个注册中心项目都能查看到此服务

架构图如下:

这里写图片描述

两两注册的方式可以实现集群中节点完全对等的效果,实现最高可用性集群,任何一台注册中心故障都不会影响服务的注册与发现

关于注册中心的传播与同步的方向性问题

服务配置信息:

server.port=11000

spring.application.name=es-keyword-service

// 只向注册中心集群中的一个节点注册服务
eureka.client.service-url.defaultZone=http://peer1:10010/eureka/

注册中心配置信息:

# 配置服务端口
server.port=10000

spring.application.name=es-eureka-server

eureka.instance.hostname=localhost

eureka.client.service-url.defaultZone=http://peer2:10020/eureka/
# 配置服务端口
server.port=10010

spring.application.name=es-eureka-server

eureka.instance.hostname=peer1

eureka.client.service-url.defaultZone=http://localhost:10000/eureka/
# 配置服务端口
server.port=10020

spring.application.name=es-eureka-server

eureka.instance.hostname=peer2

eureka.client.service-url.defaultZone=http://peer1:10010/eureka/

这里写图片描述

  • 此时若每一个注册中心节点都是正常运行的,则所有注册中心都可以同步到服务注册信息
  • 若此时一个节点发生故障, 比如port:10000这个节点发生了故障, 则节点10020这个节点不能同步到服务注册信息
  • Eureka Server具备单方面有指向的服务传播与同步机制,在一些对服务发现有限制的情况下,可以利用这样的机制进行服务注册与发现的的单向控制
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值