Hacker News new | ask | show | jobs
by ersoft 3891 days ago
I managed to achieve load balancing for a fleet of microservices using vulcand [0] and marathon callbacks [1].

It listens for marathon callbacks (for app create/update/scale), or when a task is killed/lost and updates the backends in etcd, propagating to all vulcand load balancers.

The tool is available on github [2]

[0] https://vulcand.io/proxy.html#backends-and-servers

[1] https://mesosphere.github.io/marathon/docs/event-bus.html

[2] https://github.com/kuende/kameni

1 comments

This is a good thing. Perhaps you could get the Maraton folks to stop recommending such an awkward solution in preference to your work?
Well, it depends. My solution is opinionated, using only one vulcand cluster for load balancing, multiple vulcand servers listening on one etcd namespace.

For a small number of nodes (< 100) and requests (< 8000 req/s on each vulcand server) this vulcand approach is ok. For large scale, HAProxy/Nginx supports a lot more req/s than vulcand, and I think it can also be configured using confd [0] using a similar aproach: listen for marathon events, update etcd keys, then confd will listen for changes and reload HAProxy/Nginx

[0] http://ox86.tumblr.com/post/90554410668/easy-scaling-with-do...