2016-03-26 4 views
0

ピア認知の概念を理解するために、ユーレカサーバの例を実行しているときに問題に直面しています。 私は、次のしているユーレカサービス:ユーレカピア認知の例が動作しない

package com.micro.eurekaserver; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 

@SpringBootApplication 
@EnableDiscoveryClient 
@EnableEurekaServer 
public class EurekaServerMicroServiceApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(EurekaServerMicroServiceApplication.class, args); 
    } 
} 

application.yml

--- 
spring: 
    profiles: peer1 
server: 
    port: 8761 
eureka: 
    instance: 
    hostname: peer1 
    client: 
    serviceUrl: 
     defaultZone: http://peer2:8762/eureka/ 

--- 
spring: 
    profiles: peer2 
server: 
    port: 8762 
eureka: 
    instance: 
    hostname: peer2 
    client: 
    serviceUrl: 
     defaultZone: http://peer1:8761/eureka/ 

bootstrap.yml

spring: 
    application: 
    name: eureka 

etc/hostsの

127.0.0.1 peer1 
127.0.0.1 peer2 
localhost peer1 
localhost peer2 

私は継続的に次の例外になっています、このユーレカサービスを実行しています:

2016年3月26日12:19:57.708 ERROR 4940 --- [メイン]

com.netflix.discovery.DiscoveryClient : Can't contact any eureka nodes - possibly a security group issue? 

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect 
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.jar:1.19] 
    at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.jar:1.19] 
    at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.3.7.jar:1.3.7] 
    at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.jar:1.19] 
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.jar:1.19] 
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.jar:1.19] 
    at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:509) ~[jersey-client-1.19.jar:1.19] 
    at com.netflix.discovery.DiscoveryClient.getUrl(DiscoveryClient.java:1802) [eureka-client-1.3.7.jar:1.3.7] 
    at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1546) [eureka-client-1.3.7.jar:1.3.7] 
    at com.netflix.discovery.DiscoveryClient.makeRemoteCallWithFollowRedirect(DiscoveryClient.java:1460) [eureka-client-1.3.7.jar:1.3.7] 
    at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1443) [eureka-client-1.3.7.jar:1.3.7] 
    at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1394) [eureka-client-1.3.7.jar:1.3.7] 

2016-03-26 12:23:09.963 ERROR 4940 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_EUREKA/KHUJEMA-PC:eureka - was unable to send heartbeat! 

com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect 
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.jar:1.19] 
    at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.jar:1.19] 
    at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.3.7.jar:1.3.7] 
    at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.jar:1.19] 
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.jar:1.19] 

を私は単一のインスタンスでユーレカサービスを正常に実行できるようになりました。私は2つのインスタンスの問題に直面しています。私はログにも気付いたのは、Tomcat組み込みのサーバーが8761/8762の代わりにポート8080で起動していることです。理由はわかりません。

助けてください!

答えて

0

Application.javaから@EnableDiscoveryClientを削除してみます。鉱山は、次のようになります。

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 

@SpringBootApplication 
@EnableEurekaServer 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 
0

EurekaはまだあなたがアクティブSpringプロファイルを渡していない最も可能性の高い8080で開始している場合。

各インスタンスは、として起動する必要があります:ところで

java -Dspring.profiles.active=peer1 target/<artifact>.jar 

java -Dspring.profiles.active=peer2 target/<artifact>.jar 

、私は別の方法でインスタンスを起動することをお勧め、私はこれは非常によくスケールとは思いません3番目のインスタンスを開始する必要がある場合はどうなりますか?この設定では、おそらくapplication.ymlを変更して3番目のプロファイルを追加する必要がありますか?その問題を参照してください。私はSpringプロファイルを使用してstandalonepeerAwareモードでEurekaを実行しているカバーどこ

は、私は最近、およそMicroservices Registration and Discovery using Spring Cloud Eureka Ribbon and Feignブログ。 peerAwareプロファイルでは、VM引数を使用して他のEurekaインスタンスの場所を渡すため、コードを変更して新しいインスタンスを開始する必要はありません。また、FeignRibbon、およびRestTemplateを使用してロードバランシング要求をカバーし、クライアントはJersey 1とSpring RESTを使用して実装されています。

関連する問題