spring cloud学习之三:服务治理(高可用)

翻译成中文大概是:自我保护模式已关闭。如果出现网络/其他问题,这可能无法保护实例过期。

是因为设置
#本地调试 关闭“自我保护”功能,防止已关闭的实例无法被注册中心剔除的问题
eureka.server.enable-self-preservation=false

上一节的学习了单个服务注册的搭建,已经基本了解了服务注册、服务发现的关系;但是在实际生产环境下,为保证服务的可靠性,高可用等,必然要实现服务注册的高可用。

开启自我注册

在单个服务注册的搭建中,为防止自己注册自己设置了两个配置,

##默认eureka会把自己当作一个服务进行注册,禁止注册自己
#由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己
eureka.client.register-with-eureka=false
#该服务作为注册中心,只需维护服务实例,不需要获取服务
eureka.client.fetch-registry=false

若想让服务注册中心高可用,就必须让注册中心也作为服务发现进行注册,因此,需要把以上两个配置设为true。

修改配置文件

----- 配置一 ----
#服务端口
server.port=1111
spring.application.name=eureka-server
#eureka 主机IP
eureka.instance.hostname=peer1
#eureka.instance.hostname=127.0.0.1
##默认eureka会把自己当作一个服务进行注册,禁止注册自己
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
#访问eureka地址
eureka.client.service-url.defaultZone=http://peer2:1112/eureka/
#本地调试 关闭“自我保护”功能,防止已关闭的实例无法被注册中心剔除的问题
eureka.server.enable-self-preservation=true

----- 配置二 ----
#服务端口
server.port=1112
spring.application.name=eureka-server
#eureka 主机IP
eureka.instance.hostname=peer2
##默认eureka会把自己当作一个服务进行注册,禁止注册自己
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
#访问eureka地址
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/
#本地调试 关闭“自我保护”功能,防止已关闭的实例无法被注册中心剔除的问题
eureka.server.enable-self-preservation=true

peer1 上启动的服务注册 作为服务发现 注册到peer2上;而peer2上启动的服务注册 作为服务发现 注册到peer1上;

类似于这种结构:多个服务注册中心相互注册,以实现服务清单的同步,达到高可用的效果。

spring cloud学习之三:服务治理(高可用)_第1张图片

服务发现-修改配置

#配置服务注册地址
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/

spring cloud学习之三:服务治理(高可用)_第2张图片

 spring cloud学习之三:服务治理(高可用)_第3张图片

配置本地主机名

Windows:在改文件中添加

127.0.0.1 peer1
127.0.0.1 peer2

spring cloud学习之三:服务治理(高可用)_第4张图片

该配置 eureka.instance.hostname 设置的不是 peer1或者peer2 而是 IP的时候  需要添加
#Eureka优先发布服务的IP地址而不是主机名。将eureka.instance.preferIpAddress设置为true,
# 并且当应用程序向eureka注册时,它将使用其IP地址而不是其主机名
eureka.instance.preferIpAddress=true

当peer2开启该配置后,就找不到该服务,显示不可用。

spring cloud学习之三:服务治理(高可用)_第5张图片

 服务续约

# 续约更新时间间隔(默认30秒)
eureka.instance.lease-renewal-interval-in-seconds=5
# 续约到期时间(默认90秒)
eureka.instance.lease-expiration-duration-in-seconds=15

 

你可能感兴趣的:(spring,cloud)