Coordination

Coordination backend is required to support workflows with multiple branches or tasks with items and actions with concurrency policies defined.

StackStorm utilizes the OpenStack Tooz library for communicating with the coordination backend. The coordination backend must support the Locking functionality as defined by the Tooz interface. Please refrence the OpenStack Tooz compatability page for more information what interfaces are implemented by various backends.

The following is a list of backends that can be configured for the coordination service. For the full list of the supported backends and how to configure them, please visit OpenStack Tooz documentation.

  • Redis

  • Zookeeper

  • consul

  • etcd

  • file (for testing when all the services are running on a single host)

The configuration of the coordination service is done in the coordination section of /etc/st2/st2.conf. The following are configuration examples for Redis and Zookeeper.

Redis:

[coordination]
url = redis://:password@host:port

ZooKeeper:

[coordination]
url = kazoo://username:password@host:port

Some of these coordination backends also require corresponding client libraries to be installed in StackStorm virtualenv. Since StackStorm v3.5 the redis client libraries are included with the st2 package, but for all other versions or coordination backends, we do not ship these libraries by default. As an example, to install the client library in StackStorm virtualenv, run:

sudo su

# Example when using consul backend
/opt/stackstorm/st2/bin/pip install consul