Skip to main content
Version: 2.5.0

Running ChronoLog with Docker (Multi Node)

Welcome!

This tutorial will guide you through quickly setting up ChronoLog in a multi-node environment using our automated deployment script. By the end, you'll have a fully operational distributed ChronoLog system, with minimal setup steps required.

If you're looking for a simpler single-node setup instead, see Docker (single node) - Running ChronoLog.

Overview

What You'll Learn

  • Quickly deploy ChronoLog using our automated script.
  • Customize your ChronoLog deployment with flexible configuration options.
  • Easily interact with and verify your ChronoLog setup.

Prerequisites: Docker & Docker Compose

ChronoLog runs inside Docker containers, orchestrated by Docker Compose, for easy multi-node management.

Install Docker & Docker Compose

Verify Installation

docker --version
docker compose version

Setting Up ChronoLog Using Automated Deployment

Step 1: Pull ChronoLog Docker Image

docker pull ghcr.io/grc-iit/chronolog:v2.5.0

Step 2: Download the Deployment Script

Retrieve the dynamic deployment script and make it executable:

wget https://raw.githubusercontent.com/grc-iit/ChronoLog/refs/heads/develop/CI/docker/dynamic_deploy.sh
chmod +x dynamic_deploy.sh

Step 3: Run the Deployment Script

Default deployment (1 of each component):

./dynamic_deploy.sh

Customized deployment:

Use flags for a custom setup:

  • -n total number of components (ChronoVisor + sum of the rest)
  • -k number of ChronoKeepers
  • -g number of ChronoGraphers
  • -p number of ChronoPlayers

Example:

./dynamic_deploy.sh -n 7 -k 2 -g 2 -p 2

This example will deploy a Docker instance for the ChronoVisor, 2 instances for ChronoKeepers, 2 for ChronoGraphers and 2 for ChronoPlayers.

The script uses the pre-built ChronoLog release image — no source code compilation is needed. It generates a Docker Compose file, starts the containers, configures SSH between them, and deploys ChronoLog services across the cluster.

Check your deployment:

docker ps

Stopping ChronoLog

Stop all containers:

docker compose -f dynamic-compose.yaml down

Remove volumes (required when upgrading to a new ChronoLog image version):

docker compose -f dynamic-compose.yaml down -v

Next: Client Performance Test

Once your multi-node deployment is running, continue with the Client + Performance test to generate load and validate the distributed setup.