2017-02-06 18 views
0

У меня есть микросервис, развернутый в кластере ECS с балансировщиком нагрузки приложения и целевой группой, настроенной как передняя часть.API-шлюз вызывает вызовы конечной точки балансировки нагрузки приложения перед микросервисом, развернутым в Amazon ECS

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

Теперь, когда я создаю ресурс и метод POST в API шлюза с HTTP Endpoint сконфигурированный в качестве приложения нагрузки балансира Службы, что я вижу в том, что в некоторых случаях это дает следующее сообщение об ошибке:

Status: 504 
Latency: 3026 ms 
Response Body 
{ 
    "message": "Network error communicating with endpoint" 
} 


Execution log for request test-request 
Mon Feb 06 21:47:00 UTC 2017 : Starting execution for request: test-invoke-request 
Mon Feb 06 21:47:00 UTC 2017 : HTTP Method: POST, Resource Path: /find 
Mon Feb 06 21:47:00 UTC 2017 : Method request path: {} 
Mon Feb 06 21:47:00 UTC 2017 : Method request query string: {} 
Mon Feb 06 21:47:00 UTC 2017 : Method request headers: {} 
Mon Feb 06 21:47:00 UTC 2017 : Method request body before transformations: 
Mon Feb 06 21:47:00 UTC 2017 : Endpoint request URI: http://microservice-alb-xxxxxxx.us-east-1.elb.amazonaws.com/find 
Mon Feb 06 21:47:00 UTC 2017 : Endpoint request headers: {x-amzn-apigateway-api-id=hw4gf0e5ui, Accept=application/json, User-Agent=AmazonAPIGateway_hxyf0t7ui, X-Amzn-Trace-Id=Root=1-456twed4-97d26555a0abcd123413ad35} 
Mon Feb 06 21:47:00 UTC 2017 : Endpoint request body after transformations: 
Mon Feb 06 21:47:03 UTC 2017 : Execution failed due to an internal error 
Mon Feb 06 21:47:03 UTC 2017 : Method completed with status: 504 

Несколько раз он отлично работает и дает правильный ответ со статусом 200 и несколько раз дает вышеприведенный ответ. То же самое происходит при выполнении теста в шлюзе API, а также при развертывании ресурса на этапе и доступ к нему через сцену.

Я включил журналы доступа для балансировки нагрузки приложения, а также включил журналы просмотра облаков, переопределив настройки сцены в шлюзе API. Но я не получаю подробной информации об этой ошибке.

Как устранить проблему, почему эта ошибка возникает в шлюзе API?

Спасибо,

Ranjith

ответ

1

Единственный раз, когда я видел 504s с ALB это когда ALB был развернут перед кластером только с одной зоны доступности. Для ALB требуется несколько AZ, и вы получите случайные таймауты, когда ALB пытается найти маршруты в других AZ.

Если вы исключили ALB, в вашем коде API-шлюза может произойти что-то. Я бы упростил там вещи, есть ли у вас специальный валидатор? Если так, включите кеширование учетных данных во время отладки. Это также может быть проще протестировать с помощью новых сопоставлений пересылок, если вы уже не используете это.

0

Для меня эта очень загадочная ошибка AWS («Выполнение не удалось из-за внутренней ошибки») было решено, не устанавливая ни одного заголовка ответа на нуль (даже жестко, что текущая документация утверждает, что это разрешено)