Cambios en configuración de HAProxy versión 1.4 a 1.6

Al actualizar de HAProxy 1.4.X a 1.6.X hay que tener en cuenta algunos cambios en la configuración general del servicio que si no son revisados provocarán fallo al iniciarlo.

Estos son los cambios que he encontrado yo, para un detalle de todos los cambios podéis revisar los CHANGELOG respectivos desde la versión instalada hasta la que se va a actualizar:

El primer punto importante a revisar es que el parámetro listen ya no permite incluir la IP:PUERTO de escucha en la misma línea. Es obligatorio mover esta configuración a la directiva bind dentro del bloque correspondiente:

[ALERT] 188/081612 (9293) : parsing [/etc/haproxy/haproxy.cfg:24] : 'listen' cannot handle unexpected argument '10.0.0.100:1936'.

[ALERT] 188/081612 (9293) : parsing [/etc/haproxy/haproxy.cfg:24] : please use the ‘bind’ keyword for listening addresses.

Por ejemplo, si la configuración inicial es:

   [...]
listen stats 10.0.0.100:1936
   mode http
   stats enable
   [...]

Pasaría a lo siguiente:

   [...]
listen stats
   bind  10.0.0.100:1936
   mode http
   stats enable
   [...]

El otro punto es que ya no es posible añadir argumentos condicionales en el backend por defecto de los frontend:

[ALERT] 188/081612 (9293) : parsing [/etc/haproxy/haproxy.cfg:90] : 'default_backend' cannot handle unexpected argument 'if'.
[ALERT] 188/081612 (9293) : parsing [/etc/haproxy/haproxy.cfg:108] : 'default_backend' cannot handle unexpected argument 'if'.

Tan sencillo como quitar de ahí el condicional y ponerlo en el backend que no sea el default. Por lo demás, la configuración es válida para el upgrade. ¡Suerte!