SpringCloud - (八)Eureka高可用服务注册中心
程序员文章站
2022-07-12 23:27:09
...
服务注册中心单实例搭建
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具备单方面有指向的服务传播与同步机制,在一些对服务发现有限制的情况下,可以利用这样的机制进行服务注册与发现的的单向控制
推荐阅读
-
Spring-Cloud Eureka注册中心实现高可用搭建
-
SpringCloud微服务实战:一、Eureka注册中心服务端
-
SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载)
-
Eureka的初理解【服务注册与发现、高可用集群、自我保护机制、与Zookeeper的比较】
-
转:SpringCloud服务注册中心比较:Consul vs Zookeeper vs Etcd vs Eureka
-
SpringCloud模拟微服务3-高可用Eureka
-
SpringCloud - (八)Eureka高可用服务注册中心
-
springcloud eureka服务注册中心
-
DotNetCore 注册使用SpringCloud实现微服务负载高可用
-
SpringCloud之Eureka注册中心(服务治理)