armada leader
Start Armada in leader mode.
armada leader [flags]
Options
--api.address string API server address. The address the server listens on. (default "http://0.0.0.0:8443")
--api.advertise-address string Advertise API server address, used for NAT traversal. (default "http://127.0.0.1:8443")
--api.allowed-cn string AllowedCN is a CN which must be provided by a client.
--api.allowed-hostname string AllowedHostname is an IP address or hostname that must match the TLS certificate provided by a client.
--api.ca-filename string Path to the API server client auth CA file.
--api.cert-filename string Path to the API server certificate.
--api.client-cert-auth API server client certificate auth enabled. If set to true the api.ca-filename should be provided as well.
--api.key-filename string Path to the API server private key file.
--api.max-concurrent-connections uint32 Maximum number of allowed concurrent client connections. Default of 0 means no limit.
--api.max-concurrent-streams uint32 Maximum number of concurrent streams open. Default of 0 means no limit.
--api.stream-workers int Number of workers to use to process incoming streams. These workers are pre-started and should reduce an overhead of stack allocation as well as prevent potential overload of a storage layer. Default of 0 means number of CPUs + 1, any negative number will result in unlimited workers.
--dev-mode Development mode enabled (verbose logging, human-friendly log format).
-h, --help help for leader
--log-level string Log level: DEBUG/INFO/WARN/ERROR. (default "INFO")
--maintenance.enabled Whether maintenance API is enabled. (default true)
--maintenance.token string Token to check for maintenance API access, if left empty (default) no token is checked.
--memberlist.advertise-address string AdvertiseAddress is the address to advertise to other Armada instances used for NAT traversal.
Gossip services running on remote Armada instances will use AdvertiseAddress to exchange gossip service related messages. AdvertiseAddress is in the format of IP:Port, Hostname:Port or DNS Name:Port.
When not set, the raft.address value is used (gossip shares the raft UDP port).
--memberlist.cluster-name string Cluster name, propagated in Memberlist API responses as well as used as used as a label when forming the gossip cluster.
All nodes of the cluster MUST set this to the same value. If changing it is advisable to turn off all the nodes and then startup with the new value. (default "default")
--memberlist.members strings Seed is a list of addresses of remote Armada instances to bootstrap the gossip service.
Each address should be the raft address (IP:Port) of a peer — gossip shares the same UDP port as raft via ALPN multiplexing.
When not set, the raft.initial-members addresses are used automatically as gossip seeds.
--memberlist.node-name string Node name override, MUST be unique in a cluster, if not specified random stable UUID will be used instead.
--memberlist.tls-ca-file string Path to the CA certificate file used to verify gossip peer certificates.
--memberlist.tls-cert-file string Path to the TLS certificate file for mutual TLS between gossip peers.
--memberlist.tls-key-file string Path to the TLS private key file for mutual TLS between gossip peers.
--raft.address string RaftAddress is a hostname:port or IP:port address used by the Raft RPC module for exchanging Raft messages and snapshots.
This is also the identifier for a Storage instance. RaftAddress should be set to the public address that can be accessed from remote Storage instances.
--raft.compaction-overhead uint CompactionOverhead defines the number of most recent entries to keep after each Raft log compaction.
Raft log compaction is performed automatically every time when a snapshot is created. (default 5000)
--raft.election-rtt int ElectionRTT is the minimum number of message RTT between elections. Message RTT is defined by NodeHostConfig.RTTMillisecond.
The Raft paper suggests it to be a magnitude greater than HeartbeatRTT, which is the interval between two heartbeats. In Raft, the actual interval between elections is randomized to be between ElectionRTT and 2 * ElectionRTT.
As an example, assuming NodeHostConfig.RTTMillisecond is 100 millisecond, to set the election interval to be 1 second, then ElectionRTT should be set to 10.
When CheckQuorum is enabled, ElectionRTT also defines the interval for checking leader quorum. (default 20)
--raft.heartbeat-rtt int HeartbeatRTT is the number of message RTT between heartbeats. Message RTT is defined by NodeHostConfig.RTTMillisecond. The Raft paper suggest the heartbeat interval to be close to the average RTT between nodes.
As an example, assuming NodeHostConfig.RTTMillisecond is 100 millisecond, to set the heartbeat interval to be every 200 milliseconds, then HeartbeatRTT should be set to 2. (default 1)
--raft.initial-members strings Raft cluster initial members is an ordered list of raft addresses for the initial cluster nodes.
The position in the list (1-based) determines the replica ID. Each node derives its own replica ID
by finding its own raft.address in this list. All nodes must specify the same list in the same order.
Example for a 3-node cluster: "--raft.initial-members=127.0.0.1:5012,127.0.0.1:5013,127.0.0.1:5014".
--raft.listen-address string ListenAddress is a hostname:port or IP:port address used by the Raft RPC module to listen on for Raft message and snapshots.
When the ListenAddress field is not set, The Raft RPC module listens on RaftAddress. If 0.0.0.0 is specified as the IP of the ListenAddress, Armada listens to the specified port on all interfaces.
When hostname or domain name is specified, it is locally resolved to IP addresses first and Armada listens to all resolved IP addresses.
--raft.max-in-mem-log-size uint MaxInMemLogSize is the target size in bytes allowed for storing in memory Raft logs on each Raft node.
In memory Raft logs are the ones that have not been applied yet. (default 6291456)
--raft.max-recv-queue-size uint MaxReceiveQueueSize is the maximum size in bytes of each receive queue. Once the maximum size is reached, further replication messages will be
dropped to restrict memory usage. When set to 0, it means the queue size is unlimited.
--raft.max-send-queue-size uint MaxSendQueueSize is the maximum size in bytes of each send queue. Once the maximum size is reached, further replication messages will be
dropped to restrict memory usage. When set to 0, it means the send queue size is unlimited.
--raft.node-host-dir string NodeHostDir raft internal storage (default "/tmp/armada/raft")
--raft.quic-udp-buffer-size int QUICUDPBufferSize is the UDP socket receive/send buffer size in bytes requested for the QUIC transport.
When set to a positive value the QUIC library's buffer requests are capped at this value, preventing log warnings on systems
where the kernel UDP buffer limit is lower than the library default (7 MiB). A value of 0 uses the library default.
--raft.rtt duration RTTMillisecond defines the average Round Trip Time (RTT) between two NodeHost instances.
Such a RTT interval is internally used as a logical clock tick, Raft heartbeat and election intervals are both defined in term of how many such RTT intervals.
Note that RTTMillisecond is the combined delays between two NodeHost instances including all delays caused by network transmission, delays caused by NodeHost queuing and processing. (default 50ms)
--raft.snapshot-entries uint SnapshotEntries defines how often the state machine should be snapshot automatically.
It is defined in terms of the number of applied Raft log entries.
SnapshotEntries can be set to 0 to disable such automatic snapshotting. (default 10000)
--raft.snapshot-recovery-type string Specifies the way how the snapshots should be shared between nodes within the cluster. Options: snapshot, checkpoint, default: checkpoint for non Windows systems.
Type 'snapshot' uses in-memory snapshot of DB to send over wire to the peer. Type 'checkpoint'' uses hardlinks on FS a sends DB in tarball over wire. Checkpoint is thus much more memory and compute efficient at the potential expense of disk space, it is not advisable to use on OS/FS which does not support hardlinks.
--raft.state-machine-dir string StateMachineDir persistent storage for the state machine. (default "/tmp/armada/state-machine")
--raft.tls-ca-file string Path to the CA certificate file used to verify raft peer certificates.
--raft.tls-cert-file string Path to the TLS certificate file for mutual TLS between raft peers. Must be set together with raft.tls-key-file and raft.tls-ca-file.
--raft.tls-key-file string Path to the TLS private key file for mutual TLS between raft peers.
--raft.wal-dir string WALDir is the directory used for storing the WAL of Raft entries.
It is recommended to use low latency storage such as NVME SSD with power loss protection to store such WAL data.
Leave WALDir to have zero value will have everything stored in NodeHostDir.
--replication.address string Replication API server address. The address the server listens on. (default "http://0.0.0.0:8444")
--replication.ca-filename string Path to the API server CA cert file.
--replication.cert-filename string Path to the API server certificate.
--replication.client-cert-auth replication.ca-filename Replication server client certificate auth enabled. If set to true the replication.ca-filename should be provided as well.
--replication.enabled Whether replication API is enabled. (default true)
--replication.key-filename string Path to the API server private key file.
--replication.max-send-message-size-bytes uint The target maximum size of single replication message allowed to send.
Under some circumstances, a larger message could be sent. Followers should be able to accept slightly larger messages. (default 4194304)
--rest.address string REST API server address. (default "http://127.0.0.1:8079")
--rest.read-timeout duration Maximum duration for reading the entire request. (default 5s)
--storage.block-cache-size int Shared block cache size in bytes, the cache is used to hold uncompressed blocks of data in memory. (default 16777216)
--storage.table-cache-size int Shared table cache size, the cache is used to hold handles to open SSTs. (default 1024)
--tables.enabled Whether tables API is enabled. (default true)
--tables.token string Token to check for tables API access, if left empty (default) no token is checked.
SEE ALSO
- armada - Armada is a read-optimized distributed key-value store.