Eureka 集群搭建(HA)原理与实战
文章很长,而且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 :
免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备
免费赠送 经典图书:《Java高并发核心编程(卷1)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷2)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《Java高并发核心编程(卷3)加强版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 经典图书:《尼恩Java面试宝典 最新版》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取
Eureka 高可用集群(HA)
在分布式系统中,任何的地方存在单点,整个体系就不是高可用的,Eureka 也一样,在上面的架构图中Eureka Server不是以单点存在的,而是以集群的方式对外提供服务。
为了提供高可用性,说白了就是保证机器挂了还是可以服务注册的能力,一般都不会将注册中心部署到一台机器上,而是采取多台机器部署,集群化管理。
注册中心的集群化,最简单的做法就是:
将注册中心相互注册,但是不开启检索服务的能力(fetch-registry: false
)
这也是Eureka的特性使得的,因为Eureka身兼三职,其中一职(Eureka Client)天然就是客户端角色。
模拟的实验,修改hosts文件,模拟三个节点,添加对应的映射:
127.0.0.1 register-master
127.0.0.1 register-salve1
127.0.0.1 register-salve2
主节点的配置为:
修改配置文件
master:
#服务端口
server:
port: 8880
eureka:
instance:
hostname: register-master
client:
#通过设置fetch-registry与register-with-eureka 表明自己是一个eureka服务
fetch-registry: false
register-with-eureka: true
#注册register-salve1,register-salve2做注册中心集群
service-url:
defaultZone: http://register-salve1:8881/eureka/,http://register-salve2:8882/eureka/
spring:
application:
name: register-center
salve1节点的配置为:
#服务端口
server:
port: 8882
eureka:
instance:
hostname: register-salve1
client:
#通过设置fetch-registry与register-with-eureka 表明自己是一个eureka服务
fetch-registry: false
register-with-eureka: true
#注册register-salve1,register-salve2做注册中心集群
service-url:
defaultZone: http://register-master:8880/eureka/,http://register-salve2:8881/eureka/
spring:
application:
name: register-center
salve2节点的配置为:
#服务端口
server:
port: 8882
eureka:
instance:
hostname: register-salve2
client:
#通过设置fetch-registry与register-with-eureka 表明自己是一个eureka服务
fetch-registry: false
register-with-eureka: true
#注册register-salve1,register-salve2做注册中心集群
service-url:
defaultZone: http://register-master:8880/eureka/,http://register-salve1:8881/eureka/
spring:
application:
name: register-center
主节点的控制台界面:
slave1节点的控制台界面:
slave2节点的控制台界面:
高可用原理
eureka:
client:
# false表示不向注册中心注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false
service-url:
#设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
-
向注册中心注册自己
register-with-eureka: true
-
自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
fetch-registry: false