Module config

Source
Expand description

parse TOML config and generate requests from it

§Sōzu’s configuration

This module is responsible for parsing the config.toml provided by the flag --config when starting Sōzu.

Here is the workflow for generating a working config:

    config.toml   ->   FileConfig    ->  ConfigBuilder   ->  Config

config.toml is parsed to FileConfig, a structure that itself contains a lot of substructures whose names start with File- and end with -Config, like FileHttpFrontendConfig for instance.

The instance of FileConfig is then passed to a ConfigBuilder that populates a final Config with listeners and clusters.

To illustrate:

use sozu_command_lib::config::{FileConfig, ConfigBuilder};

let file_config = FileConfig::load_from_path("../config.toml")
    .expect("Could not load config.toml");

let config = ConfigBuilder::new(file_config, "../assets/config.toml")
    .into_config()
    .expect("Could not build config");

Note that the path to config.toml is used twice: the first time, to parse the file, the second time, to keep the path in the config for later use.

However, there is a simpler way that combines all this:

use sozu_command_lib::config::Config;

let config = Config::load_from_path("../assets/config.toml")
    .expect("Could not build config from the path");

§How values are chosen

Values are chosen in this order of priority:

  1. values defined in a section of the TOML file, for instance, timeouts for a specific listener
  2. values defined globally in the TOML file, like timeouts or buffer size
  3. if a variable has not been set in the TOML file, it will be set to a default defined here

Structs§

BackendConfig
Config
Sōzu configuration, populated with clusters and listeners.
ConfigBuilder
A builder that converts FileConfig to Config
FileClusterConfig
FileClusterFrontendConfig
FileConfig
Parsed from the TOML config provided by the user.
HttpClusterConfig
HttpFrontendConfig
ListenerBuilder
An HTTP, HTTPS or TCP listener as parsed from the Listeners section in the toml
MetricsConfig
TcpClusterConfig
TcpFrontendConfig

Enums§

ClusterConfig
ConfigError
FileClusterProtocolConfig
IncompatibilityKind
ListenerProtocol
MissingKind
PathRuleType

Constants§

DEFAULT_ACCEPT_QUEUE_TIMEOUT
timeout to accept connection events in the accept queue (60 seconds)
DEFAULT_AUTOMATIC_STATE_SAVE
wether to save the state automatically (false)
DEFAULT_BACK_TIMEOUT
maximum time of inactivity for a backend socket (30 seconds)
DEFAULT_BUFFER_SIZE
size of the buffers, in bytes (16 KB)
DEFAULT_CIPHER_SUITES
DEFAULT_COMMAND_BUFFER_SIZE
size of the buffer for the channels, in bytes. Must be bigger than the size of the data received. (1 MB)
DEFAULT_CONNECT_TIMEOUT
maximum time to connect to a backend server (3 seconds)
DEFAULT_DISABLE_CLUSTER_METRICS
wether to avoid register cluster metrics in the local drain
DEFAULT_FRONT_TIMEOUT
maximum time of inactivity for a frontend socket (60 seconds)
DEFAULT_GROUPS_LIST
DEFAULT_LOG_TARGET
for both logs and access logs
DEFAULT_MAX_BUFFERS
maximum number of buffers (1 000)
DEFAULT_MAX_COMMAND_BUFFER_SIZE
maximum size of the buffer for the channels, in bytes. (2 MB)
DEFAULT_MAX_CONNECTIONS
maximum number of simultaneous connections (10 000)
DEFAULT_MIN_BUFFERS
minimum number of buffers (1)
DEFAULT_REQUEST_TIMEOUT
maximum time to receive a request since the connection started (10 seconds)
DEFAULT_RUSTLS_CIPHER_LIST
provides all supported cipher suites exported by Rustls TLS provider as it support only strongly secure ones.
DEFAULT_SEND_TLS_13_TICKETS
Number of TLS 1.3 tickets to send to a client when establishing a connection. The tickets allow the client to resume a session. This protects the client agains session tracking. Increases the number of getrandom syscalls, with little influence on performance. Defaults to 4.
DEFAULT_SIGNATURE_ALGORITHMS
DEFAULT_STICKY_NAME
a name applied to sticky sessions (“SOZUBALANCEID”)
DEFAULT_WORKER_AUTOMATIC_RESTART
wether a worker is automatically restarted when it crashes (true)
DEFAULT_WORKER_COUNT
number of workers, i.e. Sōzu processes that scale horizontally (2)
DEFAULT_WORKER_TIMEOUT
maximum time to wait for a worker to respond, until it is deemed NotAnswering (10 seconds)
DEFAULT_ZOMBIE_CHECK_INTERVAL
Interval between checking for zombie sessions, (30 minutes)
MAX_LOOP_ITERATIONS

Functions§

default_sticky_name