Skip to content

Declarative server and cluster configuration #8724

@Totktonada

Description

@Totktonada

Tarantool has two main operation modes:

  • A script interpreter with a handy set of modules.
  • Interactive REPL for debugging pleasure (it is default -- enabled when no command-line parameters are passed).

And, if we add tarantoolctl/tt tooling here:

  • Start tarantool application as a service (server/instance/daemon).
  • Connect to a remote instance with interactive REPL.

The main scenario is to start a service. And we want to support it natively.

A service usually has a declarative configuration: ini file, json or yaml config file.

Since Tarantool 1.6 our configuration way is to find APIs you need and write a script to:

  • configure log and pid files
  • configure data directories
  • setup a database schema
  • setup users/passwords/privileges
  • bind binary protocol and console sockets
  • configure the application
  • ...

This approach is complicated for a user, increases amount of a boilerplace code, requires more guides how to cook it in the right way.

Tarantool 3.0 is 1.5*2.0 -- all the new features plus a declarative configuration.

Most of Tarantool based applications are not a single tarantool process, but a replicaset or a cluster of several replicasets. Sometimes even a set of such clusters.

We should look at the configuration as on a cluster configuration, not configs for individual instances. So, the config will define:

  • global options
  • per-group (cluster) options
  • per-replicaset options
  • per-instance options
  • group/replicaset/instance topology

What is supposed to be changed in Tarantool 3.0.

  • The new 'start as a service' mode, which is enabled with the --name (instance name) and --config (configuration file) options.
  • The new default mode: show available startup modes. tarantool -i still provides REPL.
  • The new built-in config module to acquire and reload the configuration.
* [ ] https://github.com/tarantool/tarantool/issues/8613
* [ ] https://github.com/tarantool/tarantool/issues/8725
* [ ] https://github.com/tarantool/tarantool/issues/8778
* [ ] https://github.com/tarantool/tarantool/issues/8789
* [ ] https://github.com/tarantool/tarantool/issues/8810

Metadata

Metadata

Labels

3.0Target is 3.0 and all newer release/master branches3.0-betaconfigepic

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions