2

У меня есть приложение весеннего ботинка/весеннего облака (архитектура микросервиса MS), построенное с помощью инструментов netflix и которое я хочу развернуть на кластере кубернетов (один мастер и 2 миньона), чтобы получить преимущество от своего факта оркестровки.интегрировать эврика с проблемой кубернетов

Кстати, я создал службу kube-dns на кластере, и я также попытался установить сервис eureka (названный eurekaservice) с 3-мя стручками. С другой стороны, я запустить микро-сервис со следующей конфигурацией: эврика

client: 
    serviceUrl: 
    defaultZone: http://eurekaservice:8761/eureka/ 

Хорошая новость заключается в том, что каждый эврика стручок на кластере получить уведомление о новом смонтированный экземпляр MS. Плохая новость заключалась в том, что когда MS уходит, только один eureka pod получает уведомление, а остальные нет. Другое дело, что когда я вижу логфайл MS, в то время как установлен, он показывает мне следующие ошибки:

Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: 2016-12-01 06:01:54.469 ERROR 1 --- [nio-8761-exec-1] c.n.eureka.resources.StatusResource: Could not determine if the replica is available 

Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: 
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: java.lang.NullPointerException: null 
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at com.netflix.eureka.resources.StatusResource.isReplicaAvailable(StatusResource.java:90) 
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at com.netflix.eureka.resources.StatusResource.getStatusInfo(StatusResource.java:70) 
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at org.springframework.cloud.netflix.eureka.server.EurekaController.status(EurekaController.java:63) 
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source) 
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at java.lang.reflect.Method.invoke(Method.java:606) 


Dec 01 09:02:16 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:16.918 WARN 1 --- [nio-8761-exec-8] com.netflix.eureka.InstanceRegistry  : DS: Registry: lease doesn't exist, registering resource: MS - gateway-bbn50:MS:8090 
Dec 01 09:02:16 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:16.919 WARN 1 --- [nio-8761-exec-8] c.n.eureka.resources.InstanceResource : Not Found (Renew): MS - gateway-bbn50:MS:8090 
Dec 01 09:02:16 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:16.927 INFO 1 --- [nio-8761-exec-5] com.netflix.eureka.InstanceRegistry  : Registered instance id 12.16.64.2 with status UP 
Dec 01 09:02:17 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:17.061 INFO 1 --- [io-8761-exec-10] com.netflix.eureka.InstanceRegistry  : Registered instance id 12.16.64.2 with status UP 
Dec 01 09:02:46 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:46.932 WARN 1 --- [nio-8761-exec-9] com.netflix.eureka.InstanceRegistry  : DS: Registry: lease doesn't exist, registering resource: MS - gateway-bbn50:MS:8090 

Я думаю, что причиной проблемы является то, что точные копии не удалось увидеть друг друга.

как я могу решить эту проблему !!

ответ

0

Как кажется, вы хотите заменить открытие Eureka открытия Kubernetes здесь еще один ответ (от http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html):

Сначала отключить поддержка эврика в ленте:

ribbon: 
    eureka: 
    enabled: false 

Затем добавить конфигурационное свойство, как это в вашем шлюзе для каждого microservice вы хотите получить доступ через шлюз (вы можете загрузить эти свойства с сервером конфигурации).

app1: 
    ribbon: 
    listOfServers: app1-k8s-service-name 
app2: 
    ribbon: 
    listOfServers: app2-k8s-service-name 

Тогда ваш шлюз должен иметь возможность правильно направлять вызовы на ваши микросервисы.

+0

благодарит вас за поддержку. Так как же другие микросервисы (кроме шлюза)?мне нужно определить свойство конфигурации, как указано выше? потому что некоторые микросервисы должны звонить друг другу внутри, чтобы достичь некоторых задач. Кроме того, что вы подразумеваете под «app1», «app2»? В моем случае у меня есть одно шлюзовое микросервис с четырьмя другими микросервисами (обучение, сообщение, настройки и вложение). как я могу продолжить? еще раз спасибо. – mootez

+0

еще одна вещь, мне нужно что-то изменить в свойстве конфигурации Zuul? @Pierre Besson – mootez

+0

Да заменить app1, app2 на applicationName микросервисов тура. И если ваши микросервисы должны называть себя внутренне, им нужен такой же типконфигурации, как и шлюз. И обычно нет необходимости редактировать дальнейшую конфигурацию Zuul. –

0

Проблема в том, что Eureka - приложение с поддержкой состояния, и вы не можете масштабировать его, просто увеличивая количество реплик.

Посмотреть Эврика «равный awereness» Документы http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html

+0

Спасибо вам за ответ @Pierre Besson. Но мне нужно знать, как мне нужно действовать в этом случае? – mootez

+0

да, вы должны. Я предлагаю не использовать контейнеры, а настраивать отдельные службы eureka и настраивать их в кластер. Kubernetes пытается абстрагироваться от этой явной конфигурации, используя внутренний loadbalancing и sd через DNS ... в то время как netflix делает обратное, предлагая стек, который очень несовместим с его базовым форматом –

+0

@David Steiman, проблема в том, что у меня уже есть приложение java, работающее с лентой, zuul и eureka, и я хочу перейти выше кубернетов, чтобы воспользоваться преимуществами своей функции оркестровки. Мне нужно, чтобы работа eureka работала, в противном случае влияние перехода на DNS (которое я не знаю, размер) может быть очень большим. – mootez