Eureka的高可用
说明
所谓的Eureka高可用就是,配置多个Eureka注册中心,让注册中心具有高可用性。
配置说明
因为需要两个以上的注册中心,所以我们将原来的Eureka注册中心,复制为两份,端口分别为:5121、5122,修改后分别启动
如果我们单独启动多个配置中心,然后服务配置多个注册中心。发现注册中心的数据不是同步的。
例如:配置分别将服务方与调用方都配置了两个注册中心的地址。
##指定注册中心的入口:
eureka.client.service-url.defaultZone=http://localhost:5121/eureka,http://localhost:5122/eureka
结果为:
注册中心1,我们发现服务方的数据在5121的注册中心
注册中心2,我们发现调用方的数据在5122注册中心上
所以,我们要解决这个两个注册中心的数据同步问题。我们只要对这个两个注册中心交叉配置,就可以配置双机热备了。
配置步骤
第一步:修改主机的hosts文件
为了让配置更加清晰,我们模拟两个注册中心的地址是有差异。所以我们通过修改hosts文件来解决。
--文件位置
--增加内容为: 127.0.0.1 eureka1
127.0.0.1 eureka2
第二步:修改eureka-server1
##服务器信息
server.port=5121
##指定Eureka服务信息
eureka.instance.hostname=eureka1
##服务入口
eureka.client.service-url.defaultZone=http://eureka2:5122/eureka
#3.是否将自身注册为服务 false表示不注册
eureka.client.register-with-eureka=false
#4.是否主动发现服务 false表示不发现
eureka.client.fetch-registry=false
第三步:修改eureka-server2
##服务器信息
server.port=5122
##指定Eureka服务信息
eureka.instance.hostname=eureka2
##服务入口
eureka.client.service-url.defaultZone=http://eureka1:5121/eureka
#3.是否将自身注册为服务 false表示不注册
eureka.client.register-with-eureka=false
#4.是否主动发现服务 false表示不发现
eureka.client.fetch-registry=false
第四步:重启两个Eureka
查看控制台,发现数据同步了
配置三台以上Eureka集群
第一步:修改主机的hosts文件
第二步:配置文件(application.properties或者application.yml)修改
Eureka1配置文件
##端口配置
server.port=5121
##主机名
eureka.instance.hostname=eureka1
##Eureka服务配置
##开放访问的路径
eureka.client.service-url.defaultZone=http://eureka2:5122/eureka,http://eureka3:5123/eureka
##设置自己不注册为服务
eureka.client.register-with-eureka=false
Eureka2配置文件
##端口配置
server.port=5122
##主机名
eureka.instance.hostname=eureka2
##Eureka服务配置
##开放访问的路径
eureka.client.service-url.defaultZone=http://eureka1:5121/eureka,http://eureka3:5123/eureka
##设置自己不注册为服务
eureka.client.register-with-eureka=false
Eureka3配置文件
##端口配置
server.port=5123
##主机名
eureka.instance.hostname=eureka3
##Eureka服务配置
##开放访问的路径
eureka.client.service-url.defaultZone=http://eureka1:5121/eureka,http://eureka2:5122/eureka
##设置自己不注册为服务
eureka.client.register-with-eureka=false
第三步:核对是否成功
--进入任何一个Eureka后台,确认是否检测到另外两台的Eureka了
--核对数据是否同步了没有,查看注册实例是否都是一致的。
Eurka的自我保护机制
Application Service 在启动后,每隔30s会向Eurka Server发送一次心跳来证明自己可用
当Eurka Server 90s没有收到心跳后,会认为提供者已经宕机,进行销毁。
Eureka中有一种自我保护机制。当15分钟内超过85%的服务提供者都没有正常的心跳包时,Eureka认为Server和Client之间出现了网络问题。这个时候将不在因为没有收到心跳而销毁实例。Client依然可以访问Server,但是Server不会把内容同步到其他Server中。当网络稳定后,Server会把注册的信息同步到其他Server中。
在Eureka中自我保护机制默认为开启的:
如何关闭自我保护机制:
eureka:
server:
# 关闭自我保护
enable-self-preservation: false
# 扫描失效服务的时间间隔
eviction-interval-timer-in-ms: 10000