Size: a a a

2019 October 25

D

Darth Corsair in Istio_ru
может кто сталкивался и может подсказать в какую сторону копать?
нарвались на проблемы с приложениями, когда снаружи istio обслуживается http2, а внутрь в приложение отправляет http1.1. Так вот отправляет он эти запросы в 1.1 по одному, т.е. все мультиплексирование теряется и начинаются пролагивания приложения.
nginx-ingress прекрасно разруливает такую же ситуацию.
в двух словах: простое приложение в браузере js отправляет в бэк два запроса (h2 == один коннект), в приложение от истио стучится http1.1 (что логично, потомучто бэк не учили работать с http2 и замена имени порта на http2 не прокатит) и присылает эти два запроса не вместе в два потока, в а один, по очереди, дожидаясь ответа от приложения на каждый.
источник

D

Darth Corsair in Istio_ru
в итоге у нас разница между istio и nginx в секундах измеряется (бэк отвечает на каджый запрос около 2 секунд)
источник

D

Darth Corsair in Istio_ru
т.е. в случае с истио, грубо говоря, мы ждем ответа 4 секунды, а в случае с nginx - 2 🙁
источник

АШ

Александр Шматов in Istio_ru
Darth Corsair
может кто сталкивался и может подсказать в какую сторону копать?
нарвались на проблемы с приложениями, когда снаружи istio обслуживается http2, а внутрь в приложение отправляет http1.1. Так вот отправляет он эти запросы в 1.1 по одному, т.е. все мультиплексирование теряется и начинаются пролагивания приложения.
nginx-ingress прекрасно разруливает такую же ситуацию.
в двух словах: простое приложение в браузере js отправляет в бэк два запроса (h2 == один коннект), в приложение от истио стучится http1.1 (что логично, потомучто бэк не учили работать с http2 и замена имени порта на http2 не прокатит) и присылает эти два запроса не вместе в два потока, в а один, по очереди, дожидаясь ответа от приложения на каждый.
Буквально 2 сообщения выше описываю ту же проблему... Удавалась заставить envoy конвертировать в h2 в тестовой среде (не k8s, а в docker-compose) напрямую манифестом для envoy. Как заставить через Istio не понятно...
источник

D

Darth Corsair in Istio_ru
Не совсем та же проблема ведь)
источник

D

Darth Corsair in Istio_ru
У нас без разницы tls или нет
источник

АШ

Александр Шматов in Istio_ru
Для h2 нужен tls
источник

D

Darth Corsair in Istio_ru
Суть в том что проблема не tls
источник

D

Darth Corsair in Istio_ru
А именно в том что енвой почему-то запросы после http2 шлёт в http1 так же в один поток
источник

АШ

Александр Шматов in Istio_ru
А реплики у вашего бекенда есть?
источник

D

Darth Corsair in Istio_ru
Ага
источник

D

Darth Corsair in Istio_ru
Без разницы сколько
источник

АШ

Александр Шматов in Istio_ru
Узнаете решение, пожалуйста напишите сюда, видимо меня ждёт та же проблема...
источник

D

Darth Corsair in Istio_ru
Ок)
источник
2019 October 27

D

Darth Corsair in Istio_ru
Александр Шматов
Узнаете решение, пожалуйста напишите сюда, видимо меня ждёт та же проблема...
https://github.com/envoyproxy/envoy/blob/master/source/docs/flow_control.md
Вот эта статья должна помочь понять проблему.
Решение в итоге простое - переписать приложение чтобы порционно отдавало или сообщало что кешить надо некоторые ресурсы
источник
2019 October 28

LB

Let Eat Bee in Istio_ru
Darth Corsair
https://github.com/envoyproxy/envoy/blob/master/source/docs/flow_control.md
Вот эта статья должна помочь понять проблему.
Решение в итоге простое - переписать приложение чтобы порционно отдавало или сообщало что кешить надо некоторые ресурсы
TLDR, где там про запросы к бекенду?
источник

D

Darth Corsair in Istio_ru
там не непосредственно про запросы к бэкенду. там в целом описание ситуации и  http2 и http1.1 относительно енвоя. про мультиплексирование и прочие плюшечки, как запросы обрабатываются
источник

D

Darth Corsair in Istio_ru
прикол именно в том что благодоря этой доке стало понятно в каком месте наше приложение надо подкрутить
источник

D

Darth Corsair in Istio_ru
потомучто не на всех приложениях воспроизводилось, поэтому и пошли копать в енвой и http2 -> http1
источник

LB

Let Eat Bee in Istio_ru
Darth Corsair
потомучто не на всех приложениях воспроизводилось, поэтому и пошли копать в енвой и http2 -> http1
Я честно признаюсь, доку не осилил, поискал по словам cache, header  на странице и ничего не нашлось . С удовольствием послушал бы как надо готовить приложения для энвоя , если поделитесь деталями
источник