vtorc (experimental)

vtorc is a fork of the Orchestrator customized to run as a Vitess component. It is available as an experimental feature. It still needs thorough testing, and more features need to be added.

In order to configure vtorc, you have to make the following changes to vttablet:

  • Remove -enable_semi_sync=true: This part will be managed by vtorc instead.
  • Add -disable_active_reparents=true: This part will prevent vttablet from fixing replication, and will rely on vtorc instead.

As mentioned before, bringing up vtorc also lets you avoid performing the InitShardPrimary step.

vtorc requires a config file to be launched. A sample is available here:

{
  "Debug": true,
  "MySQLTopologyUser": "orc_client_user",
  "MySQLTopologyPassword": "orc_client_user_password",
  "MySQLReplicaUser": "vt_repl",
  "MySQLReplicaPassword": "",
  "RecoveryPeriodBlockSeconds": 5
}

The orc_client_user and its password are in the init_db.sql file. It is highly recommended that you change the password to a more secure value. The same recommendation holds for the vt_repl user.

In production, you may also want to set “Debug” to false, and use a higher value for RecoveryPeriodBlockSeconds (default 3600).

You can bring vtorc using the following invocation:

vtorc <topo_flags> \
  -log_dir=${VTDATAROOT}/tmp \
  -config orc_config.json \
  -orc_web_dir ${VTROOT}/web/orchestrator

orc_web_dir must point at the contents of the orchestrator web files. The source can be found here.

Bringing up vtorc should immediately cause a primary to be elected among the vttablets that have come up.

The vtorc config supports a new Durability setting that can currently be set to none, semi_sync or cross_cell. The semi_sync setting is the equivalent to setting the vttablet’s enable_semi_sync flag, whereas cross_cell will ensure that a primary will acknowledge a commit only if a replica that is not in the current cell has received the binary logs.

You can optionally add a clusters_to_watch flag that contains a comma separated list of keyspaces or keyspace/shard values. If specified, vtorc will manage only those clusters.

You can perform planned failovers using vtorc. Additionally, vtorc will also perform failure detection with automatic failovers while honoring the Durability rules.

Other Orchestrator settings may also be carefully added to the config. However, some of them may not be compatible with Vitess. These will be documented soon.


vtorc (experimental)