Umay is an experimental, high-performance TLS proxy and load balancer written in Rust. It's designed to provide secure and efficient traffic management for microservices architectures.
For those interested in the origin of the name "Umay," you can learn more about it here.
- TLS termination and proxying
- Multiple load balancing algorithms (Round Robin, Random, Least Connection, Ip Hashing)
- Dynamic backend discovery (DNS-based and local configuration)
- Configurable via YAML files and environment variables
- Metrics collection
- Graceful shutdown
Umay can be configured using YAML files and environment variables. See config.rs
for available options.
To quickly run and test Umay using Docker Compose:
- Ensure you have Docker and Docker Compose installed.
- Clone this repository and navigate to the project directory.
- Start the services:
docker-compose up --build
Test the proxy:
openssl s_client -connect localhost:9994
If working correctly, you should see a TLS handshake followed by an echo response from one of the backend servers.
To stop the services:
docker-compose down
This project is under active development and is considered experimental. Use in production environments is not recommended at this time.
Contributions are welcome! Please review our Project Plan before submitting a Pull Request. We appreciate any feedback, bug reports, or feature requests.
This project is licensed under the MIT License.
We would like to acknowledge the Rust community for their excellent libraries and resources that have greatly supported this project. Additionally, inspiration was drawn from projects like linkerd2-proxy, Pingora by Cloudflare, Istio Ztunnel and NGINX