欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springcloud-Eureka-注册中心高可用集群搭建

程序员文章站 2024-03-16 17:32:04
...


Eureka注册中心高可用集群就是各个注册中心相互注册.

1.在8761配置文件中,让他的service-url指向8762,在8762配置文件中,让它的service-url指向8761

由于8761和8762互相指向对方,实际上我们构建了一个双节点的服务注册中心集群
application-eureka8761.properties

#内嵌定时tomcat的端口
server.port=8761  
#设置该服务注册中心的hostname  
eureka.instance.hostname=eureka8761
# 自己注册自己
eureka.client.register-with-eureke=false
表示不会检索其他服务
eureka.client.fetch-register=false
#指定服务注册中心的地址位置
eureka.client.service-url:defaultZone:http://eureka8762:8762/eureka/

application-eureka8762.properties

#内嵌定时tomcat的端口
server.port=8762 
#设置该服务注册中心的hostname  
eureka.instance.hostname=eureka8761
# 自己注册自己
eureka.client.register-with-eureke=false
表示不会检索其他服务
eureka.client.fetch-register=false
#指定服务注册中心的地址位置
eureka.client.service-url:defaultZone:http://eureka8761:8761/eureka/

然后在本地host配置文件中:C:Windows\System32\drivers\etc\host

127.0.0.1 eureka8761
127.0.0.1 eureka8761

2.创建两个启动入口分别叫Application8761.java和Application8762.java

运行Application8761.java时在运行配置项目Program Arguments中配置:
–spring.profiles.activate=eureka8761
springcloud-Eureka-注册中心高可用集群搭建
运行Application8762.java时在运行配置项目Program Arguments中配置:
–spring.profiles.activate=eureka8762
springcloud-Eureka-注册中心高可用集群搭建

3.打开两个页面测试是否注册成功

springcloud-Eureka-注册中心高可用集群搭建
springcloud-Eureka-注册中心高可用集群搭建

4.Eureka注册中心高可用集群测试

在要进行注册的服务中配置:

服务提供者的内嵌tomcat端口
server.port=9100
#配置服务的名称
spring.application.name=springcloud-service-provider
#eureka的连接地址
eureka.client.service-url:defaultZone:http://eureka8761:8761/eureka/,http://eureka8762:8762/eureka/

启动服务提供者服务,然后观察注册中心页面,可以看到服务会在两个注册中心上都注册成功
springcloud-Eureka-注册中心高可用集群搭建
springcloud-Eureka-注册中心高可用集群搭建

5.Eureka服务注册中心自我保护机制

自我保护机制是Eureka注册中心的重要特性,是一种应对网络异常的安全保护措施。他的架构哲学是宁可同时保留所有微服务(健康和不健康的都会保留),也不盲目注册任何健康的微服务,使用自我保护模式,可以让Eureka集群更加的健壮,稳定。当Eureka注册中心进入自我保护模式时,在Eureka Server首页输出警告信息。
springcloud-Eureka-注册中心高可用集群搭建
在没有Eureka自我保护的情况下,如果Eureka Server在一定时间内没有接受到某个微服务实例的心跳,Eureka Server将会注销该实例,但是当发生网络分区故障时,那么微服务与Eureka Server之间将
无法正常通信。微服务本身没有问题,不应该注销这个微服务,如果没有自我保护机制,Eureka Server将会把这个微服务注销掉。
Eureka通过自我保护模式来解决,当EurekaServer节点在短时间内丢失过多客户端时,就会把这个微服务进行节点保护,一旦进入自我保护模式,EurekaServer就会保护服务注册表中的信息,不删除服务注册表中的数据。恢复后,会自我退出自我保护模式。
当然也可以使用配置项禁用自我保护模式。

eureka.server.enable-self-preservation=false

当EurekaServer自我保护模式也会给我们带来一些困扰,如果在保护器内某个服务提供者刚好非正常下线了,此时消费者就会拿到一个无效的服务实例,此时就会调用失败,对于这个问题需要服务消费者端具有一些容错机制,如重试,断路器等。
springcloud-Eureka-注册中心高可用集群搭建
服务端配置:

#测试时关闭自我保护机制,保证不可用服务及时踢出
eureka.server.enable-self-preservation=false

客户端配置:

#每间隔2s,向服务端发送一次心跳,证明自己依然存活默认30s
eureka.instance.lease-renewal-interval-in-seconds=2
#告诉服务端,如果我10s之内没有给你发心跳就代表故障了,将自己踢出掉。默认90s
eureka.instance.lease-expiration-duration-in-seconds=10