Welcome! Log In Create A New Profile

Advanced

consistently hash cookie to a header

Posted by Mike Torra 
Mike Torra
consistently hash cookie to a header
June 08, 2018 10:20PM
Hi -

I am relatively new to using haproxy, and I am trying to figure out if it
is possible to use a consistent hashing algorithm to hash a cookie value in
to a separate header. This seems very similar to how you would use a
consistent `hash-type` (
http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4-hash-type)
for load balancing, but I don't see how you could put the output of that
hashing in to a header for backend servers to see.

My use case is that I have a 'uuid' cookie which I want to use to assign
users to a pool 0-100 to use in A/B (/C/D... etc) tests. Today we do this
in a nodejs app, but we are adding new backends and we want to avoid
implementing the same hashing in multiple languages.

I'm currently using haproxy 1.8. I appreciate any suggestions!

- Mike
Baptiste
Re: consistently hash cookie to a header
June 09, 2018 08:20AM
On Fri, Jun 8, 2018 at 10:15 PM, Mike Torra <[email protected]> wrote:

> Hi -
>
> I am relatively new to using haproxy, and I am trying to figure out if it
> is possible to use a consistent hashing algorithm to hash a cookie value in
> to a separate header. This seems very similar to how you would use a
> consistent `hash-type` (http://cbonte.github.io/haproxy-dconv/1.8/
> configuration.html#4-hash-type) for load balancing, but I don't see how
> you could put the output of that hashing in to a header for backend servers
> to see.
>
> My use case is that I have a 'uuid' cookie which I want to use to assign
> users to a pool 0-100 to use in A/B (/C/D... etc) tests. Today we do this
> in a nodejs app, but we are adding new backends and we want to avoid
> implementing the same hashing in multiple languages.
>
> I'm currently using haproxy 1.8. I appreciate any suggestions!
>
> - Mike
>


Hi Mike,

Your goal is not really clear to me.
I think you would like to see the output of the hash performed by HAProxy
on this UUID cookie in a HTTP header.

Depending on your hash-type algorithm, you may wan to use the corresponding
converter:
backend b_myapp
[...]
balance hdr(X-Cook-Uuid)
hash-type consistent sdbm
http-request set-header X-Cook-Uuid %[req.cook(UUID)]
http-request set-header X-Cook-Uuid-Hashed %[req.hdr(X-Cook-Uuid),sdbm]

Simply adjust hash-type algorithm to the right converter name.
More on converter:
http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#7.3.1-sdbm

Baptiste
Sorry, only registered users may post in this forum.

Click here to login