Simple traffic controller agent with Golang. With Strago you can create and config a load balancer for your services. Load balancing logic of Strago is very simple, it works by the number of requests per service or the total burst time of requests in each service. All you need to do is to give your service addresses as an IP and leave the rest up to Strago.
Install library:
go get -u github.com/amirhnajafiz/strago
Then build the executable file:
go build -o strago
chmod +x ./strago
STRAGO_PORT=9370 STRAGO_SERVICES='127.0.0.1:5050&127.0.0.1:5051' STRAGO_DEBUG=true ./strago
Start strago on docker with:
docker pull amirhossein21/strago:v0.1.1
docker run -d \
-e STRAGO_PORT=9370 \
-e STRAGO_SERVICES='127.0.0.1:5050&127.0.0.1:5051' \
amirhossein21/strago:v0.1.1
If you set two echo servers on localhost ports 5050 and 5051
, then
you have to set the strago server like the example below:
You can test the above code by creating two echo servers:
### generating a service on port 5050
go run example/echo/main.go 5050
### generating a service on port 5051
go run example/echo/main.go 5051
Now you can test the load-balancer:
curl localhost:9370
STRAGO_SERVICES
: seperated with&
. Example:127.0.0.1:5050&127.0.0.1:5051
STRAGO_PORT
: http portSTRAGO_SECURE
: using https or not (ture/false)STRAGO_TYPE
: load balancing type (0 is request count / 1 is burst time)STRAGO_DEBUG
: used for debug mode (true/false)
Strago metrics will be exposed on localhost:9370/metrics
. And you can check the system
health on localhost:9370/health
.