Introduction
Millau (pronounced mijo) is a free ingress proxy and load balancer designed for microservice architectures built on Docker Swarm. It combines service discovery with multi-service load balancing - something no other products currently provides in this stack.
Images are clickable.
Problem
Existing proxies fall into two categories:
- Traditional - require manual config files and restarts e.g., NGINX or HAProxy,
- Modern - support service discovery from Docker events, but lack multi-service load balancing e.g., Traefik.
This leaves a gap: no ingress proxy in Docker Swarm offers both auto-configuration and load balancing across multiple services. Millau does.🎉
Solution
Millau listens to Docker events and updates routes to the services dynamically, with no need for restarts. It recognizes routes to multiple services for strategies like Blue-Green deployments, and uses Round-Robin load balancing across them. To ensure request delivery, Millau performs automatic failover retries during service outages or slow responses.
Millau is written in Golang and distributed as a small Docker image, making it easy to integrate into your Swarm cluster. Designed for security, it supports mutual TLS (mTLS). Millau works seamlessly with Docker Swarm, Docker Compose, and Testcontainers.
Comparison
Product | Configuration | Multi-service LB | Service discovery | mTLS | Image size, MB |
---|---|---|---|---|---|
NGINX | File | Yes | No | Yes | 192 |
HAProxy | File | Yes | No | Yes | 105 |
Envoy | File | Yes | No | Yes | 191 |
Caddy | File | Yes | No | Yes | 49 |
Traefik | Labels | No | Yes | Yes | 224 |
Millau | Labels | Yes | Yes | Yes | 27 |
Performance:
- JSON GET requests: ~2.76 ms avg, comparable to NGINX and Caddy
- 5MB POST requests: ~22.86 ms avg, faster than Traefik and Caddy
Commercial License
Not necessary. But adding a license key to your Millau instance removes debugging information from HTTP traffic. You can get the commercial license in a minute here, free of charge.
The license key also gives you access to the service desk. Feel free to send a message or schedule a call here. Please note that Millau is a non-commercial project, so constant availability isn't guaranteed. However, you're always welcome to report issues on GitHub.
Why Sponsor?
Millau is maintained independently. Do not hesitate to demonstrate your support by starring the project on GitHub or/and becoming a sponsor on Patreon. The final goal is to raise €20,000 to establish Millau as the standard ingress proxy for Docker Swarm and release it under an open-source license.