2016-07-25 2 views
0

Согласно этому блогу https://spring.io/blog/2015/07/14/microservices-with-spring, который основан на обнаружении службы eureka и где обнаружение службы работает исправно.Проблема с обслуживанием службы консула с приложениями для загрузки весной

Но когда переключил использовать консул вместо Eureka открытия сервиса не работает и получает эту ошибку:

java.lang.IllegalStateException: No instances available for ACCOUNTS-SERVICE 
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:79) 
at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:46) ... 

ОБНОВЛЕНО: После того, как зафиксировал предыдущую ошибку, обеспечивая правильное медико-проверку конечной точки (см ответ ниже), при развертывании услуг Cloud Foundry с должным условия хоста и портом сервера консула в bootstrap.yml (PropertySource консула на основе загруженного во время фазы «начальной загрузки»):

--- 
spring: 
    profiles: cloud 
    cloud: 
    consul: 
     host: <consul host or ip> 
     port: 8500 

консул регистрирует услугу , bu t с критическим состоянием (сбой)!

Поблагодарили бы за помощь или руководство.

Благодаря

+1

Вы проверили пользовательский интерфейс Consul, если служба успешно зарегистрирована? Просто для устранения, если вы регистрируете или открываете. –

+0

Да, служба не работает (обозначена как критическая). – kmarabet

+1

Возможно, вы изменили свои медицинские проверки? –

ответ

2

Проблема была связана с пути по умолчанию Консул проверки здоровья, который устанавливается в конечной точке/здоровья. Таким образом, после включения пружинного привода во все клиентские приложения (веб-сервер и микросервис) эта проблема была решена.

Или вы можете изменить консул по умолчанию здоровья проверки конечной точки в файле bootstrap.yml:

cloud: 
    consul: 
     discovery: 
     healthCheckPath: /test 

NB. Для включения пружинного привода в мавена следующая зависимость была добавлена ​​в файл pom.xml:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
</dependency> 

Для получения дополнительной информации см: http://cloud.spring.io/spring-cloud-consul/spring-cloud-consul.html

При развертывании (толкание) на CF (CloudFoundry) УИР развернуто приложение должно быть обеспечено, чтобы консул для процесса обнаружения службы (CF обеспечивает идентификаторы URI приложения в переменной vcap.application.uris окружающей среды), таким образом, следующая конфигурация должна быть добавлена ​​в файл bootsrap.yml:

--- 
spring: 
    profiles: cloud 
    cloud: 
    consul: 
     host: <consul host or ip> 
     port: 8500 
     discovery: 
     instanceId: ${spring.application.name}:${vcap.application.application_name}:${vcap.application.instance_id} 
     hostname: ${vcap.application.uris[0]} 
     port: 80 

NB. instanceId is used by Consul to register the application (microservice) instance.