机器:Eureka1、Eureka2、Users
搭建成功的正常情况:
过一会儿就出现受保护的警告:
Renews threshold:期望每分钟达到的心跳次数。(默认计算方式:2 * n * 0.85,n是服务器数量,如果注册中心进行自己注册自己的话,也要算上)
因为每分钟服务实例默认向注册中心发送心跳间隔是30秒,所以是2。可以通过eureka.instance.lease-renewal-interval-in-seconds来进行设置。
续约比例默认是0.85,可以通过eureka.server.renewal-percent-threshold来设置续约比例。
如果修改了以上两个属性的默认值,那么计算方式把对应的项改成设置后的再进行计算。
Renews (last min):上一分钟的心跳次数。
主要是因为在15分钟内,实际心跳的次数未达到期望心跳次数的百分之八十五。
EurekaServer的application配置:
# 应用名
spring:
application:
name: EurekaServer
profiles:
active:
- server1
Eureka1配置:
# 服务端口
server:
port: 8761
eureka:
instance:
# 注册中心地址
hostname: eurekaServer1
client:
# 是否从注册中心获取注册表信息
fetchRegistry: false
# 是否向注册中心注册自己
register-with-eureka: false
serviceUrl:
defaultZone: http://eurekaServer2:8762/eureka/
Eureka2配置:
# 服务端口
server:
port: 8762
eureka:
instance:
# 注册中心地址
hostname: eurekaServer2
client:
# 是否从注册中心获取注册表信息
fetchRegistry: false
# 是否向注册中心注册自己
register-with-eureka: false
serviceUrl:
defaultZone: http://eurekaServer1:8761/eureka/
eurekaServer1和eurekaServer2需要在hosts文件里配置:
127.0.0.1 eurekaServer1
127.0.0.1 eurekaServer2
Users配置:
# 应用名
spring:
application:
name: Users
# 引用指定文件
profiles:
active:
- userserver1
eureka:
client:
serviceUrl:
defaultZone:
http://eurekaServer1:8761/eureka/,
http://eurekaServer2:8762/eureka/
application-userserver1配置:
# 服务端口
server:
port: 8763
windows的hosts文件位置:C:\Windows\System32\drivers\etc
要解决出现保护警告的提示有以下几种方法:
1. 关闭Eureka自我保护机制eureka.server.enable-self-preservation=false(本地自己开发还可以,但是线上环境的话不推荐)
2. 降低续约服务比例eureka.server.renewal-percent-threshold=0.49这个值是在网上大多数推荐的(这个也不推荐)
3. 开启Eureka注册中心的 fetchRegistry(是否从注册中心获取注册表信息)和 register-with-eureka(是否向注册中心注册自己)把这两个设置为true(默认是true)。
我试过第三种方法,百分百可以实现,出现自我保护的提醒概率特别小。除非是网络抖动或服务挂了。不过在服务恢复后,自我保护机制的提醒也会自动消失。如果有哪位伙伴没实现或没懂可以评论,我会尽快尽快回复。
具体的设置成这样的原理回头再研究一遍补上哈( ̄□ ̄||)