| At a Glance | |
|---|---|---|
| Catalog | System | |
| Category | Switches | |
| User volumes | no | |
| Min. memory | 64M | |
| OS | Linux | |
| Constraints | no | |
| Questions/Comments | Ask Forum | |
ctl terminal. This interface allows a user to programmically enable/disable output terminals out1 - out8 and also to retrieve the state of all terminals. This is useful in cases when there is some kind of backend failure (i.e., such as in a database or storage appliance) where the application itself can automatically disable traffic to a specific set of servers. Note that in this case, L3LB itself is unable to detect this type of failure; so it is up to the application to detect the failure and disable the corresponding set of backend servers.
L3LB is designed to be extremely fast using very few resources. Under regular conditions, L3LB consumes about 25KB of memory for every session, or 1GB for 40000 simultaneous sessions, and processes up to 6000 requests per second.
| Resource | Minimum | Maximum | Default |
|---|---|---|---|
| CPU | 0.1 | 16 | 0.4 |
| Memory | 64 MB | 32 GB | 64 MB |
| Bandwidth | 1 Mbps | 2 Gbps | 250 Mbps |
| name | dir | prot. | description |
|---|---|---|---|
in | in | any | Common input. TCP requests sent to 'in' are directed to one of the outputs, either using round-robin selection or source-based session information. |
ctl | in | HTTP | Control terminal that is used for enabling/disabling the outputs and retrieving output terminal state |
out1-out8 | out | any | Balanced outputs. Any and all of these outputs can be left unconnected; traffic is distributed only to connected, enabled outputs. By default, all terminals are enabled. |
mon | out | cce | Used to send performance and resource usage statistics. |
| name | type | description |
|---|---|---|
mode | String | Specifies the mode of operation. Valid values are:tcp_roundrobin - incoming TCP sessions are distributed across all connected and enabled backend servers in a roundrobin fashion.tcp_source - The source IP address of the TCP request is used to bind the session to a particular backend server.udp_roundrobin - L3LB operates in UDP load balancing mode. Default: tcp_roundrobin. |
ports | String | A space or comma delimited list of ports and port ranges that L3LB forwards to backend servers. Port ranges are specified as a lower_port:higher_port with dash ("-") or colon (":") as a separator between them. Example: 80,81,90-99 110:120 140 141. Traffic received to unspecified port is dropped.Default: 80 |
max_connections | integer | The maximum number of concurrently active connections that L3LB can handle. When this number is reached, new connections are still accepted, but their processing is delayed until another connection is closed. Upon appliance start, L3LB automatically determines the maximum number of connections based upon available memory, compares it to the value of this property and uses the lowest value. If this property is 0 then the computed value is used. Note that neither the available memory nor an explicit setting of this property have a direct effect on the balancer's throughput or its maximum request rate - setting a low number (or having little memory) affects response only if the backend servers are performing lenghty operations for each request (e.g., database searches), causing many requests to remain open at the same time. tcp_roundrobin and tcp_source modes of operation.Default: 0 |
backup_outputs | String | A space or comma delimited list of outputs ( out1 - out8 ) that are considered backup servers. Output ranges (out1-out3) are NOT supported. Traffic is directed to the backup servers only if all backend servers are unavailable. The purpose of these backup servers is to notify clients that something is wrong or redirect them, instead of throwing errors from unavailable backend servers or timing out. Example: out1,out2,out3. If empty, no backup servers are used. Default: "" (no backup servers are used). |
ports property is used for tcp_roundrobin and tcp_source modes of operation. ICMP ping is always used in the udp_roundrobin mode of operation.
| name | type | description |
|---|---|---|
healthcheck_interval | Int | Interval between health checks; specified in seconds. No health check is performed if this property is 0. Default: 20 |
tcp_roundrobin and tcp_source modes of operation.
| name | type | description |
|---|---|---|
client_timeout | Int | Timeout in seconds for waiting for a request from a client after establishing the connection. Default: 150. |
server_timeout | Int | Timeout in seconds for waiting for a reply from a backend server after establishing the connection. Default: 150. |
conn_timeout | Int | Timeout in seconds for establishing any TCP connection from within L3LB through one of its terminals (this includes the health checks). Note that when L3LB is under heavy network load, the health checks may incorrectly time out in cases where this setting is set to a very low value (in such cases L3LB will start to disable outputs which may result in unexpected application operation). It is not recommended to set this property to a value lower than 20 seconds. Default: 20. |
| name | type | description |
|---|---|---|
ctl_port | Int | Port that is used to access the web service control interface through the ctl terminal.Default: 80. |
mon terminal.
The following counters belong to the L3LB counter group. X may have a value from 1 to 8.
| Counter name | Description |
|---|---|
outX_status | State of output terminal outX: 0 - enabled and up, 1 - enabled and down, 100 - disconnected. |
outX_queue | Number of queued requests for terminal outX.udp_roundrobin mode. |
outX_queue_max | Historical maximum of simultaneously queued requests for terminal outX.udp_roundrobin mode. |
outX_sessions | Number of active sessions for terminal outX. |
outX_sessions_max | Maximal number of active simultaneous sessions for terminal outX. |
outX_sessions_total | Number of completed sessions for terminal outX.udp_roundrobin mode. |
outX_errors | Number of failed health checks for terminal outX. |
queue | Current queue length, cumulative for out1 - out8.udp_roundrobin mode. |
queue_max | Historical maximum of simultaneously queued requests, cumulative for out1 - out8.udp_roundrobin mode. |
sessions_active | Number of active sessions, cumulative for out1 - out8. |
sessions_max | Historical maximal number of active sessions, cumulative for out1 - out8. |
sessions_total | Number of completed sessions, cumulative for out1 - out8.udp_roundrobin mode. |
errors | Total number of health check failures, cumulative for out1 - out8. |
| Error message | Description |
|---|---|
Error: unable to determine appliance memory configuration, please contact 3Tera support. | L3LB failed to detect amount of available memory, please contact 3Tera support. |
Error: failed to create the HAProxy config file, please contact 3Tera support. | L3LB failed to create the HAProxy config file, please contact 3Tera support (possibly due to low diskspace). |
Error: failed to determine number of available CPUs, please contact 3Tera support. | L3LB failed to detect amount of available CPUs, please contact 3Tera support. |
Error: invalid operation mode specified | Invalid mode specified, it should be one of tcp_roundrobin, tcp_source or udp_roundrobin |
Error: ctl_port value must be between 1 and 65535. | ctl_port value must be more than 1 and less than 65535. |
Error: failed to start L3LB, please see '/var/log/appliance/log' log file for details. | A system error occured while starting L3LB, please contact 3Tera support. |
Error: failed to initialize the control web service interface, please contact 3Tera support. | A system error occured while initializing the control web service interface exposed on the ctl terminal, please contact 3Tera support. |
Error: failed to initialize statistics reporting, please contact 3Tera support. | A system error occured while initializing statistics reporting, please contact 3Tera support. |
Error: failed to initialize the user interface terminal, please contact 3Tera support. | A system error occured while initializing the graphical user interface exposed on the ui terminal, please contact 3Tera support. |
ctl terminal (on the configured port), allowing for the enabling and disabling of the output terminals (out1 - out8) and retrieving the current terminal state.
GET HTTP method, as it only provides reading functionality. Thus, every supported type of protocol request can be defined by means of its URI and the output structure. Characters, that are considered special for the URI should be escaped via the standard %-encoding.
Below is a description of all supported URIs.
disable control call, based on how the output terminal is identified: out1 - out8
/api/disable?channel=out3 (disables the output terminal out3)
Request: /api/disable?10.11.12.13 (disables the output terminal that is connected to the web server with the IP address of 10.11.12.13)
Response:
L3LB returns the following structure with a status code and optional status message:
{
"status" :
{
"code": code_value,
"message": "status_message"
}
}
Possible status code values are listed below:
| Code value | Description |
|---|---|
0 | Operation was successful, terminal was disabled. |
10 | Operation was not successful, L3LB configuration was not modified. The most probable causes are that the terminal is already disabled or the specified IP address is invalid. |
100 | An error occured while processing the request, more details are available in the status message. |
enable control call, based on how the output terminal is identified: out1 - out8
/api/enable?channel=out3 (enables the output terminal out3)
Request: /api/enable?10.11.12.13 (enables the output terminal that is connected to the web server with ip address of 10.11.12.13)
Response:
L3LB returns the following structure with a status code and optional status message:
{
"status" :
{
"code": code_value,
"message": "status_message"
}
}
Possible status code values are listed below:
| Code value | Description |
|---|---|
0 | Operation was successful, terminal was enabled. |
10 | Operation was not successful, L3LB configuration was not modified. The most probable causes are that the terminal is already enabled or the specified IP address is invalid. |
100 | An error occured while processing the request, more details are available in the status message. |
/api/status (returns the state of all output terminals)
Response:
L3LB returns the following structure with a status code and optional status message:
{
"status" :
{
"code": code_value,
"message": "status_message",
"terminal_id": "terminal_state",
"terminal_id": "terminal_state",
...
}
}
State is returned only for all connected terminals; state for disabled and disconnected terminals is not reported.
Possible status code values are listed below:
| Code value | Description |
|---|---|
0 | Operation was successful. |
100 | An error occured while processing the request, more details are available in the status message. |
terminal values are out1 - out8.
Possible state values are:
| State value | Description |
|---|---|
up | Terminal is connected and active. |
down | Terminal is inactive. The web server that is connected to this terminal it is either down or failied the L3LB health check. |
{
"status" :
{
"code": 0,
"message": "",
"out1": "up",
"out2": "up",
"out3": "down",
"out4": "up"
}
}
ctl interface. The L3LB tcp_roundrobin mode is used in this case.
tcp_source mode of operation ensures proper web server to application server session support.
udp_roundrobin mode of operation is used.