Re: HTTP/2 streams - how they're balanced?

2021-01-22 Thread Максим Куприянов
Thank you, Willy! I will take a try with a new version if it could help :)

пт, 22 янв. 2021 г. в 11:43, Willy Tarreau :

> Hi Maksim,
>
> On Thu, Jan 21, 2021 at 09:27:33PM +0300, ?? ? wrote:
> > Hi!
> >
> > Can anyone please explain or point out in the documentation how streams
> in
> > HTTP/2 connection are balanced?
>
> Like any other HTTP stream. There's no relation between H2 streams. There
> was already no relation between H1 streams, but it was possible to know
> that one of them was the first one. For H2 there's no first one at all
> since they're all parallel.
>
> > Right now I have haproxy=2.1.4 with http/2 balancer configured and it
> seems
> > to me that gRPC-requests over a single connection from a client are
> always
> > forwarded to the same backend server.
> >
> > Am I right or not? Are there any configuration options for this?
>
> Not only there is no reason for this, but if you asked me how to achieve
> this I wouldn't know how to do it :-)
>
> The load balancing happens for each request, following the configured LB
> algorithm.
>
> > Forget to add my config. It looks like this one (http/2 end to end, no
> ssl,
> > random balanced):
> >
> > frontend grpc.service:8080
> >   bind ipv6@xxx:8080 proto h2
> >
> >   mode http
> >   option http-use-htx
> >   timeout client  30s
> >
> >   default_backend be1:grpc.service:8080
> >
> > backend be1:grpc.service:8080
> >   mode http
> >   balance random
> >
> >   retries 1
> >   timeout connect 25
> >   timeout server  30s
> >   timeout queue   1s
> >
> >   # Set other options
> >   option  http-use-htx
> >   option  redispatch
> >
> >   default-server weight 50
> >
> >   server server1:17355 xxx:17355 proto h2
> >   server server2:17355 yyy:17355 proto h2
> >   server server3:17355 zzz:17355 proto h2
>
> I see nothing wrong in this config, for me it's OK. However, is there
> any reason for you to run on a version that's affected by 221 known
> bugs ? Maybe what you're observing is just the consequence of one of
> these ?
>
>   https://www.haproxy.org/bugs/bugs-2.1.4.html
>
> Please update it and retry, just in case.
>
> Cheers,
> Willy
>


Re: HTTP/2 streams - how they're balanced?

2021-01-22 Thread Willy Tarreau
Hi Maksim,

On Thu, Jan 21, 2021 at 09:27:33PM +0300, ?? ? wrote:
> Hi!
> 
> Can anyone please explain or point out in the documentation how streams in
> HTTP/2 connection are balanced?

Like any other HTTP stream. There's no relation between H2 streams. There
was already no relation between H1 streams, but it was possible to know
that one of them was the first one. For H2 there's no first one at all
since they're all parallel.

> Right now I have haproxy=2.1.4 with http/2 balancer configured and it seems
> to me that gRPC-requests over a single connection from a client are always
> forwarded to the same backend server.
> 
> Am I right or not? Are there any configuration options for this?

Not only there is no reason for this, but if you asked me how to achieve
this I wouldn't know how to do it :-)

The load balancing happens for each request, following the configured LB
algorithm.

> Forget to add my config. It looks like this one (http/2 end to end, no ssl,
> random balanced):
> 
> frontend grpc.service:8080
>   bind ipv6@xxx:8080 proto h2
> 
>   mode http
>   option http-use-htx
>   timeout client  30s
> 
>   default_backend be1:grpc.service:8080
> 
> backend be1:grpc.service:8080
>   mode http
>   balance random
> 
>   retries 1
>   timeout connect 25
>   timeout server  30s
>   timeout queue   1s
> 
>   # Set other options
>   option  http-use-htx
>   option  redispatch
> 
>   default-server weight 50
> 
>   server server1:17355 xxx:17355 proto h2
>   server server2:17355 yyy:17355 proto h2
>   server server3:17355 zzz:17355 proto h2

I see nothing wrong in this config, for me it's OK. However, is there
any reason for you to run on a version that's affected by 221 known
bugs ? Maybe what you're observing is just the consequence of one of
these ?

  https://www.haproxy.org/bugs/bugs-2.1.4.html

Please update it and retry, just in case.

Cheers,
Willy



Re: HTTP/2 streams – how they're balanced?

2021-01-21 Thread Максим Куприянов
Forget to add my config. It looks like this one (http/2 end to end, no ssl,
random balanced):

frontend grpc.service:8080
  bind ipv6@xxx:8080 proto h2

  mode http
  option http-use-htx
  timeout client  30s

  default_backend be1:grpc.service:8080

backend be1:grpc.service:8080
  mode http
  balance random

  retries 1
  timeout connect 25
  timeout server  30s
  timeout queue   1s

  # Set other options
  option  http-use-htx
  option  redispatch

  default-server weight 50

  server server1:17355 xxx:17355 proto h2
  server server2:17355 yyy:17355 proto h2
  server server3:17355 zzz:17355 proto h2


чт, 21 янв. 2021 г. в 21:27, Максим Куприянов :

> Hi!
>
> Can anyone please explain or point out in the documentation how streams in
> HTTP/2 connection are balanced?
>
> Right now I have haproxy=2.1.4 with http/2 balancer configured and it
> seems to me that gRPC-requests over a single connection from a client are
> always forwarded to the same backend server.
>
> Am I right or not? Are there any configuration options for this?
>
> --
> Best regards,
> Maksim Kupriianov
>