Node Balancers v4.115.0
NodeBalancers List
Returns a paginated list of NodeBalancers you have access to.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_only |
Query Parameters
page |
The page of a collection to return. |
page_size |
The number of items to return per page. |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/nodebalancers
linode-cli nodebalancers list
Response Samples
{
"data": [
{
"client_conn_throttle": 0,
"created": "2018-01-01T00:01:01",
"hostname": "192.0.2.1.ip.linodeusercontent.com",
"id": 12345,
"ipv4": "12.34.56.78",
"ipv6": null,
"label": "balancer12345",
"region": "us-east",
"tags": [
"example tag",
"another example"
],
"transfer": {
"in": 28.91200828552246,
"out": 3.5487728118896484,
"total": 32.46078109741211
},
"updated": "2018-03-01T00:01:01"
}
],
"page": 1,
"pages": 1,
"results": 1
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
data | array of objects
| ||||||||||||||||||||||||||||
page | integer The current page. | ||||||||||||||||||||||||||||
pages | integer The total number of pages. | ||||||||||||||||||||||||||||
results | integer The total number of results. |
errors | array of objects
|
NodeBalancer Create
Creates a NodeBalancer in the requested Region. This NodeBalancer will not start serving requests until it is configured.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Request Body Schema
client_conn_throttle | integer
0..20Throttle connections per second. Set to 0 (zero) to disable throttling. |
configs | array The ports to configure this NodeBalancer with on creation. Each config must have a unique port and at least one Node. |
label Filterable | string
3..32
charactersThis NodeBalancer’s label. These must be unique on your Account. |
region Required | string The ID of the Region to create this NodeBalancer in. |
Request Samples
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X POST -d '{
"region": "us-east",
"label": "balancer12345",
"client_conn_throttle": 0
}' \
https://api.linode.com/v4/nodebalancers
linode-cli nodebalancers create \
--region us-east \
--label balancer12345 \
--client_conn_throttle 0
Response Samples
{
"client_conn_throttle": 0,
"created": "2018-01-01T00:01:01",
"hostname": "192.0.2.1.ip.linodeusercontent.com",
"id": 12345,
"ipv4": "12.34.56.78",
"ipv6": null,
"label": "balancer12345",
"region": "us-east",
"tags": [
"example tag",
"another example"
],
"transfer": {
"in": 28.91200828552246,
"out": 3.5487728118896484,
"total": 32.46078109741211
},
"updated": "2018-03-01T00:01:01"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
client_conn_throttle | integer
0..20Throttle connections per second. Set to 0 (zero) to disable throttling. | ||||||
created | string <date-time> When this NodeBalancer was created. | ||||||
hostname | string This NodeBalancer’s hostname, beginning with its IP address and ending with .ip.linodeusercontent.com. | ||||||
id | integer This NodeBalancer’s unique ID. | ||||||
ipv4 Filterable | string <ip> This NodeBalancer’s public IPv4 address. | ||||||
ipv6 Nullable | string <ip> This NodeBalancer’s public IPv6 address. | ||||||
label Filterable | string
3..32
charactersThis NodeBalancer’s label. These must be unique on your Account. | ||||||
region Filterable | string The Region where this NodeBalancer is located. NodeBalancers only support backends in the same Region. | ||||||
tags Filterable | array of strings An array of Tags applied to this object. Tags are for organizational purposes only. | ||||||
transfer | object Information about the amount of transfer this NodeBalancer has had so far this month.
| ||||||
updated | string <date-time> When this NodeBalancer was last updated. |
errors | array of objects
|
NodeBalancer Delete
Deletes a NodeBalancer.
This is a destructive action and cannot be undone.
Deleting a NodeBalancer will also delete all associated Configs and Nodes, although the backend servers represented by the Nodes will not be changed or removed. Deleting a NodeBalancer will cause you to lose access to the IP Addresses assigned to this NodeBalancer.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
-X DELETE \
https://api.linode.com/v4/nodebalancers/12345
linode-cli nodebalancers delete 12345
Response Samples
{}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
errors | array of objects
|
NodeBalancer View
Returns a single NodeBalancer you can access.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_only |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/nodebalancers/12345
linode-cli nodebalancers view 12345
Response Samples
{
"client_conn_throttle": 0,
"created": "2018-01-01T00:01:01",
"hostname": "192.0.2.1.ip.linodeusercontent.com",
"id": 12345,
"ipv4": "12.34.56.78",
"ipv6": null,
"label": "balancer12345",
"region": "us-east",
"tags": [
"example tag",
"another example"
],
"transfer": {
"in": 28.91200828552246,
"out": 3.5487728118896484,
"total": 32.46078109741211
},
"updated": "2018-03-01T00:01:01"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
client_conn_throttle | integer
0..20Throttle connections per second. Set to 0 (zero) to disable throttling. | ||||||
created | string <date-time> When this NodeBalancer was created. | ||||||
hostname | string This NodeBalancer’s hostname, beginning with its IP address and ending with .ip.linodeusercontent.com. | ||||||
id | integer This NodeBalancer’s unique ID. | ||||||
ipv4 Filterable | string <ip> This NodeBalancer’s public IPv4 address. | ||||||
ipv6 Nullable | string <ip> This NodeBalancer’s public IPv6 address. | ||||||
label Filterable | string
3..32
charactersThis NodeBalancer’s label. These must be unique on your Account. | ||||||
region Filterable | string The Region where this NodeBalancer is located. NodeBalancers only support backends in the same Region. | ||||||
tags Filterable | array of strings An array of Tags applied to this object. Tags are for organizational purposes only. | ||||||
transfer | object Information about the amount of transfer this NodeBalancer has had so far this month.
| ||||||
updated | string <date-time> When this NodeBalancer was last updated. |
errors | array of objects
|
NodeBalancer Update
Updates information about a NodeBalancer you can access.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
Request Body Schema
client_conn_throttle | integer
0..20Throttle connections per second. Set to 0 (zero) to disable throttling. |
label Filterable | string
3..32
charactersThis NodeBalancer’s label. These must be unique on your Account. |
tags Filterable | array of strings An array of Tags applied to this object. Tags are for organizational purposes only. |
transfer | object Information about the amount of transfer this NodeBalancer has had so far this month. |
Request Samples
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X PUT -d '{
"label": "balancer12345",
"client_conn_throttle": 0
}' \
https://api.linode.com/v4/nodebalancers/12345
linode-cli nodebalancers update 12345 \
--label balancer12345 \
--client_conn_throttle 0
Response Samples
{
"client_conn_throttle": 0,
"created": "2018-01-01T00:01:01",
"hostname": "192.0.2.1.ip.linodeusercontent.com",
"id": 12345,
"ipv4": "12.34.56.78",
"ipv6": null,
"label": "balancer12345",
"region": "us-east",
"tags": [
"example tag",
"another example"
],
"transfer": {
"in": 28.91200828552246,
"out": 3.5487728118896484,
"total": 32.46078109741211
},
"updated": "2018-03-01T00:01:01"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
client_conn_throttle | integer
0..20Throttle connections per second. Set to 0 (zero) to disable throttling. | ||||||
created | string <date-time> When this NodeBalancer was created. | ||||||
hostname | string This NodeBalancer’s hostname, beginning with its IP address and ending with .ip.linodeusercontent.com. | ||||||
id | integer This NodeBalancer’s unique ID. | ||||||
ipv4 Filterable | string <ip> This NodeBalancer’s public IPv4 address. | ||||||
ipv6 Nullable | string <ip> This NodeBalancer’s public IPv6 address. | ||||||
label Filterable | string
3..32
charactersThis NodeBalancer’s label. These must be unique on your Account. | ||||||
region Filterable | string The Region where this NodeBalancer is located. NodeBalancers only support backends in the same Region. | ||||||
tags Filterable | array of strings An array of Tags applied to this object. Tags are for organizational purposes only. | ||||||
transfer | object Information about the amount of transfer this NodeBalancer has had so far this month.
| ||||||
updated | string <date-time> When this NodeBalancer was last updated. |
errors | array of objects
|
Configs List
Returns a paginated list of NodeBalancer Configs associated with this NodeBalancer. NodeBalancer Configs represent individual ports that this NodeBalancer will accept traffic on, one Config per port.
For example, if you wanted to accept standard HTTP traffic, you would need a Config listening on port 80.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_only |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
Query Parameters
page |
The page of a collection to return. |
page_size |
The number of items to return per page. |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/nodebalancers/12345/configs
linode-cli nodebalancers configs-list 12345
Response Samples
{
"data": [
{
"algorithm": "roundrobin",
"check": "http_body",
"check_attempts": 3,
"check_body": "it works",
"check_interval": 90,
"check_passive": true,
"check_path": "/test",
"check_timeout": 10,
"cipher_suite": "recommended",
"id": 4567,
"nodebalancer_id": 12345,
"nodes_status": {
"down": 0,
"up": 4
},
"port": 80,
"protocol": "http",
"proxy_protocol": "none",
"ssl_cert": null,
"ssl_commonname": null,
"ssl_fingerprint": null,
"ssl_key": null,
"stickiness": "http_cookie"
}
],
"page": 1,
"pages": 1,
"results": 1
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
data | array of objects
| ||||||||||||||||||||||||||||||||||||||||||||
page | integer The current page. | ||||||||||||||||||||||||||||||||||||||||||||
pages | integer The total number of pages. | ||||||||||||||||||||||||||||||||||||||||||||
results | integer The total number of results. |
errors | array of objects
|
Config Create
Creates a NodeBalancer Config, which allows the NodeBalancer to accept traffic on a new port. You will need to add NodeBalancer Nodes to the new Config before it can actually serve requests.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
Request Body Schema
algorithm | string Enum:
roundrobin
leastconn
source What algorithm this NodeBalancer should use for routing traffic to backends. |
check | string Enum:
none
connection
http
http_body The type of check to perform against backends to ensure they are serving requests. This is used to determine if backends are up or down.
|
check_attempts | integer
1..30How many times to attempt a check before considering a backend to be down. |
check_body | string This value must be present in the response body of the check in order for it to pass. If this value is not present in the response body of a check request, the backend is considered to be down. |
check_interval | integer How often, in seconds, to check that backends are up and serving requests. |
check_passive | boolean If true, any response from this backend with a |
check_path | string The URL path to check on each backend. If the backend does not respond to this request it is considered to be down. |
check_timeout | integer
1..30How long, in seconds, to wait for a check attempt before considering it failed. |
cipher_suite | string Enum:
recommended
legacy What ciphers to use for SSL connections served by this NodeBalancer.
|
port | integer
1..65535The port this Config is for. These values must be unique across configs on a single NodeBalancer (you can’t have two configs for port 80, for example). While some ports imply some protocols, no enforcement is done and you may configure your NodeBalancer however is useful to you. For example, while port 443 is generally used for HTTPS, you do not need SSL configured to have a NodeBalancer listening on port 443. |
protocol | string Enum:
http
https
tcp The protocol this port is configured to serve.
|
proxy_protocol | string Enum:
none
v1
v2
Default:
none ProxyProtocol is a TCP extension that sends initial TCP connection information such as source/destination IPs and ports to backend devices. This information would be lost otherwise. Backend devices must be configured to work with ProxyProtocol if enabled.
|
ssl_cert Nullable | string <ssl-cert> The PEM-formatted public SSL certificate (or the combined PEM-formatted SSL certificate and Certificate Authority chain) that should be served on this NodeBalancerConfig’s port. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only |
ssl_key Nullable | string <ssl-key> The PEM-formatted private key for the SSL certificate set in the Line breaks must be represented as “\n” in the string. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only |
stickiness | string Enum:
none
table
http_cookie Controls how session stickiness is handled on this port.
|
Request Samples
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X POST -d '{
"port": 80,
"protocol": "http",
"algorithm": "roundrobin",
"stickiness": "http_cookie",
"check": "http_body",
"check_interval": 90,
"check_timeout": 10,
"check_attempts": 3,
"check_path": "/test",
"check_body": "it works",
"check_passive": true,
"proxy_protocol": "v1",
"cipher_suite": "recommended"
}' \
https://api.linode.com/v4/nodebalancers/12345/configs
linode-cli nodebalancers config-create 12345 \
--port 80 \
--protocol http \
--algorithm roundrobin \
--stickiness http_cookie \
--check http_body \
--check_interval 90 \
--check_timeout 10 \
--check_attempts 3 \
--check_path "/test" \
--check_body "it works" \
--check_passive true \
--proxy_protocol "v1" \
--cipher_suite recommended
Response Samples
{
"algorithm": "roundrobin",
"check": "http_body",
"check_attempts": 3,
"check_body": "it works",
"check_interval": 90,
"check_passive": true,
"check_path": "/test",
"check_timeout": 10,
"cipher_suite": "recommended",
"id": 4567,
"nodebalancer_id": 12345,
"nodes_status": {
"down": 0,
"up": 4
},
"port": 80,
"protocol": "http",
"proxy_protocol": "none",
"ssl_cert": null,
"ssl_commonname": null,
"ssl_fingerprint": null,
"ssl_key": null,
"stickiness": "http_cookie"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
algorithm | string Enum:
roundrobin
leastconn
source What algorithm this NodeBalancer should use for routing traffic to backends. | ||||
check | string Enum:
none
connection
http
http_body The type of check to perform against backends to ensure they are serving requests. This is used to determine if backends are up or down.
| ||||
check_attempts | integer
1..30How many times to attempt a check before considering a backend to be down. | ||||
check_body | string This value must be present in the response body of the check in order for it to pass. If this value is not present in the response body of a check request, the backend is considered to be down. | ||||
check_interval | integer How often, in seconds, to check that backends are up and serving requests. | ||||
check_passive | boolean If true, any response from this backend with a | ||||
check_path | string The URL path to check on each backend. If the backend does not respond to this request it is considered to be down. | ||||
check_timeout | integer
1..30How long, in seconds, to wait for a check attempt before considering it failed. | ||||
cipher_suite | string Enum:
recommended
legacy What ciphers to use for SSL connections served by this NodeBalancer.
| ||||
id | integer This config’s unique ID | ||||
nodebalancer_id | integer The ID for the NodeBalancer this config belongs to. | ||||
nodes_status | object A structure containing information about the health of the backends for this port. This information is updated periodically as checks are performed against backends.
| ||||
port | integer
1..65535The port this Config is for. These values must be unique across configs on a single NodeBalancer (you can’t have two configs for port 80, for example). While some ports imply some protocols, no enforcement is done and you may configure your NodeBalancer however is useful to you. For example, while port 443 is generally used for HTTPS, you do not need SSL configured to have a NodeBalancer listening on port 443. | ||||
protocol | string Enum:
http
https
tcp The protocol this port is configured to serve.
| ||||
proxy_protocol | string Enum:
none
v1
v2
Default:
none ProxyProtocol is a TCP extension that sends initial TCP connection information such as source/destination IPs and ports to backend devices. This information would be lost otherwise. Backend devices must be configured to work with ProxyProtocol if enabled.
| ||||
ssl_cert Nullable | string <ssl-cert> The PEM-formatted public SSL certificate (or the combined PEM-formatted SSL certificate and Certificate Authority chain) that should be served on this NodeBalancerConfig’s port. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||
ssl_commonname | string The read-only common name automatically derived from the SSL certificate assigned to this NodeBalancerConfig. Please refer to this field to verify that the appropriate certificate is assigned to your NodeBalancerConfig. | ||||
ssl_fingerprint | string The read-only fingerprint automatically derived from the SSL certificate assigned to this NodeBalancerConfig. Please refer to this field to verify that the appropriate certificate is assigned to your NodeBalancerConfig. | ||||
ssl_key Nullable | string <ssl-key> The PEM-formatted private key for the SSL certificate set in the Line breaks must be represented as “\n” in the string. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||
stickiness | string Enum:
none
table
http_cookie Controls how session stickiness is handled on this port.
|
errors | array of objects
|
Config Delete
Deletes the Config for a port of this NodeBalancer.
This cannot be undone.
Once completed, this NodeBalancer will no longer respond to requests on the given port. This also deletes all associated NodeBalancerNodes, but the Linodes they were routing traffic to will be unchanged and will not be removed.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the config to access. |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
-X DELETE \
https://api.linode.com/v4/nodebalancers/12345/configs/4567
linode-cli nodebalancers config-delete \
12345 4567
Response Samples
{}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
errors | array of objects
|
Config View
Returns configuration information for a single port of this NodeBalancer.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_only |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the config to access. |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/nodebalancers/12345/configs/4567
linode-cli nodebalancers config-view \
12345 4567
Response Samples
{
"algorithm": "roundrobin",
"check": "http_body",
"check_attempts": 3,
"check_body": "it works",
"check_interval": 90,
"check_passive": true,
"check_path": "/test",
"check_timeout": 10,
"cipher_suite": "recommended",
"id": 4567,
"nodebalancer_id": 12345,
"nodes_status": {
"down": 0,
"up": 4
},
"port": 80,
"protocol": "http",
"proxy_protocol": "none",
"ssl_cert": null,
"ssl_commonname": null,
"ssl_fingerprint": null,
"ssl_key": null,
"stickiness": "http_cookie"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
algorithm | string Enum:
roundrobin
leastconn
source What algorithm this NodeBalancer should use for routing traffic to backends. | ||||
check | string Enum:
none
connection
http
http_body The type of check to perform against backends to ensure they are serving requests. This is used to determine if backends are up or down.
| ||||
check_attempts | integer
1..30How many times to attempt a check before considering a backend to be down. | ||||
check_body | string This value must be present in the response body of the check in order for it to pass. If this value is not present in the response body of a check request, the backend is considered to be down. | ||||
check_interval | integer How often, in seconds, to check that backends are up and serving requests. | ||||
check_passive | boolean If true, any response from this backend with a | ||||
check_path | string The URL path to check on each backend. If the backend does not respond to this request it is considered to be down. | ||||
check_timeout | integer
1..30How long, in seconds, to wait for a check attempt before considering it failed. | ||||
cipher_suite | string Enum:
recommended
legacy What ciphers to use for SSL connections served by this NodeBalancer.
| ||||
id | integer This config’s unique ID | ||||
nodebalancer_id | integer The ID for the NodeBalancer this config belongs to. | ||||
nodes_status | object A structure containing information about the health of the backends for this port. This information is updated periodically as checks are performed against backends.
| ||||
port | integer
1..65535The port this Config is for. These values must be unique across configs on a single NodeBalancer (you can’t have two configs for port 80, for example). While some ports imply some protocols, no enforcement is done and you may configure your NodeBalancer however is useful to you. For example, while port 443 is generally used for HTTPS, you do not need SSL configured to have a NodeBalancer listening on port 443. | ||||
protocol | string Enum:
http
https
tcp The protocol this port is configured to serve.
| ||||
proxy_protocol | string Enum:
none
v1
v2
Default:
none ProxyProtocol is a TCP extension that sends initial TCP connection information such as source/destination IPs and ports to backend devices. This information would be lost otherwise. Backend devices must be configured to work with ProxyProtocol if enabled.
| ||||
ssl_cert Nullable | string <ssl-cert> The PEM-formatted public SSL certificate (or the combined PEM-formatted SSL certificate and Certificate Authority chain) that should be served on this NodeBalancerConfig’s port. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||
ssl_commonname | string The read-only common name automatically derived from the SSL certificate assigned to this NodeBalancerConfig. Please refer to this field to verify that the appropriate certificate is assigned to your NodeBalancerConfig. | ||||
ssl_fingerprint | string The read-only fingerprint automatically derived from the SSL certificate assigned to this NodeBalancerConfig. Please refer to this field to verify that the appropriate certificate is assigned to your NodeBalancerConfig. | ||||
ssl_key Nullable | string <ssl-key> The PEM-formatted private key for the SSL certificate set in the Line breaks must be represented as “\n” in the string. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||
stickiness | string Enum:
none
table
http_cookie Controls how session stickiness is handled on this port.
|
errors | array of objects
|
Config Update
Updates the configuration for a single port on a NodeBalancer.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the config to access. |
Request Body Schema
algorithm | string Enum:
roundrobin
leastconn
source What algorithm this NodeBalancer should use for routing traffic to backends. |
check | string Enum:
none
connection
http
http_body The type of check to perform against backends to ensure they are serving requests. This is used to determine if backends are up or down.
|
check_attempts | integer
1..30How many times to attempt a check before considering a backend to be down. |
check_body | string This value must be present in the response body of the check in order for it to pass. If this value is not present in the response body of a check request, the backend is considered to be down. |
check_interval | integer How often, in seconds, to check that backends are up and serving requests. |
check_passive | boolean If true, any response from this backend with a |
check_path | string The URL path to check on each backend. If the backend does not respond to this request it is considered to be down. |
check_timeout | integer
1..30How long, in seconds, to wait for a check attempt before considering it failed. |
cipher_suite | string Enum:
recommended
legacy What ciphers to use for SSL connections served by this NodeBalancer.
|
port | integer
1..65535The port this Config is for. These values must be unique across configs on a single NodeBalancer (you can’t have two configs for port 80, for example). While some ports imply some protocols, no enforcement is done and you may configure your NodeBalancer however is useful to you. For example, while port 443 is generally used for HTTPS, you do not need SSL configured to have a NodeBalancer listening on port 443. |
protocol | string Enum:
http
https
tcp The protocol this port is configured to serve.
|
proxy_protocol | string Enum:
none
v1
v2
Default:
none ProxyProtocol is a TCP extension that sends initial TCP connection information such as source/destination IPs and ports to backend devices. This information would be lost otherwise. Backend devices must be configured to work with ProxyProtocol if enabled.
|
ssl_cert Nullable | string <ssl-cert> The PEM-formatted public SSL certificate (or the combined PEM-formatted SSL certificate and Certificate Authority chain) that should be served on this NodeBalancerConfig’s port. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only |
ssl_key Nullable | string <ssl-key> The PEM-formatted private key for the SSL certificate set in the Line breaks must be represented as “\n” in the string. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only |
stickiness | string Enum:
none
table
http_cookie Controls how session stickiness is handled on this port.
|
Request Samples
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X PUT -d '{
"port": 80,
"protocol": "http",
"algorithm": "roundrobin",
"stickiness": "http_cookie",
"check": "http_body",
"check_interval": 90,
"check_timeout": 10,
"check_attempts": 3,
"check_path": "/test",
"check_body": "it works",
"check_passive": true,
"proxy_protocol": "v1",
"cipher_suite": "recommended"
}' \
https://api.linode.com/v4/nodebalancers/12345/configs/4567
linode-cli nodebalancers config-update \
12345 4567 \
--port 80 \
--protocol http \
--algorithm roundrobin \
--stickiness http_cookie \
--check http_body \
--check_interval 90 \
--check_timeout 10 \
--check_attempts 3 \
--check_path "/test" \
--check_body "it works" \
--check_passive true \
--proxy_protocol "v1" \
--cipher_suite recommended
Response Samples
{
"algorithm": "roundrobin",
"check": "http_body",
"check_attempts": 3,
"check_body": "it works",
"check_interval": 90,
"check_passive": true,
"check_path": "/test",
"check_timeout": 10,
"cipher_suite": "recommended",
"id": 4567,
"nodebalancer_id": 12345,
"nodes_status": {
"down": 0,
"up": 4
},
"port": 80,
"protocol": "http",
"proxy_protocol": "none",
"ssl_cert": null,
"ssl_commonname": null,
"ssl_fingerprint": null,
"ssl_key": null,
"stickiness": "http_cookie"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
algorithm | string Enum:
roundrobin
leastconn
source What algorithm this NodeBalancer should use for routing traffic to backends. | ||||
check | string Enum:
none
connection
http
http_body The type of check to perform against backends to ensure they are serving requests. This is used to determine if backends are up or down.
| ||||
check_attempts | integer
1..30How many times to attempt a check before considering a backend to be down. | ||||
check_body | string This value must be present in the response body of the check in order for it to pass. If this value is not present in the response body of a check request, the backend is considered to be down. | ||||
check_interval | integer How often, in seconds, to check that backends are up and serving requests. | ||||
check_passive | boolean If true, any response from this backend with a | ||||
check_path | string The URL path to check on each backend. If the backend does not respond to this request it is considered to be down. | ||||
check_timeout | integer
1..30How long, in seconds, to wait for a check attempt before considering it failed. | ||||
cipher_suite | string Enum:
recommended
legacy What ciphers to use for SSL connections served by this NodeBalancer.
| ||||
id | integer This config’s unique ID | ||||
nodebalancer_id | integer The ID for the NodeBalancer this config belongs to. | ||||
nodes_status | object A structure containing information about the health of the backends for this port. This information is updated periodically as checks are performed against backends.
| ||||
port | integer
1..65535The port this Config is for. These values must be unique across configs on a single NodeBalancer (you can’t have two configs for port 80, for example). While some ports imply some protocols, no enforcement is done and you may configure your NodeBalancer however is useful to you. For example, while port 443 is generally used for HTTPS, you do not need SSL configured to have a NodeBalancer listening on port 443. | ||||
protocol | string Enum:
http
https
tcp The protocol this port is configured to serve.
| ||||
proxy_protocol | string Enum:
none
v1
v2
Default:
none ProxyProtocol is a TCP extension that sends initial TCP connection information such as source/destination IPs and ports to backend devices. This information would be lost otherwise. Backend devices must be configured to work with ProxyProtocol if enabled.
| ||||
ssl_cert Nullable | string <ssl-cert> The PEM-formatted public SSL certificate (or the combined PEM-formatted SSL certificate and Certificate Authority chain) that should be served on this NodeBalancerConfig’s port. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||
ssl_commonname | string The read-only common name automatically derived from the SSL certificate assigned to this NodeBalancerConfig. Please refer to this field to verify that the appropriate certificate is assigned to your NodeBalancerConfig. | ||||
ssl_fingerprint | string The read-only fingerprint automatically derived from the SSL certificate assigned to this NodeBalancerConfig. Please refer to this field to verify that the appropriate certificate is assigned to your NodeBalancerConfig. | ||||
ssl_key Nullable | string <ssl-key> The PEM-formatted private key for the SSL certificate set in the Line breaks must be represented as “\n” in the string. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||
stickiness | string Enum:
none
table
http_cookie Controls how session stickiness is handled on this port.
|
errors | array of objects
|
Nodes List
Returns a paginated list of NodeBalancer nodes associated with this Config. These are the backends that will be sent traffic for this port.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_only |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the NodeBalancer config to access. |
Query Parameters
page |
The page of a collection to return. |
page_size |
The number of items to return per page. |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes
linode-cli nodebalancers nodes-list 12345 4567
Response Samples
{
"data": [
{
"address": "192.168.210.120:80",
"config_id": 4567,
"id": 54321,
"label": "node54321",
"mode": "accept",
"nodebalancer_id": 12345,
"status": "UP",
"weight": 50
}
],
"page": 1,
"pages": 1,
"results": 1
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
data | array of objects
| ||||||||||||||||
page | integer The current page. | ||||||||||||||||
pages | integer The total number of pages. | ||||||||||||||||
results | integer The total number of results. |
errors | array of objects
|
Node Create
Creates a NodeBalancer Node, a backend that can accept traffic for this NodeBalancer Config. Nodes are routed requests on the configured port based on their status.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the NodeBalancer config to access. |
Request Body Schema
address Required | string <ip> The private IP Address where this backend can be reached. This must be a private IP address. |
label Required | string
3..32
charactersThe label for this node. This is for display purposes only. |
mode | string Enum:
accept
reject
drain
backup The mode this NodeBalancer should use when sending traffic to this backend.
|
weight | integer
1..255Used when picking a backend to serve a request and is not pinned to a single backend yet. Nodes with a higher weight will receive more traffic. |
Request Samples
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X POST -d '{
"address": "192.168.210.120:80",
"label": "node54321",
"weight": 50,
"mode": "accept"
}' \
https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes
linode-cli nodebalancers node-create \
12345 4567 \
--address 192.168.210.120:80 \
--label node54321 \
--weight 50 \
--mode accept
Response Samples
{
"address": "192.168.210.120:80",
"config_id": 4567,
"id": 54321,
"label": "node54321",
"mode": "accept",
"nodebalancer_id": 12345,
"status": "UP",
"weight": 50
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
address | string <ip> The private IP Address where this backend can be reached. This must be a private IP address. |
config_id | integer The NodeBalancer Config ID that this Node belongs to. |
id | integer This node’s unique ID. |
label | string
3..32
charactersThe label for this node. This is for display purposes only. |
mode | string Enum:
accept
reject
drain
backup The mode this NodeBalancer should use when sending traffic to this backend.
|
nodebalancer_id | integer The NodeBalancer ID that this Node belongs to. |
status | string Enum:
unknown
UP
DOWN The current status of this node, based on the configured checks of its NodeBalancer Config. |
weight | integer
1..255Used when picking a backend to serve a request and is not pinned to a single backend yet. Nodes with a higher weight will receive more traffic. |
errors | array of objects
|
Node Delete
Deletes a Node from this Config. This backend will no longer receive traffic for the configured port of this NodeBalancer.
This does not change or remove the Linode whose address was used in the creation of this Node.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the Config to access |
nodeId | integer RequiredThe ID of the Node to access |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
-X DELETE \
https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321
linode-cli nodebalancers node-delete \
12345 4567 54321
Response Samples
{}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
errors | array of objects
|
Node View
Returns information about a single Node, a backend for this NodeBalancer’s configured port.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the Config to access |
nodeId | integer RequiredThe ID of the Node to access |
Request Samples
curl -H "Authorization: Bearer $TOKEN" \
https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321
linode-cli nodebalancers node-view 12345 4567 54321
Response Samples
{
"address": "192.168.210.120:80",
"config_id": 4567,
"id": 54321,
"label": "node54321",
"mode": "accept",
"nodebalancer_id": 12345,
"status": "UP",
"weight": 50
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
address | string <ip> The private IP Address where this backend can be reached. This must be a private IP address. |
config_id | integer The NodeBalancer Config ID that this Node belongs to. |
id | integer This node’s unique ID. |
label | string
3..32
charactersThe label for this node. This is for display purposes only. |
mode | string Enum:
accept
reject
drain
backup The mode this NodeBalancer should use when sending traffic to this backend.
|
nodebalancer_id | integer The NodeBalancer ID that this Node belongs to. |
status | string Enum:
unknown
UP
DOWN The current status of this node, based on the configured checks of its NodeBalancer Config. |
weight | integer
1..255Used when picking a backend to serve a request and is not pinned to a single backend yet. Nodes with a higher weight will receive more traffic. |
errors | array of objects
|
Node Update
Updates information about a Node, a backend for this NodeBalancer’s configured port.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the Config to access |
nodeId | integer RequiredThe ID of the Node to access |
Request Body Schema
address | string <ip> The private IP Address where this backend can be reached. This must be a private IP address. |
label | string
3..32
charactersThe label for this node. This is for display purposes only. |
mode | string Enum:
accept
reject
drain
backup The mode this NodeBalancer should use when sending traffic to this backend.
|
weight | integer
1..255Used when picking a backend to serve a request and is not pinned to a single backend yet. Nodes with a higher weight will receive more traffic. |
Request Samples
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X PUT -d '{
"address": "192.168.210.120:80",
"label": "node54321",
"weight": 50,
"mode": "accept"
}' \
https://api.linode.com/v4/nodebalancers/12345/configs/4567/nodes/54321
linode-cli nodebalancers node-create \
12345 4567 54321 \
--address 192.168.210.120:80 \
--label node54321 \
--weight 50 \
--mode accept
Response Samples
{
"address": "192.168.210.120:80",
"config_id": 4567,
"id": 54321,
"label": "node54321",
"mode": "accept",
"nodebalancer_id": 12345,
"status": "UP",
"weight": 50
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
address | string <ip> The private IP Address where this backend can be reached. This must be a private IP address. |
config_id | integer The NodeBalancer Config ID that this Node belongs to. |
id | integer This node’s unique ID. |
label | string
3..32
charactersThe label for this node. This is for display purposes only. |
mode | string Enum:
accept
reject
drain
backup The mode this NodeBalancer should use when sending traffic to this backend.
|
nodebalancer_id | integer The NodeBalancer ID that this Node belongs to. |
status | string Enum:
unknown
UP
DOWN The current status of this node, based on the configured checks of its NodeBalancer Config. |
weight | integer
1..255Used when picking a backend to serve a request and is not pinned to a single backend yet. Nodes with a higher weight will receive more traffic. |
errors | array of objects
|
Config Rebuild
Rebuilds a NodeBalancer Config and its Nodes that you have permission to modify.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_write |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
configId | integer RequiredThe ID of the Config to access. |
Request Body Schema
algorithm | string Enum:
roundrobin
leastconn
source What algorithm this NodeBalancer should use for routing traffic to backends. | ||||||||
check | string Enum:
none
connection
http
http_body The type of check to perform against backends to ensure they are serving requests. This is used to determine if backends are up or down.
| ||||||||
check_attempts | integer
1..30How many times to attempt a check before considering a backend to be down. | ||||||||
check_body | string This value must be present in the response body of the check in order for it to pass. If this value is not present in the response body of a check request, the backend is considered to be down. | ||||||||
check_interval | integer How often, in seconds, to check that backends are up and serving requests. | ||||||||
check_passive | boolean If true, any response from this backend with a | ||||||||
check_path | string The URL path to check on each backend. If the backend does not respond to this request it is considered to be down. | ||||||||
check_timeout | integer
1..30How long, in seconds, to wait for a check attempt before considering it failed. | ||||||||
cipher_suite | string Enum:
recommended
legacy What ciphers to use for SSL connections served by this NodeBalancer.
| ||||||||
nodes | array of objects The NodeBalancer Node(s) that serve this port. At least one Node is required per configured port. Some considerations for Nodes when rebuilding a config:
| ||||||||
port | integer
1..65535The port this Config is for. These values must be unique across configs on a single NodeBalancer (you can’t have two configs for port 80, for example). While some ports imply some protocols, no enforcement is done and you may configure your NodeBalancer however is useful to you. For example, while port 443 is generally used for HTTPS, you do not need SSL configured to have a NodeBalancer listening on port 443. | ||||||||
protocol | string Enum:
http
https
tcp The protocol this port is configured to serve.
| ||||||||
proxy_protocol | string Enum:
none
v1
v2
Default:
none ProxyProtocol is a TCP extension that sends initial TCP connection information such as source/destination IPs and ports to backend devices. This information would be lost otherwise. Backend devices must be configured to work with ProxyProtocol if enabled.
| ||||||||
ssl_cert Nullable | string <ssl-cert> The PEM-formatted public SSL certificate (or the combined PEM-formatted SSL certificate and Certificate Authority chain) that should be served on this NodeBalancerConfig’s port. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||||||
ssl_key Nullable | string <ssl-key> The PEM-formatted private key for the SSL certificate set in the Line breaks must be represented as “\n” in the string. The contents of this field will not be shown in any responses that display
the NodeBalancerConfig. Instead, The read-only | ||||||||
stickiness | string Enum:
none
table
http_cookie Controls how session stickiness is handled on this port.
|
Request Samples
curl -H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
-X POST -d '{
"port": 80,
"protocol": "http",
"algorithm": "roundrobin",
"stickiness": "http_cookie",
"check": "http_body",
"check_interval": 90,
"check_timeout": 10,
"check_attempts": 3,
"check_path": "/test",
"check_body": "it works",
"check_passive": true,
"proxy_protocol": "v1",
"cipher_suite": "recommended",
"nodes": [
{
"address": "192.168.210.120:80",
"label": "node1",
"weight": 50,
"mode": "accept"
},
{
"address": "192.168.210.122:81",
"label": "node2",
"weight": 50,
"mode": "accept"
},
]
}' \
https://api.linode.com/v4/nodebalancers/12345/configs/4567/rebuild
linode-cli nodebalancers config-rebuild \
12345 4567 \
--port 80 \
--protocol http \
--algorithm roundrobin \
--stickiness http_cookie \
--check http_body \
--check_interval 90 \
--check_timeout 10 \
--check_attempts 3 \
--check_path "/test" \
--check_body "it works" \
--check_passive true \
--proxy_protocol "v1" \
--cipher_suite recommended \
--nodes '{"address":"192.168.210.120:80","label":"node1","weight":50,"mode":"accept"}' \
--nodes '{"address":"192.168.210.122:80","label":"node2","weight":50,"mode":"accept"}'
Response Samples
{
"client_conn_throttle": 0,
"created": "2018-01-01T00:01:01",
"hostname": "192.0.2.1.ip.linodeusercontent.com",
"id": 12345,
"ipv4": "12.34.56.78",
"ipv6": null,
"label": "balancer12345",
"region": "us-east",
"tags": [
"example tag",
"another example"
],
"transfer": {
"in": 28.91200828552246,
"out": 3.5487728118896484,
"total": 32.46078109741211
},
"updated": "2018-03-01T00:01:01"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
client_conn_throttle | integer
0..20Throttle connections per second. Set to 0 (zero) to disable throttling. | ||||||
created | string <date-time> When this NodeBalancer was created. | ||||||
hostname | string This NodeBalancer’s hostname, beginning with its IP address and ending with .ip.linodeusercontent.com. | ||||||
id | integer This NodeBalancer’s unique ID. | ||||||
ipv4 Filterable | string <ip> This NodeBalancer’s public IPv4 address. | ||||||
ipv6 Nullable | string <ip> This NodeBalancer’s public IPv6 address. | ||||||
label Filterable | string
3..32
charactersThis NodeBalancer’s label. These must be unique on your Account. | ||||||
region Filterable | string The Region where this NodeBalancer is located. NodeBalancers only support backends in the same Region. | ||||||
tags Filterable | array of strings An array of Tags applied to this object. Tags are for organizational purposes only. | ||||||
transfer | object Information about the amount of transfer this NodeBalancer has had so far this month.
| ||||||
updated | string <date-time> When this NodeBalancer was last updated. |
errors | array of objects
|
NodeBalancer Statistics View
Returns detailed statistics about the requested NodeBalancer.
Authorizations
personalAccessToken | |
oauth | nodebalancers:read_only |
Path Parameters
nodeBalancerId | integer RequiredThe ID of the NodeBalancer to access. |
Response Samples
{
"data": {
"connections": [
null
],
"traffic": {
"in": [
null
],
"out": [
null
]
}
},
"title": "linode.com - balancer12345 (12345) - day (5 min avg)"
}
{
"errors": [
{
"field": "fieldname",
"reason": "fieldname must be a valid value"
}
]
}
Responses
data | object The data returned about this NodeBalancers.
| ||||||||
title | string The title for the statistics generated in this response. |
errors | array of objects
|