Running dynomited
dynomited server: the config
file format, the command-line flags, validation, daemonization, and
signals. The authoritative flag reference is
dynomited(8).
The configuration file
dynomited is configured by a YAML file, one top-level key naming the
pool. The smallest working single-node config:
dyn_o_mite:
listen: 127.0.0.1:8102
dyn_listen: 127.0.0.1:8101
tokens: '101134286'
servers:
- 127.0.0.1:22122:1
data_store: 0
Start it:
cargo run -p dynomited -- --conf-file my.yml
# or, from an installed binary:
dynomited --conf-file my.yml
Working configs for single-node, two-node, multi-datacenter, memcache,
and secure setups are in
crates/dynomite/tests/fixtures/conf/.
They are exercised by the test suite, so they are guaranteed to parse.
Key fields
listen- The client-facing address (RESP / memcache clients connect here).
dyn_listen- The DNODE peer plane address (other nodes connect here). See DNODE.
servers- The backing store endpoint(s), as
host:port:weight. data_store0= valkey/redis,1= memcache,2= dyniak. See Configuration.tokens- The token(s) this node owns on the ring.
datacenter/rack- This node's placement; drives replication and consistency.
dyn_seeds- Peers to gossip with, as
host:port:rack:dc:token.
A two-node config adds placement and a seed pointing at the other node:
dyn_o_mite:
datacenter: dc
rack: rack
listen: 127.0.0.1:8102
dyn_listen: 127.0.0.1:8101
dyn_seeds:
- 127.0.0.2:8101:rack:dc:1383429731
servers:
- 127.0.0.1:22122:1
tokens: '12345678'
data_store: 0
stats_listen: 0.0.0.0:22222
See Your First Cluster for a full hands-on walk-through, and Configuration for every field.
Validate before you start
--test-conf parses and validates the file and exits without binding any
socket. Use it in CI and before a rolling restart:
dynomited --conf-file my.yml --test-conf && echo ok
Common flags
| Flag | Meaning |
|---|---|
-c, --conf-file <F> | The YAML config to load. |
-t, --test-conf | Validate config and exit. |
-d, --daemonize | Fork twice, become a session leader, redirect stdio. |
-v, --verbosity <N> | Log verbosity, 0..=11 (default 5). |
-p, --pid-file <F> | Write a PID file. |
-D, --describe-stats | Print the stats catalogue and exit. |
--log-format <fmt> | Log output format. |
-V, --version | Version and exit. |
The complete list, with every flag and its default, is in
dynomited(8) and dynomited --help.
Daemonizing and PID files
dynomited --conf-file my.yml --daemonize --pid-file /run/dynomited.pid
--daemonize double-forks, becomes a session leader, and redirects
stdio to /dev/null. Pair it with --pid-file so a supervisor can find
and signal the process.
When running under systemd or another supervisor that manages the process
lifecycle, prefer running in the foreground (no --daemonize) and let the
supervisor handle backgrounding, restart, and logging.
Signals
dynomited handles the standard termination signals for a clean
shutdown -- it stops accepting new connections, drains in-flight requests,
and closes the backend and peer connections before exiting. Send
SIGTERM (or SIGINT in the foreground) to trigger it.
On a very fast kill-and-relaunch, a listening socket can briefly linger.
Dynomite sets SO_REUSEADDR on all its listeners, including
the stats port, so a prompt rebind succeeds. If you script restarts, wait
for the process to actually exit before relaunching rather than assuming a
fixed sleep is enough.
Where to go next
- Metrics and Distributed Tracing for observability once it is running.
- Admin CLI (dyn-admin) for inspecting and operating a live cluster.
- Recommendations for production tuning.