Home
Softono

Disbalance

Open source MIT Go
12
Stars
0
Forks
0
Issues
2
Watchers
6 years
Last Commit

 About Disbalance

disbalance - automagic load balancer

Platforms

Web Self-hosted

Languages

Go

Links

Need Help Installing Disbalance?

We provide expert installation service for this software. Our team will install, configure, and secure Disbalance on your server. plans start at just $30.

Disbalance

View on GitHub

license Go Report Card

disbalance

disbalance - automagic load balancer

Created by gh-md-toc

Features

  • Minimal required configuration. You are supposed to fire up disbalance and start using it.
  • Configuration automatically kept as YAML file. You are not required to edit it by hand.
  • Integrated web console. Use the web interface to quickly define load balancing rules.
  • REST API. Use the API to dynamically combine the load balancer with other services.

Quick Start

Without Modules, before Go 1.11

# make sure GOPATH is either unset or set to ~/go
go get github.com/udhos/disbalance
cd ~/go/src/github.com/udhos/disbalance
./build-nomodules.sh
disbalance

With Modules, starting from Go 1.11

Warning: gopherjs currently can't build the 'console' application using Modules. See https://github.com/gopherjs/gopherjs/issues/881.

git clone https://github.com/udhos/disbalance ;# clone outside of GOPATH
cd disbalance
./build-modules.sh ;# currently fails because gopherjs does not support Go Modules yet
disbalance

Then open http://localhost:8080/console

HTTPS

If you want to use TLS for the console, you will need a certificate:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout run/key.pem -out run/cert.pem

Then start disbalance and open https://localhost:8080/console

How to test

  1. Run webservers on ports 8001 and 8002.

Example:

go get github.com/udhos/gowebhello

gowebhello -addr :8001 -disableKeepalive &
gowebhello -addr :8002 -disableKeepalive &
  1. Then open the disbalance console http://localhost:8080/console and create a rule with targets for ports 8001 and 8002.

Create the rule with this information:

rule name: rule-1000
listener:  :8000
target:    localhost:8001
target:    localhost:8002
  1. Visit http://localhost:8000.

Example:

curl http://localhost:8000

Your web traffic should be distributed between localhost:8001 and localhost:8002.

API

Get rule list:

curl -u admin:admin localhost:8080/api/rule/

Delete rule 'rule1':

curl -u admin:admin -X DELETE localhost:8080/api/rule/rule1

Create/update inline rule 'rule1':

curl -u admin:admin -X POST -d '{rule1: {listener: ":2000", protocol: tcp, targets: {2.2.2.2:80: {}}}}' localhost:8080/api/rule/

Replace inline rule 'rule1':

curl -u admin:admin -X PUT -d '{listener: ":3000", targets: {3.3.3.3:80: {}}}' localhost:8080/api/rule/rule1

Save rule list to file 'rules':

curl -u admin:admin localhost:8080/api/rule/ > rules

Load rule list from file 'rules':

curl -u admin:admin --data-binary @rules -X POST localhost:8080/api/rule/

Install

You can install disbalance as a systemd service by running the install.sh script:

sudo ./install.sh

sudo ./install.sh remove ;# this removes disbalance service from systemd

-x-