All,
We currently support strict and timed round robin for round robin DNS
records and I'd like to propose adding consistent hashing based DNS
selection. We're trying to replace our current ATS -> Haproxy setup with
only ATS and that's been the motivation behind all of our recent HostDB
improvements because we (and many others) use Haproxy simply for load
balancing / host selection.

I've been hacking around with a few ideas and implementation methods but
basically here is what I have so far:

1) Add a new records.config called called
proxy.config.hostdb.consisent_hash of type INT which will enable / disable
the feature.

2) Add a new records.config option called
proxy.config.hostdb.consistent_hash_selection of type STRING, this will be
how the string is assembled to produce the hash. After bouncing a few ideas
around I was thinking a subset of the custom log format strings make the
most sense (
https://docs.trafficserver.apache.org/en/latest/admin/event-logging-formats.en.html),
so basically you would do something like:

   CONFIG proxy.config.hostdb.consistent_hash_selection STRING %<cqup>
%<{X-Foo-Header}cqh>

This would hash based on the pre-remapped request path and an incoming
header called "X-Foo-Header." Reusing this existing syntax seemed to make
the most sense. Additionally, because  cookies are typically a good way to
uniquely identify a session I'll likely add another format which will get
the value of an individual cookie, is this something people would find
useful?

I'd really love feedback before I land the patch. Thoughts?

Thanks,
Brian

Reply via email to