Skip to content
  • Auto
  • Light
  • Dark

Create

Create a New Load Balancer
gpu_droplets.load_balancers.create(LoadBalancerCreateParams**kwargs) -> load_balancerLoadBalancerLoadBalancerCreateResponse
post/v2/load_balancers

To create a new load balancer instance, send a POST request to /v2/load_balancers.

You can specify the Droplets that will sit behind the load balancer using one of two methods:

  • Set droplet_ids to a list of specific Droplet IDs.
  • Set tag to the name of a tag. All Droplets with this tag applied will be assigned to the load balancer. Additional Droplets will be automatically assigned as they are tagged.

These methods are mutually exclusive.

Parameters
forwarding_rulesiterable
entry_portintentry_protocolliteraltarget_portinttarget_protocolliteralcertificate_idstrtls_passthroughboolIterable[entry_portintentry_protocolliteraltarget_portinttarget_protocolliteralcertificate_idstrtls_passthroughboolForwardingRuleParam]

An array of objects specifying the forwarding rules for a load balancer.

Hide ParametersShow Parameters
entry_portint

An integer representing the port on which the load balancer instance will listen.

entry_protocolliteral
Literal["http", "https", "http2", 3 more]

The protocol used for traffic to the load balancer. The possible values are: http, https, http2, http3, tcp, or udp. If you set the entry_protocol to udp, the target_protocol must be set to udp. When using UDP, the load balancer requires that you set up a health check with a port that uses TCP, HTTP, or HTTPS to work properly.

Hide ParametersShow Parameters
"http"
"https"
"http2"
"http3"
"tcp"
"udp"
target_portint

An integer representing the port on the backend Droplets to which the load balancer will send traffic.

target_protocolliteral
Literal["http", "https", "http2", 2 more]

The protocol used for traffic from the load balancer to the backend Droplets. The possible values are: http, https, http2, tcp, or udp. If you set the target_protocol to udp, the entry_protocol must be set to udp. When using UDP, the load balancer requires that you set up a health check with a port that uses TCP, HTTP, or HTTPS to work properly.

Hide ParametersShow Parameters
"http"
"https"
"http2"
"tcp"
"udp"
certificate_idstr
optional

The ID of the TLS certificate used for SSL termination if enabled.

tls_passthroughbool
optional

A boolean value indicating whether SSL encrypted traffic will be passed through to the backend Droplets.

algorithmliteral
optional
deprecated
Literal["round_robin", "least_connections"]

This field has been deprecated. You can no longer specify an algorithm for load balancers.

Hide ParametersShow Parameters
"round_robin"
"least_connections"
disable_lets_encrypt_dns_recordsbool
optional

A boolean value indicating whether to disable automatic DNS record creation for Let's Encrypt certificates that are added to the load balancer.

domainsiterable
optional
certificate_idstris_managedboolnamestrIterable[certificate_idstris_managedboolnamestrDomainsParam]

An array of objects specifying the domain configurations for a Global load balancer.

Hide ParametersShow Parameters
certificate_idstr
optional

The ID of the TLS certificate used for SSL termination.

is_managedbool
optional

A boolean value indicating if the domain is already managed by DigitalOcean. If true, all A and AAAA records required to enable Global load balancers will be automatically added.

namestr
optional

FQDN to associate with a Global load balancer.

droplet_idsiterable
optional

An array containing the IDs of the Droplets assigned to the load balancer.

enable_backend_keepalivebool
optional

A boolean value indicating whether HTTP keepalive connections are maintained to target Droplets.

enable_proxy_protocolbool
optional

A boolean value indicating whether PROXY Protocol is in use.

firewallallowlistdenylistLbFirewallParam
optional

An object specifying allow and deny rules to control traffic to the load balancer.

glb_settingscdnCdnfailover_thresholdintregion_prioritiesDict[str, int]target_portinttarget_protocolliteralGlbSettingsParam
optional

An object specifying forwarding configurations for a Global load balancer.

health_checkcheck_interval_secondsinthealthy_thresholdintpathstrportintprotocolliteralresponse_timeout_secondsintunhealthy_thresholdintHealthCheckParam
optional

An object specifying health check settings for the load balancer.

http_idle_timeout_secondsint
optional

An integer value which configures the idle timeout for HTTP requests to the target droplets.

minimum30
maximum600
namestr
optional

A human-readable name for a load balancer instance.

networkliteral
optional
Literal["EXTERNAL", "INTERNAL"]

A string indicating whether the load balancer should be external or internal. Internal load balancers have no public IPs and are only accessible to resources on the same VPC network. This property cannot be updated after creating the load balancer.

Hide ParametersShow Parameters
"EXTERNAL"
"INTERNAL"
network_stackliteral
optional
Literal["IPV4", "DUALSTACK"]

A string indicating whether the load balancer will support IPv4 or both IPv4 and IPv6 networking. This property cannot be updated after creating the load balancer.

Hide ParametersShow Parameters
"IPV4"
"DUALSTACK"
project_idstr
optional

The ID of the project that the load balancer is associated with. If no ID is provided at creation, the load balancer associates with the user's default project. If an invalid project ID is provided, the load balancer will not be created.

redirect_http_to_httpsbool
optional

A boolean value indicating whether HTTP requests to the load balancer on port 80 will be redirected to HTTPS on port 443.

regionliteral
optional
Literal["ams1", "ams2", "ams3", 12 more]

The slug identifier for the region where the resource will initially be available.

Hide ParametersShow Parameters
"ams1"
"ams2"
"ams3"
"blr1"
"fra1"
"lon1"
"nyc1"
"nyc2"
"nyc3"
"sfo1"
"sfo2"
"sfo3"
"sgp1"
"tor1"
"syd1"
sizeliteral
optional
deprecated
Literal["lb-small", "lb-medium", "lb-large"]

This field has been replaced by the size_unit field for all regions except in AMS2, NYC2, and SFO1. Each available load balancer size now equates to the load balancer having a set number of nodes.

  • lb-small = 1 node
  • lb-medium = 3 nodes
  • lb-large = 6 nodes

You can resize load balancers after creation up to once per hour. You cannot resize a load balancer within the first hour of its creation.

Hide ParametersShow Parameters
"lb-small"
"lb-medium"
"lb-large"
size_unitint
optional

How many nodes the load balancer contains. Each additional node increases the load balancer's ability to manage more connections. Load balancers can be scaled up or down, and you can change the number of nodes after creation up to once per hour. This field is currently not available in the AMS2, NYC2, or SFO1 regions. Use the size field to scale load balancers that reside in these regions.

minimum1
maximum100
sticky_sessionscookie_namestrcookie_ttl_secondsinttypeliteralStickySessionsParam
optional

An object specifying sticky sessions settings for the load balancer.

target_load_balancer_idslist
optional
List[str]

An array containing the UUIDs of the Regional load balancers to be used as target backends for a Global load balancer.

tls_cipher_policyliteral
optional
Literal["DEFAULT", "STRONG"]

A string indicating the policy for the TLS cipher suites used by the load balancer. The possible values are DEFAULT or STRONG. The default value is DEFAULT.

Hide ParametersShow Parameters
"DEFAULT"
"STRONG"
typeliteral
optional
Literal["REGIONAL", "REGIONAL_NETWORK", "GLOBAL"]

A string indicating whether the load balancer should be a standard regional HTTP load balancer, a regional network load balancer that routes traffic at the TCP/UDP transport layer, or a global load balancer.

Hide ParametersShow Parameters
"REGIONAL"
"REGIONAL_NETWORK"
"GLOBAL"
vpc_uuidstr
optional

A string specifying the UUID of the VPC to which the load balancer is assigned.

formatuuid
Returns
LoadBalancerCreateResponseclass
Hide ParametersShow Parameters
load_balancerLoadBalancer
optional
from do_gradientai import GradientAI

client = GradientAI()
load_balancer = client.gpu_droplets.load_balancers.create(
    forwarding_rules=[{
        "entry_protocol": "http",
        "entry_port": 80,
        "target_protocol": "http",
        "target_port": 80,
    }, {
        "entry_protocol": "https",
        "entry_port": 443,
        "target_protocol": "https",
        "target_port": 443,
        "tls_passthrough": True,
    }],
    droplet_ids=[3164444, 3164445],
    firewall={
        "deny": ["cidr:1.2.0.0/16", "ip:2.3.4.5"],
        "allow": ["ip:1.2.3.4", "cidr:2.3.4.0/24"],
    },
    http_idle_timeout_seconds=60,
    name="example-lb-01",
    project_id="9cc10173-e9ea-4176-9dbc-a4cee4c4ff30",
    region="nyc3",
)
print(load_balancer.load_balancer)
200 Example
{
  "load_balancer": {
    "id": "4de7ac8b-495b-4884-9a69-1050c6793cd6",
    "name": "example-lb-01",
    "ip": "104.131.186.241",
    "size": "lb-small",
    "algorithm": "round_robin",
    "status": "new",
    "created_at": "2017-02-01T22:22:58Z",
    "forwarding_rules": [
      {
        "entry_protocol": "http",
        "entry_port": 80,
        "target_protocol": "http",
        "target_port": 80,
        "certificate_id": "",
        "tls_passthrough": false
      },
      {
        "entry_protocol": "https",
        "entry_port": 443,
        "target_protocol": "https",
        "target_port": 443,
        "certificate_id": "",
        "tls_passthrough": true
      }
    ],
    "health_check": {
      "protocol": "http",
      "port": 80,
      "path": "/",
      "check_interval_seconds": 10,
      "response_timeout_seconds": 5,
      "healthy_threshold": 5,
      "unhealthy_threshold": 3
    },
    "sticky_sessions": {
      "type": "none"
    },
    "region": {
      "name": "New York 3",
      "slug": "nyc3",
      "sizes": [
        "s-1vcpu-1gb",
        "s-1vcpu-2gb",
        "s-1vcpu-3gb",
        "s-2vcpu-2gb",
        "s-3vcpu-1gb",
        "s-2vcpu-4gb",
        "s-4vcpu-8gb",
        "s-6vcpu-16gb",
        "s-8vcpu-32gb",
        "s-12vcpu-48gb",
        "s-16vcpu-64gb",
        "s-20vcpu-96gb",
        "s-24vcpu-128gb",
        "s-32vcpu-192gb"
      ],
      "features": [
        "private_networking",
        "backups",
        "ipv6",
        "metadata",
        "install_agent"
      ],
      "available": true
    },
    "tag": "",
    "droplet_ids": [
      3164444,
      3164445
    ],
    "redirect_http_to_https": false,
    "enable_proxy_protocol": false,
    "enable_backend_keepalive": false,
    "vpc_uuid": "c33931f2-a26a-4e61-b85c-4e95a2ec431b",
    "disable_lets_encrypt_dns_records": false,
    "project_id": "9cc10173-e9ea-4176-9dbc-a4cee4c4ff30",
    "http_idle_timeout_seconds": 60,
    "firewall": {
      "deny": [
        "cidr:1.2.0.0/16",
        "ip:2.3.4.5"
      ],
      "allow": [
        "ip:1.2.3.4",
        "cidr:2.3.4.0/24"
      ]
    }
  }
}