WebWeaver is a load balancer written in Go, designed to handle load balancing efficiently and at scale. With a modular architecture and simple configuration, WebWeaver is ideal for modern deployments and high-availability environments.
- Load Balancing: Distributes requests across backend servers using various strategies, including Round-Robin, Random and IP Hash.
- Dynamic Configuration: Supports real-time configuration changes without needing a restart.
- Monitoring and Logging: Provides detailed statistics and request logging for in-depth monitoring.
- Automatic Failover: Manages automatic failover of unavailable backend servers.
- Security: Includes configuration options for protection against common threats and connection management.
- Go 1.25+: WebWeaver is written in Go and requires a compatible version of Go for compilation.
-
Clone the Repository
git clone https://github.com/giovanni-iannaccone/WebWeaver cd WebWeaver
-
Run the Project
Ensure you have Go installed, then run:
go run ./cmd/main.go
WebWeaver configuration is managed through a JSON file. Here's an example configuration:
{
"algorithm": "rnd",
"host": "localhost:8080",
"servers": [
"localhost:80",
"localhost:8081"
],
"healthCheck": 10,
"logs": "%USERPROFILE%\\Desktop\\logs.txt",
"prohibited": [
"/.env",
"/secret/"
]
}
- algorithm: rr for Round Robin, rnd for random choice, iph for ip hash
- host: the main server address
- servers: write here your servers addresses and ports
- healthCheck: seconds of the healthCheck timeout, put less than or 0 if you don't want the server to do any
- logs: file where to save logs, put nothing between quotes if you don't want to save logs
- prohibited: file you don't want the server to show
- Write your configurations in the configs/configs.json file
- Run the main file with go
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a new branch ( using this convention).
- Make your changes and commit them with descriptive messages.
- Push your changes to your fork.
- Create a pull request to the main repository.
Golang: https://go.dev/doc/
Load Balancing: https://www.cloudflare.com/learning/performance/what-is-load-balancing/
This project is licensed under the GPL-3.0 License. See the LICENSE file for details.
- For any inquiries or support, please contact iannacconegiovanni444@gmail.com .
- Visit my site for more informations about me and my work https://giovanni-iannaccone.github.io