Reference
add server
Available since
- HAProxy 2.4
- HAProxy Enterprise 2.4r1
Add a dynamic server to a backend.
Description Jump to heading
Instantiate a new server attached to an existing backend. Such a server may also be called a dynamic server. Dynamic servers refer to servers that do not have an explicit entry within your HAProxy configuration file.
The specified server name must not already be in use in the backend. The backend must be configured to use a dynamic load balancing algorithm for the balance
directive: roundrobin
, leastconn
, first
, or random
.
A dynamic server is not restored after a load balancer reload operation. If you need the server definition to persist, add it to the load balancer’s configuration file.
Dynamic servers are statically initialized with the none
init-addr
method. In this method, the server starts in the down
state without a valid IP address. After you add a dynamic server, you can enable it with the enable server
command.
It may be possible to reach the fd
(file descriptor) limit when using a large number of dynamic servers. See also fd-hard-limit
and ulimit-n
in the global keyword documentation.
The following keywords are supported for configuring the new server:
Keyword | Note | Available since version |
---|---|---|
agent-addr | 2.5r1 | |
agent-check | Even when enabled by this keyword, agent check is still inactive until activated independently of the server with the enable agent command. Note that in this case the server may be activated via the agent depending on the status reported, without an explicit enable server command. This also means that extra care is required when removing a dynamic server with agent check. The agent should first be deactivated using disable agent to be able to put the server in the required maintenance mode before removal. |
2.5r1 |
agent-inter | 2.5r1 | |
agent-port | 2.5r1 | |
agent-send | 2.5r1 | |
allow-0rtt | 2.5r1 | |
alpn | 2.5r1 | |
addr | 2.5r1 | |
backup | 2.4r1 | |
ca-file | 2.5r1 | |
check | Even when enabled by this keyword, health check is still inactive until activated independently of the server with the enable health command. |
2.5r1 |
check-alpn | 2.5r1 | |
check-proto | 2.5r1 | |
check-send-proxy | 2.5r1 | |
check-sni | 2.5r1 | |
check-ssl | 2.5r1 | |
check-via-socks4 | 2.5r1 | |
ciphers | 2.5r1 | |
ciphersuites | 2.5r1 | |
cookie | 3.0r1 | |
crl-file | 2.5r1 | |
crt | 2.5r1 | |
disabled | 2.4r1 | |
downinter | 2.5r1 | |
error-limit | 2.5r1 | |
fall | 2.5r1 | |
fastinter | 2.5r1 | |
force-sslv3/tlsv10/tlsv11/tlsv12/tlsv13 | 2.5r1 | |
id | 2.4r1 | |
inter | 2.5r1 | |
maxconn | 2.4r1 | |
maxqueue | 2.4r1 | |
minconn | 2.4r1 | |
no-ssl-reuse | 2.5r1 | |
no-sslv3/tlsv10/tlsv11/tlsv12/tlsv13 | 2.5r1 | |
no-tls-tickets | 2.5r1 | |
npn | 2.5r1 | |
observe | 2.5r1 | |
on-error | 2.5r1 | |
on-marked-down | 2.5r1 | |
on-marked-up | 2.5r1 | |
pool-low-conn | 2.4r1 | |
pool-max-conn | 2.4r1 | |
pool-purge-delay | 2.4r1 | |
port | 2.5r1 | |
proto | 2.4r1 | |
proxy-v2-options | 2.4r1 | |
rise | 2.5r1 | |
send-proxy | 2.4r1 | |
send-proxy-v2 | 2.4r1 | |
send-proxy-v2-ssl | 2.5r1 | |
send-proxy-v2-ssl-cn | 2.5r1 | |
slowstart | 2.5r1 | |
sni | 2.5r1 | |
source | 2.4r1 | |
ssl | 2.5r1 | |
ssl-max-ver | 2.5r1 | |
ssl-min-ver | 2.5r1 | |
tfo | 2.4r1 | |
tls-tickets | 2.5r1 | |
track | A dynamic server may use this keyword to follow the check status of another server from the configuration. However, it is not possible to track another dynamic server. This restriction ensures that the tracking chain is kept consistent in the event a dynamic server is deleted. | 2.5r1 |
usesrc | 2.4r1 | |
verify | 2.5r1 | |
verifyhost | 2.5r1 | |
weight | 2.4r1 | |
Ws | 2.5r1 |
Settings from the default-server
statement, if any, in the backend configuration are not applied to the new server.
Servers added with this command can be deleted using the del server
command.
Examples Jump to heading
Tip
As of HAProxy version 3.0 and HAProxy Enterprise version 3.0, the enabled
keyword is now rejected with an error for the add server
command. If you receive an error message as follows: 'enabled' option is not accepted for dynamic server
, remove enabled
from your command and try again. In previous versions, the enabled
keyword was silently ignored.
To add a server to an existing backend configured with a dynamic load balancing algorithm:
-
Add the server using the
add server
command. Below, we add the serverweb2
to backendwebservers
:nixecho "add server webservers/web2 172.16.0.12:8080 check port 8080" | \sudo socat stdio tcp4-connect:127.0.0.1:9999nixecho "add server webservers/web2 172.16.0.12:8080 check port 8080" | \sudo socat stdio tcp4-connect:127.0.0.1:9999outputtextNew server registered.outputtextNew server registered. -
Enable the server using the
enable server
command. The server is in maintenance mode by default.nixecho "enable server webservers/web2" | sudo socat stdio tcp4-connect:127.0.0.1:9999nixecho "enable server webservers/web2" | sudo socat stdio tcp4-connect:127.0.0.1:9999There is no output for this command.
-
Optional: enable health checks using the
enable health
command. Health checks are disabled by default. In the example above, we addedcheck
to our server definition which allows us to enable health checks usingenable health
:echo "enable health webservers/web2" | sudo socat stdio tcp4-connect:127.0.0.1:9999echo "enable health webservers/web2" | sudo socat stdio tcp4-connect:127.0.0.1:9999There is no output for this command.
Available since
- HAProxy 3.0
- HAProxy Enterprise 3.0r1
You can use static cookies for session persistence for dynamic servers. To add a dynamic server to your backend with a static cookie, issue the add server command, specifying the name of your cookie:
nix
echo "add server webservers/web2 172.16.0.12:8080 cookie app2" | \socat stdio tcp4-connect:127.0.0.1:9999
nix
echo "add server webservers/web2 172.16.0.12:8080 cookie app2" | \socat stdio tcp4-connect:127.0.0.1:9999
outputtext
New server registered.
outputtext
New server registered.
See also Jump to heading
Do you have any suggestions on how we can improve the content of this page?