Tutorials
Manage backends
In your load balancer configuration, a backend
defines a pool of servers to load balance.
You can manage backends programmatically by calling the API endpoint /services/haproxy/configuration/backends
.
Note
The version
parameter in DELETE, POST, and PUT requests must match the system’s current version. The examples in this section use a GET request to /v2/services/haproxy/configuration/version
to retrieve the version and populate the CFGVER
environment variable for the URL version
parameter.
List backends Jump to heading
To get a list of backends, make a GET request to the backends
endpoint:
nix
curl -X GET \--user admin:adminpwd \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends"
nix
curl -X GET \--user admin:adminpwd \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends"
outputjson
{"_version":2,"data":[{"name":"webservers"}]}
outputjson
{"_version":2,"data":[{"name":"webservers"}]}
List a specific backend Jump to heading
To get information about a specific backend, add its name to the end of the URL path. Below, we get information about the backend named webservers
:
nix
curl -X GET \--user admin:adminpwd \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends/webservers"
nix
curl -X GET \--user admin:adminpwd \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends/webservers"
outputjson
{"_version":3,"data":{"balance":{"algorithm":"roundrobin"},"default_server":{"alpn":"h2","check":"enabled","check_alpn":"h2","maxconn":30,"proxy-v2-options":null,"weight":100},"mode":"http","name":"webservers"}}}
outputjson
{"_version":3,"data":{"balance":{"algorithm":"roundrobin"},"default_server":{"alpn":"h2","check":"enabled","check_alpn":"h2","maxconn":30,"proxy-v2-options":null,"weight":100},"mode":"http","name":"webservers"}}}
Add a backend Jump to heading
To add a backend, make a POST request to the backends
endpoint. Send the fields to set in the body of the request. Below, we create a new backend named myservers
:
nix
CFGVER=$(curl -s -u admin:adminpwd http://localhost:5555/v2/services/haproxy/configuration/version)curl -X POST \--user admin:adminpwd \-H "Content-Type: application/json" \-d '{"name": "myservers","mode":"http","balance": {"algorithm":"roundrobin"},"default_server": {"alpn": "h2","check": "enabled","check_alpn": "h2","maxconn": 30,"weight": 100}}' \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends?version=$CFGVER"
nix
CFGVER=$(curl -s -u admin:adminpwd http://localhost:5555/v2/services/haproxy/configuration/version)curl -X POST \--user admin:adminpwd \-H "Content-Type: application/json" \-d '{"name": "myservers","mode":"http","balance": {"algorithm":"roundrobin"},"default_server": {"alpn": "h2","check": "enabled","check_alpn": "h2","maxconn": 30,"weight": 100}}' \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends?version=$CFGVER"
Replace a backend Jump to heading
To make changes to a backend, you must replace it entirely. To replace an existing backend, make a PUT request to the backends
endpoint, passing the name of the backend at the end of the URL path:
nix
CFGVER=$(curl -s -u admin:adminpwd http://localhost:5555/v2/services/haproxy/configuration/version)curl -X PUT \--user admin:adminpwd \-H "Content-Type: application/json" \-d '{"name": "myservers","mode":"http","balance": {"algorithm":"roundrobin"},"default_server": {"alpn": "h2","check": "enabled","check_alpn": "h2","maxconn": 30,"weight": 50}}' \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends/myservers?version=$CFGVER"
nix
CFGVER=$(curl -s -u admin:adminpwd http://localhost:5555/v2/services/haproxy/configuration/version)curl -X PUT \--user admin:adminpwd \-H "Content-Type: application/json" \-d '{"name": "myservers","mode":"http","balance": {"algorithm":"roundrobin"},"default_server": {"alpn": "h2","check": "enabled","check_alpn": "h2","maxconn": 30,"weight": 50}}' \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends/myservers?version=$CFGVER"
Delete a backend Jump to heading
To delete a backend, use the DELETE method:
nix
CFGVER=$(curl -s -u admin:adminpwd http://localhost:5555/v2/services/haproxy/configuration/version)curl -X DELETE \--user admin:adminpwd \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends/myservers?version=$CFGVER"
nix
CFGVER=$(curl -s -u admin:adminpwd http://localhost:5555/v2/services/haproxy/configuration/version)curl -X DELETE \--user admin:adminpwd \"http://127.0.0.1:5555/v2/services/haproxy/configuration/backends/myservers?version=$CFGVER"
Do you have any suggestions on how we can improve the content of this page?