1.8.31

Latest release in branch 1.8
Released 3 years ago (December 09, 2022)

Software HAProxy
Branch 1.8
Status
End of life
End of life December 09, 2022
First official release version 1.8.0
First official release date 8 years ago (November 26, 2017)
Release notes https://www.haproxy.org/download/1.8/src/CHANGELOG
Source code http://git.haproxy.org/?p=haproxy-1.8.git;a=tree;h=refs/tags/v1.8.31
Download https://www.haproxy.org/download/1.8/
HAProxy 1.8 Releases View full list

What Is New in HAProxy 1.8

Category Key Changes
New Features Multithreading, Dynamic SSL Certificate Storage, Server Address Resolution Over DNS
Improvements Enhanced HTTP/2 Support, Faster HPACK Compression, Improved Logging & Stick Tables
Bug Fixes Numerous fixes for HTTP processing, connection management, and memory handling
Deprecated The nbproc configuration directive and the fd parameter for server lines

How does multithreading improve HAProxy performance?

HAProxy 1.8 introduces a native multithreading model, a fundamental shift from previous architectures. This allows a single process to utilize multiple CPU cores, dramatically increasing connection and request throughput. In practice, this means you can handle more traffic without the complexity of managing multiple HAProxy processes with nbproc.

The old nbproc directive is now deprecated in favor of the new thread directive and the nbthread global option. This new model is more efficient because threads share the same memory space, simplifying configuration and improving inter-thread communication.

What are the new dynamic SSL capabilities?

This release adds a powerful feature for dynamic SSL certificate storage. You can now store SSL certificates in memory-mapped files, which allows you to update certificates on disk without reloading the HAProxy process. This is a game-changer for large-scale deployments managing thousands of certificates.

The feature uses the ssl keyword with a new @ prefix in bind lines, like bind :443 ssl crt @/path/to/certdir. HAProxy will then automatically detect changes to the certificate directory and load new certificates, eliminating downtime for SSL updates.

How does server resolution over DNS work?

You can now configure backend servers to be resolved via DNS directly in the configuration. By using the resolvers section and adding a resolve-prefer option to a server line, HAProxy will periodically re-resolve the hostname and update the server's IP address automatically.

This is incredibly useful in dynamic environments like Kubernetes or cloud platforms where backend IP addresses can change frequently. It removes the need for external orchestration tools to constantly rewrite the HAProxy config and trigger reloads.

What HTTP/2 improvements were made?

HTTP/2 support has been moved out of the experimental phase and is now fully supported for both frontend and backend connections. The implementation now uses a much faster HPACK header compression algorithm, reducing CPU overhead significantly.

You can enable it on a bind line with bind :443 ssl crt example.com.pem alpn h2,http/1.1. The improved performance makes it practical to terminate HTTP/2 at the load balancer and use HTTP/1.1 to the backends, simplifying application server requirements.

What logging and stick table enhancements are there?

Logging gets more flexible with the ability to define multiple independent log targets using the new log directive within a ring section. This allows you to route different types of traffic to different loggers.

Stick tables see a major upgrade with new data types (srvkey), new converters (sc_bytes_in, sc_bytes_out), and new sample fetch methods (table_avl, table_entries). These give you much deeper insight into tracked metrics and table health.

FAQ

Is the switch to multithreading stable for production use?
Yes, it is the new recommended model. The developers have put significant effort into ensuring thread safety. The performance gains are substantial, and it simplifies configuration by deprecating the more cumbersome multi-process (nbproc) setup.

How do I migrate from using nbproc to the new thread model?
Replace the nbproc setting in your global section with nbthread. The value can often be the same as your previous nbproc value or the number of CPUs. Also, remove any bind line modifications that used the process parameter to bind to specific processes.

Can I use the dynamic SSL certificate feature with Let's Encrypt?
Absolutely. This feature was practically designed for it. You can point the crt @/path/to/certdir directive at the directory where your automation tool (like Certbot) places the renewed certificates. HAProxy will pick up the changes without any restart, making certificate renewal seamless.

What happens if a DNS resolution fails for a backend server?
HAProxy handles this gracefully. If a resolution fails, the server is marked as down, and the load balancer will stop sending traffic to it. It will continue to retry the resolution based on the interval defined in your resolvers section until it succeeds and the server is marked up again.

Are there any breaking changes I should be aware of when upgrading to 1.8?
The main thing to check is the deprecation of nbproc and the fd parameter for servers. Your configuration will need to be updated to use the multithreading model. Also, review any custom Lua scripts, as the core now uses Lua 5.3 instead of 5.2, which might affect certain functions.

Releases In Branch 1.8

Version Release date
1.8.31 3 years ago
(December 09, 2022)
1.8.30 5 years ago
(April 12, 2021)
1.8.29 5 years ago
(March 19, 2021)
1.8.28 5 years ago
(January 13, 2021)
1.8.27 5 years ago
(November 06, 2020)
1.8.26 5 years ago
(August 03, 2020)
1.8.25 6 years ago
(April 02, 2020)
1.8.24 6 years ago
(February 15, 2020)
1.8.23 6 years ago
(November 25, 2019)
1.8.22 6 years ago
(October 25, 2019)
1.8.21 6 years ago
(August 16, 2019)
1.8.20 6 years ago
(April 25, 2019)
1.8.19 7 years ago
(February 11, 2019)
1.8.18 7 years ago
(February 06, 2019)
1.8.17 7 years ago
(January 08, 2019)
1.8.16 7 years ago
(December 21, 2018)
1.8.15 7 years ago
(December 13, 2018)
1.8.14 7 years ago
(September 20, 2018)
1.8.13 7 years ago
(July 30, 2018)
1.8.12 7 years ago
(June 27, 2018)
1.8.11 7 years ago
(June 26, 2018)
1.8.10 7 years ago
(June 22, 2018)
1.8.9 7 years ago
(May 18, 2018)
1.8.8 8 years ago
(April 19, 2018)
1.8.7 8 years ago
(April 07, 2018)
1.8.6 8 years ago
(April 05, 2018)
1.8.5 8 years ago
(March 23, 2018)
1.8.4 8 years ago
(February 08, 2018)
1.8.3 8 years ago
(December 30, 2017)
1.8.2 8 years ago
(December 23, 2017)
1.8.1 8 years ago
(December 03, 2017)
1.8.0 8 years ago
(November 26, 2017)
1.8-rc4 8 years ago
(November 19, 2017)
1.8-rc3 8 years ago
(November 11, 2017)
1.8-rc2 8 years ago
(November 03, 2017)
1.8-rc1 8 years ago
(October 31, 2017)
1.8-dev3 8 years ago
(October 22, 2017)
1.8-dev2 8 years ago
(June 02, 2017)
1.8-dev1 9 years ago
(April 03, 2017)
1.8-dev0 9 years ago
(November 25, 2016)