txLoadBalancer is a pure Python-based TCP load balancer. It takes inbound TCP connections and connects them to one of a number of backend servers.
txLoadBalancer is a fork of Anthony Baxter's PythonDirector. It removed all threading and asyncore code and the admin UI with the Twisted-based analogs. It also significantly reorganized the API and provided many new features (see below).
$ twistd -noy ./bin/txlb.tac
This will use the default configuration file in ./etc/config.xml; you can edit the .tac file to point to the config you prefer. Be sure to edit the config.xml file to properly reflect your services in need of load-balancing.
To enable the admin interface, your config file must have the admin section defined, with the required fields. For an example, be sure to see ./etc/config.xml. For more details, please see the configuration information in the ./doc directory.
If you are creating your own script and don't want to use txlb.tac, you can import the application setup functions in txlb.application.
If you want to "embed" a load-balancer in your Twisted application, see the example ./bin/txlbWeb.tac.
Here are some key features of "txLoadBalancer":
· It is a pure-Twisted TCP loadbalancer.
· Thanks to Twisted, it's async i/o based, so much less overhead than fork/thread based balancers.
· It has multiple scheduling algorithms (random, round robin, leastconns, weighted). If a server fails to answer, it's removed from the pool - the client that failed to connect gets transparently failed over to a new host.
· Provides an optional builtin webserver for a built-in admin UI.
· Seperate management timer services that perform such tasks as periodically readding failed hosts to the rotation, updated on-disk config files with changes made to the running server.
· A built-in SSH server for managing (and modifying) a running load-balancer instance.
· A Twisted API for adding a load-balancing service to your Twisted application without the need to run a separate load-balancer.
· The application uses an XML-based configuration file.
What's New in This Release:
· Massive API changes: competely reorganzied the code base.
· Integrated patches from Apple's Calendar Server project.
· A new API for creating load-balanced services within a Twisted application (without the need to run a separate load-balancingn daemon).
· Added support for live interaction with load-balancer via SSH connection to running Python interpretter (Twisted manhole).
· The ability to start listening on a new port without restaring the application.
· Added a weighted load balance scheduler.