This repository (along with https://github.com/MaxF12/anyeyeballs) is the source code required for running the AnyEyeballs test implementation. Its goal is to utilize the widely adopted Happy Eyeballs system to give implicit load balancing control to servers.
Rust version 1.51.0 as well as toml version 0.5.8 or later is required for running the orchestrator.
Before running the LBM, the configuration in config.toml has to be updated. The configurable values are:
Name | Description |
---|---|
lbm | |
ip | The IP address the LBM will listen on. |
port | The port the LBM will listen on. |
max_nodes | The maximum number of nodes allowed in the network. |
log | |
file | The path to the log file. |
interval | The time interval in seconds between each log entry. |
balancer | |
load_threshold | The load threshold that if crossed will trigger the LBM to take action. |
relative_threshold | The relative load share between IPv4 and IPv6 that if crossed will only trigger the shutdown of one socket, the one with the higher load. Otherwise, both sockets will be shut off. |
mode | The mode which the LBM will use to load balance. Can be 0 for the threshold or 1 for the round-robin style mode. |
The LBM offers two different load balance modes as mentioned in the table above. The threshold based mode will lead to nodes being turned off once they reach the configured threshold, as long as there is at least one other node active. The round-robin based mode will always turn off the node with the highest current load, as soon as its load reaches the preconfigured threshold.
To run the orchestrator, simply execute "cargo run config.toml" from the AnyEyeballs_Orchestrator directory.