Updating namer load balancing weights?

One of the interesting things linkerd can do is specify load balancing weights. That is, send 1% of traffic to a new instance and slowly ramp it up. I see how to specify those weights as part of dtab entries. I’ve also found the WeightedAddress class when writing a custom Namer implementation.

What I don’t understand is how one sets these weights in the first place? Where do folks typically store the service instance weighting values? Using namerctl with namerd to dynamically update the dtab routes doesn’t feel like the right solution, as you’re bypassing the service discovery mechanism. We’re currently using the Zookeeper/Curator service discovery framework. Do other service discovery registries support the ability to specify service weightings?

Feels like I’m missing a big piece of the puzzle here.


Good question! Linkerd respects these load balancing weights but most namers don’t set them. As far as I know, the only namer which currently sets address weights is the io.l5d.fs namer. Going forward, we’d like to do more with weights (redline load testing, for example) so it would be cool to get more namers to be able to set these. Pull requests welcome!