如何在Spring Cloud中从客户端配置多个Eureka服务器

use*_*967 32 spring-cloud netflix-eureka

从spring doc,我看到我们可以将peer eureka服务器放在一起,所以对于Eureka1,在application.yml中,我可以:

spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2/eureka/
Run Code Online (Sandbox Code Playgroud)

在Eureka Server 2中,我可以:

spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1/eureka/
Run Code Online (Sandbox Code Playgroud)

现在这两个eureka服务器互相认识,这很好.但是,现在在配置客户端时,当他们再次注册Eureka时,该怎么做?

在我的客户端应用程序中,我有:

eureka:
      instance:
        hostname: ${host.instance.name:localhost}
        nonSecurePort: ${host.instance.port:8080}
        leaseRenewalIntervalInSeconds: 5 #default is 30, recommended to keep default
        metadataMap:
          instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
      client:
        serviceUrl:
          defaultZone: http://(eurekaServerHost):8761/eureka/

    server:
      port: ${host.instance.port:8080}
Run Code Online (Sandbox Code Playgroud)

所以现在我的问题是我应该在客户端application.yml中使用peer1或peer2作为EurekaServerHost吗?

谢谢

spe*_*ibb 34

使用逗号分隔的对等列表eureka.client.serviceUrl.defaultZone.

eureka.client.serviceUrl.defaultZone=http://<peer1host>:<peer1port>/eureka,http://<peer2host>:<peer2port>/eureka
Run Code Online (Sandbox Code Playgroud)

  • 来自https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication"服务器开始接收流量后,服务器上执行的所有操作都会复制到所有服务器上服务器知道的对等节点.如果某个操作由于某种原因失败,则在下一个也会在服务器之间复制的心跳上协调该信息. (5认同)