Production checklist

What to check before taking a TeselaDB cluster to production.

Go through this list before opening the cluster to your applications.

Machines

  • Linux on x86_64 or aarch64. macOS is for development, with no latency guarantees.
  • NVMe disks. TeselaDB writes with O_DIRECT and uses io_uring; if the kernel lacks it, it uses I/O threads and says so in the log.
  • At least three nodes, on different machines, so each range keeps answering if one goes down.
  • Clocks synchronised with NTP. A node whose clock drifts more than 125 ms from the cluster median hands over its leaderships and takes none until it is back within the margin.

Resources

OptionDefaultWhat it does
--coreslogical coresOne thread per core, the same on every node
--cpu-listCPUs allowed to the processWhich CPU each thread is pinned to
--memory-limit75% of the lower of physical memory and the cgroup limitTotal memory of the node
--io-executorautouring or threads
--direct-ioautoon or off

Network

Open port 27100 between the nodes, 27017 to your applications and, if you use it, the REST API on 27080. The administration port 27200 should only be reachable by your operations team and your metrics system. Details in Ports.

Security

  • Do not use --insecure.
  • Create one user per application with its roles and keep the root password off the server.
  • Turn on encryption at rest if your disks do not already do it: Encryption at rest.

Operations

  • Schedule backups with teseladb admin backup: Backup and restore.
  • Send /metrics to Prometheus and /healthz to your load balancer: Monitoring.
  • To shut a machine down, drain it first: Nodes.