What Is New in HAProxy 1.0
HAProxy 1.0 is a major milestone focusing on stability and core protocol support. This release solidifies its role as a high-performance TCP/HTTP load balancer.
| Category | Key Changes |
|---|---|
| New Features | URI hashing for load balancing, ACL-based persistence, SSL support |
| Protocol Support | Enhanced HTTP processing, basic SSL termination, TCP streaming |
| Core Improvements | More efficient connection handling, memory management, and logging |
| Bug Fixes | Fixes for connection stalls, header parsing, and edge-case failures |
How did HAProxy 1.0 improve load balancing algorithms?
The introduction of URI hashing was a game-changer for sticky sessions. This allowed for consistent mapping of requests to servers based on the request URI, which is crucial for maintaining user state without cookies.
Before this, we had round-robin and source IP hashing. URI hashing provided a much more application-aware method for directing traffic, especially for caching servers or applications where the URL dictates the content.
What ACL capabilities were added in version 1.0?
ACL-based persistence allowed us to direct traffic based on almost any part of the request. You could write rules to match on headers, source IP, or even the request path to decide which backend server should handle the connection.
This moved HAProxy beyond simple round-robin into the realm of a smart traffic router. In practice, this meant you could do things like send all mobile user agents to a specific pool of servers or route API requests differently from web page requests.
Was SSL termination available in HAProxy 1.0?
Yes, but it was a basic implementation. This release included support for SSL, allowing it to terminate encrypted connections and then forward the decrypted traffic to the backend servers.
This was a huge deal at the time because it centralized the CPU-intensive SSL handshake process onto the HAProxy server, freeing up the application servers to focus on processing requests. The implementation paved the way for the more advanced SSL features in later versions.
How did connection handling get better?
The core event loop and connection pooling mechanisms saw significant optimizations. The changes reduced latency and allowed the proxy to handle more concurrent connections with less memory overhead.
You'd notice this most under heavy load. The proxy was less likely to become a bottleneck because it could manage thousands of connections more efficiently, making better use of system resources and improving overall throughput.
FAQ
Can HAProxy 1.0 handle WebSocket traffic?
No, WebSocket support was not available in HAProxy 1.0. This version focused on traditional HTTP/1.0 and TCP streaming, with WebSocket protocol support coming in much later releases.
Does version 1.0 support health checks?
Yes, basic health checking capabilities were present. You could configure HAProxy to check if a backend server was alive, preventing it from sending traffic to failed hosts.
Is it safe to use HAProxy 1.0 with modern SSL/TLS?
No, the SSL implementation in 1.0 is now considered outdated and may contain vulnerabilities. It lacks support for modern ciphers and protocols like TLS 1.2 or 1.3.
Can I use the 'http-request' rules in version 1.0?
No, the advanced http-request rule system was introduced in later versions. Version 1.0 used the older ACL and use_backend syntax for directing traffic.
How does URI hashing work with dynamic query strings?
The URI hashing algorithm typically hashes the entire URI, including the query string. This means that a change in the query parameters will likely route the request to a different backend server.