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:
Tip
As of HAProxy version 3.2 and HAProxy Enterprise version 3.2r1, you can use the command add server help to see the list of keywords you can use.
| 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.
List supported keywords Jump to heading
Available since
- HAProxy 3.2
- HAProxy Enterprise 3.2r1
Use the add server help command to see which keywords are supported for your version of the load balancer:
nixecho "add server help" | \socat stdio tcp4-connect:127.0.0.1:9999
nixecho "add server help" | \socat stdio tcp4-connect:127.0.0.1:9999
OutputtextList of keywords supported for dynamic server:<list of keywords specific to your version>
OutputtextList of keywords supported for dynamic server:<list of keywords specific to your version>
For more information about each option, see the server and defaut-server options reference.
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 servercommand. Below, we add the serverweb2to 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 servercommand. 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 healthcommand. Health checks are disabled by default. In the example above, we addedcheckto 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:
nixecho "add server webservers/web2 172.16.0.12:8080 cookie app2" | \socat stdio tcp4-connect:127.0.0.1:9999
nixecho "add server webservers/web2 172.16.0.12:8080 cookie app2" | \socat stdio tcp4-connect:127.0.0.1:9999
outputtextNew server registered.
outputtextNew server registered.
See also Jump to heading
Do you have any suggestions on how we can improve the content of this page?