jelder / discotables

Remote control of load balancer tables via multicast discovery

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DiscoTables means control of load balancer tables via multicast discovery. With DiscoTables, two common workflows can now be completed on all of your load balancers instantly, without logging in.

  • Adding a new server to a load balanced pool is automatic. Depending on your environment, it could be as simple as cloning a VM.
  • Removing a server from production for maintenance, then adding it back after acceptance testing. The deploy team no longer needs access to the load balancers; just the servers where their code runs.

A typical installation involves a server running on each of your load balancers (because, naturally, you're already running pfsync, carp and maybe even bgpd). Back-end servers such as web servers, message brokers, etc. run agents which announce their presence to the load balancers.

More complicated setups may include multiple discotables instances per load balancer, each maintaining a distinct set of tables via distinct encryption keys. This provides great isolation (e.g., production from development) and improved security.

It is assumed that your relayd.conf already knows how to judge the health of your servers. This results in a two-way handshake between the load balancers and your back-end servers.

All communication is encrypted with Blowfish and a relies on a pre-shared key.

A working configuration is presented in example.conf.

Environment

Developed and tested on Ubuntu, Mac OS X, and OpenBSD. Needs a modern Perl and not much else.

Dependencies

Ubuntu, Debian:

apt-get install libcrypt-cbc-perl libcrypt-blowfish-perl libio-socket-multicast-perl

Everyone else:

cpan Crypt::CBC Crypt::Blowfish IO::Socket::Multicast

About

Remote control of load balancer tables via multicast discovery