Press "Enter" to skip to content

Balance

Overview

Balance is our well known open source load balancing solution being a simple but powerful generic tcp proxy with round robin load balancing and failover mechanisms. Its behaviour can be controlled at runtime using a simple command line syntax.

Balance supports IPv6 on the listening side which makes it a very useful tool for IPv6 migration of IPv4 only services and servers.

Balance successfully runs at least on Linux(386), Linux(Itanium), FreeBSD, BSD/OS, Solaris, Cygwin, Mac-OS X, HP-UX and many more.

Balance is Open Source Software and released under GPL licensing terms.

BalanceNG® is our commercial Software Load Balancer for Linux and Solaris which comes with a 30 day trial license.

Downloads

MD5 checksum : 12ab710435bc4119293837375c6e1f97

Change History

  • 3.57: MAXGROUPS has been increased to 32
  • 3.56: Out-of-band data handling has been added.
  • 3.54: A bug with hash_fold() regarding incoming IPv4 and IPv6 source addresses has been fixed. The “hash” group mechanism is now working as expected.
  • 3.52: Buffering has been disabled for interactive shell IO. A new “assign” command has been added to allow changing of the host:port assignment of a channel (only if disabled). A locking bug has been fixed.
  • 3.50: A new option -6 has been added to force IPv6 bind.
  • 3.49: A patch has been applied due to a problem with ftok() on Solaris.
  • 3.48: Problems with setting IPV6_V6ONLY socket option are now handled more nicely with a syslog warning message.
  • 3.42: Balance now compiles also on systems where IPV6_V6ONLY is undefined (like some Solaris systems).
  • 3.40: IPv6 support on the listening side has been added. MAXCHANNELS in balance.h has been increased to 64.
  • 3.35: A bug in the autodisable functionality has been fixed.
  • 3.34: -a option added (enables “autodisable” option: A channel needs to be manually re-enabled after a failure). Syslog logging added for reporting this event.
  • 3.33: -M option added (use MMAP instead of SHM for IPC)
  • 3.32: Bugfix: /var/run/balance may now already exist.
  • 3.31: Bugfix: TCP_NODELAY properly set.
  • 3.30: Code cleanups and fixes.

Links and more

Example Command Lines

# balance smtp host1.test.net host2.test.net

Connections to the local SMTP port will be forwarded alterating to the SMTP port on host1 and host2. Balance runs automatically in background.

# balance -b 2001:DB8::1 80 10.1.1.1 10.1.1.2

Balance binds on port 80 of the local IPv6 IP address 2001:DB8::1 and distributes connections to the IPv4 addresses 10.1.1.1 and 10.1.1.2.

# balance -b ::ffff:10.1.1.3 80 10.1.1.1 10.1.1.2

Balance binds on port 80 of the local IPv4 IP address 10.1.1.3 (provided in IPv6 notation) and distributes connections to the IPv4 addresses 10.1.1.1 and 10.1.1.2.

# balance -fp imap mailserver

Connections to the local IMAP port will always be forwarded to the host “mailserver”. Balance stays in foreground and all data is printed in readable format on stdout.

$ balance -f 8888 host1 10.1.1.1:8000

Connections to the local port 8888 are forwarded alternating to host1, port 8888 and the host 10.1.1.1, port 8000. Balance stays in foreground connected to the “controlling tty”.

Articles and resources featuring Balance