2017-04-26 7 views
0

私は春の靴と春の雲には新しいです。 私は、複数の場所(異なる国)に対して1つのユーレカサービスを利用できるかどうか質問したいと思います。ユーレカサービス - 場所

たとえば 1つのユーレカサービスと1つのアプリサービスが2回実行されています。スロバキアの場所はもう1つはCZECHの場所です。 そして、私は、その場所と別の共通サービスのエッジサービスを持っていたいと思います。 可能ですか?

diagram

設定ユーレカサービス

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/ 

設定サービス

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 

構成サービス-APIG

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 

eureka instances

サービス-apigateway ateway(プロファイル:SK)のみのサービス(プロファイル:SK)を呼び出すことができますし、サービス共通。プロファイル(cz)も同じ動作をします。それは良いです。 しかし、service-a(profile:sk)がダウンしている場合、service-a-apigateway(profile:sk)はservice-a(profile:cz)を呼び出すことができます。この動作は望ましくありません。

答えて

0

私は3つのユーレカサービスを実行していて、そのうちの1つ(共通のユーレカ)が残りの2つのサービスにレプリケートしたときに解決できました。しかし、良いアイデアかどうかはわかりません。

eureka

0

は私が

「...クライアントと同じゾーン内のサーバーを検索するために使用されるデフォルトでは」両方zuulエッジおよびサービスA.

のプロパティeureka.instance.metadataMap.zoneを設定することで、そう思いますhttp://cloud.spring.io/spring-cloud-static/spring-cloud.html#_using_ribbon_with_eureka

+0

ありがとうございます。私は私の質問を更新しました。 – Bully

+0

私はあなたがそれを好むだけでなく、完全に制限したいと思っています。デフォルトは、他のゾーンにフォールバックするZonePreferenceServerListFilterです。おそらく独自のサーバーリストフィルタを作成して構成することができます。 ZonePreferenceServerListFilter、https://github.com/spring-cloud/spring-cloud-netflix/blob/master/spring-cloud-netflix-core/src/main/java/org/springframework/のソースを参照してください。 cloud/netflix/ribbon/ZonePreferenceServerListFilter.java 次に、新しいフィルタでリボンを再設定します。 http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_customizing_the_ribbon_client – nedenom