Какова правильная конфигурация сервера Eureka на Bluemix?

Я пытался следовать инструкциям по настройке микросервисов с помощью Spring и Bluemix, используя Eureka от Netflix для обнаружения сервисов. Bootstrap.yml следует инструкциям на странице spring.io/блог

Открытие не работает. Журнал ошибок времени выполнения имеет следующее:

15/2/2016 08:26:11  OUT App Caused by: java.net.ConnectException: Connection refused
    15/2/2016 08:26:11  OUT App at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.net.SocksSocketImpl.connect(Unknown Source) ~[na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.net.Socket.connect(Unknown Source) ~[na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:117) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:117) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) ~[httpclient-4.5.1.jar!/:4.5.1]
    15/2/2016 08:26:11  OUT App at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173) ~[jersey-apache-client4-1.19.jar!/:1.19]
    15/2/2016 08:26:11  OUT App ... 19 common frames omitted
    15/2/2016 08:26:11  OUT App 2016-02-15 08:26:11.968  WARN 29 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_MFERESTSERVER/968a9f4f59be49cb9b395db8d4228e59 - registration failed java.net.ConnectException: Connection refused
    15/2/2016 08:26:11  OUT App com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused
    15/2/2016 08:26:11  OUT App at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.jar!/:1.19]
    15/2/2016 08:26:11  OUT App at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.jar!/:1.19]
    15/2/2016 08:26:11  OUT App at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.3.8.jar!/:1.3.8]
    15/2/2016 08:26:11  OUT App at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.jar!/:1.19]
    15/2/2016 08:26:11  OUT App at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.jar!/:1.19]
    15/2/2016 08:26:11  OUT App at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.jar!/:1.19]
    15/2/2016 08:26:11  OUT App at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570) ~[jersey-client-1.19.jar!/:1.19]
    15/2/2016 08:26:11  OUT App at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1562) ~[eureka-client-1.3.8.jar!/:1.3.8]
    15/2/2016 08:26:11  OUT App at com.netflix.discovery.DiscoveryClient.makeRemoteCallWithFollowRedirect(DiscoveryClient.java:1460) ~[eureka-client-1.3.8.jar!/:1.3.8]
    15/2/2016 08:26:11  OUT App at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1443) ~[eureka-client-1.3.8.jar!/:1.3.8]
    15/2/2016 08:26:11  OUT App at com.netflix.discovery.DiscoveryClient.makeRemoteCall(DiscoveryClient.java:1394) ~[eureka-client-1.3.8.jar!/:1.3.8]
    15/2/2016 08:26:11  OUT App at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:879) ~[eureka-client-1.3.8.jar!/:1.3.8]
    15/2/2016 08:26:11  OUT App at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:103) [eureka-client-1.3.8.jar!/:1.3.8]
    15/2/2016 08:26:11  OUT App at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) [na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.lang.Thread.run(Unknown Source) [na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App Caused by: java.net.ConnectException: Connection refused
    15/2/2016 08:26:11  OUT App at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:1.8.0-internal]
    15/2/2016 08:26:11  OUT App at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na

Я чувствую, что в VCAP было какое-то обновление, поэтому я включаю его

System-Provided:
{
 "VCAP_SERVICES": {
  "user-provided": [
   {
    "credentials": {
     "password": "xxxxxx",
     "port": "10336",
     "uri": "xxxx10.dblayer.com",
     "user": "xxxxx"
    },
    "label": "user-provided",
    "name": "MongoDB by Compose-w9",
    "syslog_drain_url": "",
    "tags": []
   },
   {
    "credentials": {
     "uri": "http://eurekaServer.mybluemix.net"
    },
    "label": "user-provided",
    "name": "eureka-service",
    "syslog_drain_url": "",
    "tags": []
   }
  ]
 }
}

{
 "VCAP_APPLICATION": {
  "application_id": "xxdf3f0906",
  "application_name": "restServer",
  "application_uris": [
   "MfeRestServer.mybluemix.net"
  ],
  "application_version": "047127",
  "limits": {
   "disk": 1024,
   "fds": 16384,
   "mem": 1024
  },
  "name": "restServer",
  "space_id": "xxxxxxd89089d9",   
  "space_name": "xxxxxxxx", 
  "uris": [
   "MfeRestServer.mybluemix.net"
  ],
  "users": null,
  "version": "601cce96-5d69-4f06-9259-dadad8047127"
 }
}

User-Provided:
APPLICATION_PROFILE: mferestserver
SPRING_PROFILES_ACTIVE: cloud

Running Environment Variable Groups:
BLUEMIX_REGION: ibm:yp:us-south

Staging Environment Variable Groups:
BLUEMIX_REGION: ibm:yp:us-south

person Ilan Toren    schedule 15.02.2016    source источник


Ответы (1)


Я столкнулся с этой проблемой при написании собственного сервера и клиентов eureka. Это связано с конфигурацией имени хоста клиента и serviceUrl. Он должен быть динамическим, чтобы его можно было разместить в облаке.

Вот пример моего сервера Eureka и клиента на IBM Bluemix.

Я использовал следующие переменные среды Cloud Foundry Environment, и это сработало

Для клиента Эврика

eureka:
  client:
    serviceUrl:
      defaultZone: http://eurekaregistry.mybluemix.net/eureka/
  instance:
    hostname: ${CF_INSTANCE_IP:localhost}
    nonSecurePort: ${CF_INSTANCE_PORT:${PORT:${server.port:8888}}}

Для сервера эврика

eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://eurekaregistry2.mybluemix.net/eureka/

Репозитории кода

person Sacky San    schedule 10.03.2016