SpringCloud 之 Eureka 高可用

本文介绍了如何实现EurekaServer的高可用性,通过创建两个配置文件application-localserver1.yml和application-localserver2.yml,启动两个EurekaServer实例,并确保服务提供者注册到集群的不同节点。Eureka服务间会互相注册并同步数据,确保客户端能获取完整服务信息。此外,还提到了EurekaServer的访问地址和常用参数设置。
摘要由CSDN通过智能技术生成

如何实现?

EurekaServer作为集群,是高可用的Eureka中心。
Eureka服务之间会互相注册为服务,服务提供者注册到Eureka Server集群中的一个节点时,该节点会把服务的信息同步给集群的所有节点,从而实现数据同步。所以客户端拉取到Eureka Server集群中的完整的Server信息

搭建高可用的EurekaServer

创建springboot项目,创建两份配置文件application-localserver1.yml和 application-localserver2.yml 启动两次并分别指定激活环境。

#应用名称,会在eureka中显示
spring:
  application:
    name: eureka-server
server.port: 8001
eureka:
  instance:
    hostname: localserver2
  client:
    fetch-registry: true
    register-with-eureka: true
    registry-fetch-interval-seconds: 30
          #eureka的服务器地址
      #如果是集群的话,需要指定其他服务器的地址
    service-url:
      defaultZone: http://localserver2:8002/eureka/
#应用名称,会在eureka中显示
spring:
  application:
    name: eureka-server
server.port: 8002
eureka:
  instance:
    hostname: localserver1
  client:
    fetch-registry: true
    register-with-eureka: true
    registry-fetch-interval-seconds: 30
    service-url:
      defaultZone: http://localserver1:8001/eureka/

生产者 因为EurekaServer不止一个,因此注册服务的时候,service-url参数需要变化

server:
  port: 8003

spring:
  application:
    name: lst-eureka-client

eureka:
  instance:
    prefer-ip-address: true
    #服务失效时间;eureka server至上一次收到client的心跳之后,等待下一次心跳的超时时间,超过时间内若没收到下一次心跳,则移除该instance
    #该值至少应该大于 lease-renewal-interval-in-second
    lease-expiration-duration-in-seconds: 6
    #服务续约(renew);eureka client发送心跳给server端的频率默认30s。如果在lease-expiration-duration-in-seconds后server端没有收到client的心跳,则将摘除该instance。
   # 除此之外,如果该instance实现了HealthCheckCallback,并决定让自己unavailable的话,则该instance也不会接收到流量。
    lease-renewal-interval-in-second: 5
  client:
    #是否注册信息到eureka服务器以供其他服务发现,默认为false
    register-with-eureka: true
    #客户端是否获取eureka服务器注册表上的注册信息,默认为true
    fetch-registry: true
    #eurekaclient间隔多久去拉取服务注册信息,默认为30秒
    registry-fetch-interval-seconds: 10
    ## defaultZone向多个服务注册 官网推荐使用一下方法
---
eureka:
  instance:
    instance-id: ${spring.application.name}:${server.port}::${random.int[0,20]}
  client:
    serviceUrl:
      defaultZone: http://localserver2:8002/eureka/

---
eureka:
  instance:
    instance-id: ${spring.application.name}:${server.port}::${random.int[0,20]}
  client:
    serviceUrl:
      defaultZone: http://localserver1:8001/eureka/

host配置  
c:\windows\system32\drivers\etc
127.0.0.1 localserver1 
127.0.0.1 localserver2

常用参数

#当服务消费者启动时,会检测 eureka.client.fetch-registry=true 参数的值,如果为true,则会拉取Eureka Server服务的列表只读备份,然后缓存在本地。并且每隔30秒会重新获取并更新数据。
eureka:
  client:
    registry-fetch-interval-seconds: 5 #默认即可

# 自我保护
 eureka:
  server:
    enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 1000 # 扫描失效服务的间隔时间(缺省为60*1000ms)
// 服务续约
#有两个重要参数可以修改服务续约的行为:
#lease-renewal-interval-in-seconds:服务续约(renew)的间隔,默认为30秒
#lease-expiration-duration-in-seconds:服务失效时间,默认值90秒
eureka:
  instance:
    lease-expiration-duration-in-seconds: 90
    lease-renewal-interval-in-seconds: 30`

访问

http://localserver1:8001
http://localserver2:8002

参数使用

客户端

服务端

   LeaseRenewalIntervalInSeconds  eureka客户需要多长时间发送心跳给eureka服务器,表明它仍然活着,默认为30 秒

   LeaseExpirationDurationInSeconds Eureka服务器在接收到实例的最后一次发出的心跳后,需要等待多久才可以将此实例删除,默认为90秒
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值