Включение zuul повторных попыток прерывает маршрутизацию Eureka на PCF - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь включить возможность повтора в шлюзе Zuul и могу заставить все работать локально, но при развертывании шлюза в PCF я получаю следующую ошибку, когда zuul.retryable=true:

{
  "timestamp": 1524669167094,
  "status": 500,
  "error": "Internal Server Error",
  "exception": "com.netflix.zuul.exception.ZuulException",
  "message": "COMMAND_EXCEPTION"
}

Связанные журналы дают мне следующие подробности исключений:

com.netflix.zuul.exception.ZuulException: Forwarding error
Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: spring-demo failed and no fallback available.
Caused by: org.apache.http.NoHttpResponseException: spring-demo.example.com:443 failed to respond

Я протестировал spring-demo.example.com, и он правильно отвечает (200) в течение 200 мс, и Zuul также может получить действительный ответ, когдаЯ удаляю свойство zuul.retryable (хотя тогда оно не повторяет никаких кодов ошибок или тайм-аутов).

Когда я запускаю локально, я вижу, как RibbonLoadBalancedRetryPolicy пробует разные экземпляры по тайм-ауту или при получении500, так что только в PCF я получаю ошибку.Я проверил, что экземпляры отображаются в PCF Eureka, а также попытался увеличить время ожидания подключения / чтения / hystrix.


Вот схема службы:

  • 2 экземпляра«рабочего» приложения, подключенного к Eureka как «spring-demo»
  • 2 экземпляра «сломанного» приложения, подключенного к Eureka как «spring-demo» (время ожидания или возврат 500)
  • Zuulподключен к Eureka

Zuul application.yml:

zuul:
  ignoredServices: '*'
  ignoredPatterns: '/**/actuator/**'
  retryable: true
  routes:
    spring-demo: '/spring-demo/**'

ribbon:
  retryableStatusCodes: 404, 500
  MaxAutoRetries: 1
  MaxAutoRetriesNextServer: 5
  OkRetryOnConnectionErrors: true

Варианты зависимости Gradle:

  • Spring Boot 1.5.12.RELEASE
  • Spring Cloud Edgware.SR3
  • Pivotal Services 1.6.3.RELEASE
  • spring-boot-starter-web
  • spring-boot-starter-привод
  • Spring-Cloud-Starter-Netflix-Zuul
  • Spring-Retry
  • Spring-Cloud-Services-Starter-Service-Registry
  • Spring-Cloud-Services-Starterвыключатель
...