{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "#/components/schemas/scaleway.lb.v1.Backend", "title": "scaleway.lb.v1.Backend", "type": "object", "properties": { "id": { "type": "string", "description": "Backend ID." }, "name": { "type": "string", "description": "Name of the backend." }, "forward_protocol": { "type": "string", "description": "Protocol used by the backend when forwarding traffic to backend servers.", "enum": [ "tcp", "http" ], "default": "tcp" }, "forward_port": { "type": "integer", "description": "Port used by the backend when forwarding traffic to backend servers.", "format": "int32" }, "forward_port_algorithm": { "type": "string", "description": "Load balancing algorithm to use when determining which backend server to forward new traffic to.", "enum": [ "roundrobin", "leastconn", "first" ], "default": "roundrobin" }, "sticky_sessions": { "type": "string", "description": "Defines whether sticky sessions (binding a particular session to a particular backend server) are activated and the method to use if so. None disables sticky sessions. Cookie-based uses an HTTP cookie to stick a session to a backend server. Table-based uses the source (client) IP address to stick a session to a backend server.", "enum": [ "none", "cookie", "table" ], "default": "none" }, "sticky_sessions_cookie_name": { "type": "string", "description": "Cookie name for cookie-based sticky sessions." }, "health_check": { "type": "object", "description": "Object defining the health check to be carried out by the backend when checking the status and health of backend servers.", "properties": { "port": { "type": "integer", "description": "Port to use for the backend server health check.", "format": "int32" }, "check_delay": { "type": "number", "description": "Time to wait between two consecutive health checks. (in milliseconds)", "default": 3000 }, "check_timeout": { "type": "number", "description": "Maximum time a backend server has to reply to the health check. (in milliseconds)", "default": 1000 }, "check_max_retries": { "type": "integer", "description": "Number of consecutive unsuccessful health checks after which the server will be considered dead.", "format": "int32" }, "tcp_config": { "type": "object", "description": "Object to configure a basic TCP health check.", "nullable": true, "x-one-of": "config" }, "mysql_config": { "type": "object", "description": "Object to configure a MySQL health check. The check requires MySQL >=3.22 or <9.0. For older or newer versions, use a TCP health check.", "properties": { "user": { "type": "string", "description": "MySQL user to use for the health check." } }, "nullable": true, "x-properties-order": [ "user" ], "x-one-of": "config" }, "pgsql_config": { "type": "object", "description": "Object to configure a PostgreSQL health check.", "properties": { "user": { "type": "string", "description": "PostgreSQL user to use for the health check." } }, "nullable": true, "x-properties-order": [ "user" ], "x-one-of": "config" }, "ldap_config": { "type": "object", "description": "Object to configure an LDAP health check. The response is analyzed to find the LDAPv3 response message.", "nullable": true, "x-one-of": "config" }, "redis_config": { "type": "object", "description": "Object to configure a Redis health check. The response is analyzed to find the +PONG response message.", "nullable": true, "x-one-of": "config" }, "http_config": { "type": "object", "description": "Object to configure an HTTP health check.", "properties": { "uri": { "type": "string", "description": "HTTP path used for the health check.\nThe HTTP path to use when performing a health check on backend servers." }, "method": { "type": "string", "description": "HTTP method used for the health check.\nThe HTTP method used when performing a health check on backend servers." }, "code": { "type": "integer", "description": "HTTP response code expected for a successful health check.\nThe HTTP response code that should be returned for a health check to be considered successful.", "format": "int32", "nullable": true }, "host_header": { "type": "string", "description": "HTTP host header used for the health check.\nThe HTTP host header used when performing a health check on backend servers." } }, "nullable": true, "x-properties-order": [ "uri", "method", "code", "host_header" ], "x-one-of": "config" }, "https_config": { "type": "object", "description": "Object to configure an HTTPS health check.", "properties": { "uri": { "type": "string", "description": "HTTP path used for the health check.\nThe HTTP path to use when performing a health check on backend servers." }, "method": { "type": "string", "description": "HTTP method used for the health check.\nThe HTTP method used when performing a health check on backend servers." }, "code": { "type": "integer", "description": "HTTP response code expected for a successful health check.\nThe HTTP response code that should be returned for a health check to be considered successful.", "format": "int32", "nullable": true }, "host_header": { "type": "string", "description": "HTTP host header used for the health check.\nThe HTTP host header used when performing a health check on backend servers." }, "sni": { "type": "string", "description": "SNI used for SSL health checks.\nThe SNI value used when performing a health check on backend servers over SSL." } }, "nullable": true, "x-properties-order": [ "uri", "method", "code", "host_header", "sni" ], "x-one-of": "config" }, "check_send_proxy": { "type": "boolean", "description": "Defines whether proxy protocol should be activated for the health check." }, "transient_check_delay": { "type": "string", "description": "Time to wait between two consecutive health checks when a backend server is in a transient state (going UP or DOWN). (in seconds)", "example": "2.5s", "nullable": true, "default": "0.5s" } }, "x-properties-order": [ "port", "check_delay", "check_timeout", "check_max_retries", "tcp_config", "mysql_config", "pgsql_config", "ldap_config", "redis_config", "http_config", "https_config", "check_send_proxy", "transient_check_delay" ] }, "pool": { "type": "array", "description": "List of IP addresses of backend servers attached to this backend.", "items": { "type": "string" } }, "lb": { "type": "object", "description": "Load Balancer the backend is attached to.", "properties": { "id": { "type": "string", "description": "Underlying Instance ID." }, "name": { "type": "string", "description": "Load Balancer name." }, "description": { "type": "string", "description": "Load Balancer description." }, "status": { "type": "string", "description": "Load Balancer status.", "enum": [ "unknown", "ready", "pending", "stopped", "error", "locked", "migrating", "to_create", "creating", "to_delete", "deleting" ], "default": "unknown" }, "instances": { "type": "array", "description": "List of underlying Instances.", "items": { "$ref": "#/components/schemas/scaleway.lb.v1.Instance" } }, "organization_id": { "type": "string", "description": "Scaleway Organization ID." }, "project_id": { "type": "string", "description": "Scaleway Project ID." }, "ip": { "type": "array", "description": "List of IP addresses attached to the Load Balancer.", "items": { "$ref": "#/components/schemas/scaleway.lb.v1.Ip" } }, "tags": { "type": "array", "description": "Load Balancer tags.", "items": { "type": "string" } }, "frontend_count": { "type": "integer", "description": "Number of frontends the Load Balancer has.", "format": "int32" }, "backend_count": { "type": "integer", "description": "Number of backends the Load Balancer has.", "format": "int32" }, "type": { "type": "string", "description": "Load Balancer offer type." }, "subscriber": { "type": "object", "description": "Subscriber information.", "properties": { "id": { "type": "string", "description": "Subscriber ID." }, "name": { "type": "string", "description": "Subscriber name." }, "email_config": { "type": "object", "description": "Email address of subscriber.", "properties": { "email": { "type": "string", "description": "Email address to send alerts to." } }, "nullable": true, "x-properties-order": [ "email" ], "x-one-of": "config" }, "webhook_config": { "type": "object", "description": "Webhook URI of subscriber.", "properties": { "uri": { "type": "string", "description": "URI to receive POST requests." } }, "nullable": true, "x-properties-order": [ "uri" ], "x-one-of": "config" } }, "x-properties-order": [ "id", "name", "email_config", "webhook_config" ] }, "ssl_compatibility_level": { "type": "string", "description": "Determines the minimal SSL version which needs to be supported on client side.", "enum": [ "ssl_compatibility_level_unknown", "ssl_compatibility_level_intermediate", "ssl_compatibility_level_modern", "ssl_compatibility_level_old" ], "default": "ssl_compatibility_level_unknown" }, "created_at": { "type": "string", "description": "Date on which the Load Balancer was created. (RFC 3339 format)", "format": "date-time", "example": "2022-03-22T12:34:56.123456Z", "nullable": true }, "updated_at": { "type": "string", "description": "Date on which the Load Balancer was last updated. (RFC 3339 format)", "format": "date-time", "example": "2022-03-22T12:34:56.123456Z", "nullable": true }, "private_network_count": { "type": "integer", "description": "Number of Private Networks attached to the Load Balancer.", "format": "int32" }, "route_count": { "type": "integer", "description": "Number of routes configured on the Load Balancer.", "format": "int32" }, "region": { "type": "string", "description": "The region the Load Balancer is in.", "deprecated": true }, "zone": { "type": "string", "description": "The zone the Load Balancer is in." } }, "x-properties-order": [ "id", "name", "description", "status", "instances", "organization_id", "project_id", "ip", "tags", "frontend_count", "backend_count", "type", "subscriber", "ssl_compatibility_level", "created_at", "updated_at", "private_network_count", "route_count", "region", "zone" ] }, "send_proxy_v2": { "type": "boolean", "description": "Deprecated in favor of proxy_protocol field.", "deprecated": true }, "timeout_server": { "type": "number", "description": "Maximum allowed time for a backend server to process a request. (in milliseconds)", "default": 300000 }, "timeout_connect": { "type": "number", "description": "Maximum allowed time for establishing a connection to a backend server. (in milliseconds)", "default": 5000 }, "timeout_tunnel": { "type": "number", "description": "Maximum allowed tunnel inactivity time after Websocket is established (takes precedence over client and server timeout). (in milliseconds)", "default": 900000 }, "on_marked_down_action": { "type": "string", "description": "Action to take when a backend server is marked as down.", "enum": [ "on_marked_down_action_none", "shutdown_sessions" ], "default": "on_marked_down_action_none" }, "proxy_protocol": { "type": "string", "description": "Protocol to use between the Load Balancer and backend servers. Allows the backend servers to be informed of the client's real IP address. The PROXY protocol must be supported by the backend servers' software.", "enum": [ "proxy_protocol_unknown", "proxy_protocol_none", "proxy_protocol_v1", "proxy_protocol_v2", "proxy_protocol_v2_ssl", "proxy_protocol_v2_ssl_cn" ], "default": "proxy_protocol_unknown" }, "created_at": { "type": "string", "description": "Date at which the backend was created. (RFC 3339 format)", "format": "date-time", "example": "2022-03-22T12:34:56.123456Z", "nullable": true }, "updated_at": { "type": "string", "description": "Date at which the backend was updated. (RFC 3339 format)", "format": "date-time", "example": "2022-03-22T12:34:56.123456Z", "nullable": true }, "failover_host": { "type": "string", "description": "Scaleway Object Storage bucket website to be served as failover if all backend servers are down, e.g. failover-website.s3-website.fr-par.scw.cloud.", "nullable": true }, "ssl_bridging": { "type": "boolean", "description": "Defines whether to enable SSL bridging between the Load Balancer and backend servers.", "nullable": true }, "ignore_ssl_server_verify": { "type": "boolean", "description": "Defines whether the server certificate verification should be ignored.", "nullable": true }, "redispatch_attempt_count": { "type": "integer", "description": "Whether to use another backend server on each attempt.", "format": "int32", "nullable": true }, "max_retries": { "type": "integer", "description": "Number of retries when a backend server connection failed.", "format": "int32", "nullable": true }, "max_connections": { "type": "integer", "description": "Maximum number of connections allowed per backend server.", "format": "int32", "nullable": true }, "timeout_queue": { "type": "string", "description": "Maximum time for a request to be left pending in queue when `max_connections` is reached. (in seconds)", "example": "2.5s", "nullable": true } }, "x-properties-order": [ "id", "name", "forward_protocol", "forward_port", "forward_port_algorithm", "sticky_sessions", "sticky_sessions_cookie_name", "health_check", "pool", "lb", "send_proxy_v2", "timeout_server", "timeout_connect", "timeout_tunnel", "on_marked_down_action", "proxy_protocol", "created_at", "updated_at", "failover_host", "ssl_bridging", "ignore_ssl_server_verify", "redispatch_attempt_count", "max_retries", "max_connections", "timeout_queue" ] }