HAProxy Enterprise Documentation 1.6r2
Defaults
Many of the directives that you can set in a frontend
, backend
, or listen
section can be inherited from a defaults
section. By defining these settings in one place, you make it easier to change them later.
defaults
# All sections bellow will inherit the settings defined here
frontend ft_example
# ...
backend bk_example
# ...
listen
# ...
Defaults configuration examples
In the following configuration sample we have two frontend sections that have the same settings and point to two corresponding backends that also have the same settings.
frontend public_web_servers
mode http
log global
timeout client
bind *:80
default_backend public_web_servers
frontend api_servers
mode http
log global
timeout client
bind *:8000
default_backend api_servers
backend public_web_servers
mode http
balance roundrobin
server s1 192.168.1.25:80
server s2 192.168.1.26:80
backend api_servers
mode http
balance roundrobin
server s1 192.168.1.27:8000
server s2 192.168.1.28:8080
By adding defaults
to the configuration we can define settings that all other sections bellow it will inherit when applicable. For instance, mode
is applicable to both a frontend and a backend, but, balance
only applies to backends.
defaults
mode http
log global
balance roundrobin
timeout client
frontend public_web_servers
bind *:80
default_backend public_web_servers
frontend api_servers
bind *:8000
default_backend api_servers
backend public_web_servers
server s1 192.168.1.25:80
server s2 192.168.1.26:80
backend api_servers
server s1 192.168.1.27:8000
server s2 192.168.1.28:8080
Overriding a defaults section
Each following frontend
, backend
, or listen
after a defaults
can still override a setting that was inherited. Building from the previous configuration sample, we have added a frontend
and backend
that load balance MySQL database instances.
MySQL databases don't communicate over HTTP and do better with least connections load balancing, so the mode
and balance
directives have been added to override the settings defined in defaults
.
defaults
mode http
log global
balance roundrobin
timeout client
frontend public_web_servers
bind *:80
default_backend public_web_servers
frontend api_servers
bind *:8000
default_backend api_servers
backend public_web_servers
server s1 192.168.1.25:80
server s2 192.168.1.26:80
backend api_servers
server s1 192.168.1.27:8000
server s2 192.168.1.28:8080
frontend mysql
# Overriding the mode defined on defaults
mode tcp
bind *:3306
default_backend mysql_servers
backend mysql_servers
# Overriding the the load balancing algorithm defined on defaults
balance leastconn
server s1 192.168.1.29:3306
server s2 192.168.1.30:3306
Defining multiple defaults sections
You may define more than one defaults
section. Each one applies to any frontend
, backend
, or listen
sections that follow it. However, if you define another defaults
, it will not inherit settings from a previous defaults
.
defaults
mode http
log global
balance roundrobin
timeout client
frontend public_web_servers
bind *:80
default_backend public_web_servers
frontend api_servers
bind *:8000
default_backend api_servers
backend public_web_servers
server s1 192.168.1.25:80
server s2 192.168.1.26:80
backend api_servers
server s1 192.168.1.27:8000
server s2 192.168.1.28:8080
defaults
# Setting new defaults for all sections bellow
# Warning, settings from previous defaults sections are not inherited and
need to be defined again if needed.
mode tcp
log global
balance leastconn
timeout client
frontend mysql
bind *:3306
default_backend mysql_servers
backend mysql_servers
server s1 192.168.1.29:3306
server s2 192.168.1.30:3306
Next up
Userlist