Re: Проблемы с бэкэндом на http2
Maxim Dounin
mdounin на mdounin.ru
Пн Окт 19 12:50:59 UTC 2015
Hello!
On Sun, Oct 18, 2015 at 09:58:20PM +0300, Pavel Odintsov wrote:
> Всем привет!
>
> Имеется сервер gRPC на С++, который работает только поверх
> шифрованного HTTP2. Имеется желание его проксировать силами Nginx для
> повышения надежности и реверс-проксирования.
>
> Суть в том, что Nginx должен общаться с gRPC бэкэндом только по
> HTTP2/TLS, иначе оно не работает.
>
> Но Nginx не может подключиться к http2 бэкэнду вот с такой ошибкой:
> 2015/10/18 20:54:07 [error] 2954#2954: *3 peer closed connection in
> SSL handshake while SSL handshaking to upstream, client: 127.0.0.1,
> server: api.fastnetmon.io, request: "POST
> /fastmitigation.Fastnetmon/GetBanlist HTTP/2.0", upstream:
> "https://127.0.0.1:10777/fastmitigation.Fastnetmon/GetBanlist", host:
> "api.fastnetmon.io:443"
[...]
Just for the record:
Разгадка в том, что поддержки HTTP/2 в proxy - нет и не
планируется.
Основное преимущество SPDY и HTTP/2 перед HTTP - это больший
параллелизм при меньших затратах на установление соединений (одно
соединение, в нём много запросов одновременно). При работе с
бекендом - с тем же успехом можно поддерживать нужное количество
HTTP-соединений, разницы по latency - не будет, по throughput -
обычный HTTP будет лучше, выигрыш HTTP/2 - только по ресурсам на
уровне ядра (меньше сокетов). И чтобы этот выигрыш получить -
надо переписать работу с upstream'ами чуть менее, чем полностью,
добавив поддержку мультиплексирования нескольких запросов в одном
соединении. Смысла тратить на это силы и время - очень мало.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru