尤里卡服务 - 地点

Eureka service - locations

我是 spring 引导和 spring 云的新手。 我想问一下我是否可以为多个位置(不同国家)提供一个尤里卡服务。

例如 一项 eureka 服务和一项应用程序服务 运行 两次 - 位置斯洛伐克,另一个位置捷克。 然后我想为该位置和另一个公共服务提供边缘服务。 可能吗?

配置尤里卡服务

spring:
  application:
    name: eureka-service

server:
  port: 8761
eureka:
  instance:
    preferIpAddress: true
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

配置服务通用

server:
  port: 9082
eureka:
  instance:
    preferIpAddress: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

配置服务-a

spring:
  application:
    name: service-a

eureka:
  instance:
    preferIpAddress: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
---
spring:
  profiles: sk
server:
  port: 9080
eureka:
  instance:
    metadataMap:
      zone: skZone
---
spring:
  profiles: cz
server:
  port: 9081
eureka:
  instance:
    metadataMap:
      zone: czZone

配置 service-a-apigateway

spring:
  application:
    name: service-a-apigateway
zuul:
  routes:
    book-apigateway:
      serviceId: service-a
      path: /api/**
    book-common-api:
      serviceId: service-common
      path: /common/**

eureka:
  instance:
    preferIpAddress: true
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

---
spring:
  profiles: sk
server:
  port: 9050
eureka:
  instance:
    metadataMap:
      zone: skZone

---
spring:
  profiles: cz
server:
  port: 9051
eureka:
  instance:
    metadataMap:
      zone: czZone

service-a-apigateway (profile: sk) 只能调用 service-a (profile: sk) 和 service-common。配置文件 (cz) 具有相同的行为。这很好。 但是当 service-a (profile: sk) 宕机时,service-a-apigateway (profile: sk) 可以调用 service-a (profile: cz)。这种行为是不可取的。

我想是的,通过在 zuul edge 和服务 A 上设置 属性 eureka.instance.metadataMap.zone

"By default it will be used to locate a server in the same zone as the client..."

http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_using_ribbon_with_eureka

当我有三个 eureka 服务 运行 并且其中一个(普通 eureka)复制到其余两个服务时,我能够解决它。但我不知道这是不是个好主意。