Jim, that's not what he asked. He asked for the equivalent of a load balancer with sticky sessions.
On Tue, Apr 5, 2016 at 2:24 PM Jim Ancona <j...@anconafamily.com> wrote: > Jon and Steve: > > I don't understand your point. The TokenAwareLoadBalancer identifies the > nodes in the cluster that own the data for a particular token and route > requests to one of them. As I understand it, the OP wants to send requests > for a particular token to the same node every time (assuming it's > available). How does that fail in a large cluster? > > Jim > > On Tue, Apr 5, 2016 at 4:31 PM, Jonathan Haddad <j...@jonhaddad.com> wrote: > >> Yep - Steve hit the nail on the head. The odds of hitting the right >> server with "sticky routing" goes down as your cluster size increases. You >> end up adding extra network hops instead of using token aware routing. >> >> Unless you're trying to do a coordinator tier (and you're not, according >> to your original post), this is a pretty bad idea and I'd advise you to >> push back on that requirement. >> >> On Tue, Apr 5, 2016 at 12:47 PM Steve Robenalt <sroben...@highwire.org> >> wrote: >> >>> Aside from Jon's "why" question, I would point out that this only really >>> works because you are running a 3 node cluster with RF=3. If your cluster >>> is going to grow, you can't guarantee that any one server would have all >>> records. I'd be pretty hesitant to put an invisible constraint like that on >>> a cluster unless you're pretty sure it'll only ever be 3 nodes. >>> >>> On Tue, Apr 5, 2016 at 9:34 AM, Jonathan Haddad <j...@jonhaddad.com> >>> wrote: >>> >>>> Why is this a requirement? Honestly I don't know why you would do this. >>>> >>>> >>>> On Sat, Apr 2, 2016 at 8:06 PM Mukil Kesavan <weirdbluelig...@gmail.com> >>>> wrote: >>>> >>>>> Hello, >>>>> >>>>> We currently have 3 Cassandra servers running in a single datacenter >>>>> with a replication factor of 3 for our keyspace. We also use the >>>>> SimpleSnitch wiith DynamicSnitching enabled by default. Our load balancing >>>>> policy is TokenAwareLoadBalancingPolicy with RoundRobinPolicy as the >>>>> child. >>>>> This overall configuration results in our client requests spreading >>>>> equally >>>>> across our 3 servers. >>>>> >>>>> However, we have a new requirement where we need to restrict a >>>>> client's requests to a single server and only go to the other servers on >>>>> failure of the previous server. This particular use case does not have >>>>> high >>>>> request traffic. >>>>> >>>>> Looking at the documentation the options we have seem to be: >>>>> >>>>> 1. Play with the snitching (e.g. place each server into its own DC or >>>>> Rack) to ensure that requests always go to one server and failover to the >>>>> others if required. I understand that this may also affect replica >>>>> placement and we may need to run nodetool repair. So this is not our most >>>>> preferred option. >>>>> >>>>> 2. Write a new load balancing policy that also uses the >>>>> HostStateListener for tracking host up and down messages, that essentially >>>>> accomplishes "sticky" request routing with failover to other nodes. >>>>> >>>>> Is option 2 the only clean way of accomplishing our requirement? >>>>> >>>>> Thanks, >>>>> Micky >>>>> >>>> >>> >>> >>> -- >>> Steve Robenalt >>> Software Architect >>> sroben...@highwire.org <bza...@highwire.org> >>> (office/cell): 916-505-1785 >>> >>> HighWire Press, Inc. >>> 425 Broadway St, Redwood City, CA 94063 >>> www.highwire.org >>> >>> Technology for Scholarly Communication >>> >> >