5

I'm investigating HAProxy as a possible replacement for F5. F5 is capable of persisting a session based on a response header value:

when HTTP_RESPONSE {
  set session [HTTP::header X-Session]
  if {$session ne ""} {
    persist add uie $session
  }
}

and then route all subsequent requests which contain the same session ID in a header, query parameter, path, etc. to the same machine, eg:

when HTTP_REQUEST {
  set session [findstr [HTTP::path] "/session/" 9 /]
  if {$session} {
    persist uie $session
  }
}

I'm wondering if this is even possible to do with HAProxy?

zoli
  • 238
  • 3
  • 8

1 Answers1

3

HAProxy 1.5 (the current development version) implements stickiness on response with the stick store-response command. The command would be like this:

stick store-response hdr(X-Session)
stick on url-param(session) # the session ID is in a query parameter
# if the session ID is in the path, like /session/{session ID}/doSomething
# in this case, the X-Session header value probably has to be the format "/session/{session ID}"
# and the session ID length has to be fixed
stick on path {session ID + path prefix length, including slashes} if path_beg "/session"

Disclaimer: the above is based on reading the docs, not tested on an actual HAProxy installation.

zoli
  • 238
  • 3
  • 8