This guide describes how to deploy a multi-node TiKV cluster using Docker.

The TiKV team strongly recommends you use the Ansible Deployment method. It is the method our team uses when we assist with deployment.

Other methods are documented for informational purposes. We strongly recommend before depending on a cluster deployed without the Ansible scripts.

Make sure that Docker is installed on each machine.

For more details about prerequisites, see Hardware and Software Requirements.

If you want to test TiKV with a limited number of nodes, you can also use one PD instance to test the entire cluster.

Start Docker and pull the latest images of TiKV and PD from using the following command:

Log in to the three PD machines and start PD respectively:

Start PD1 on Node1:

  1. -p 2379:2379 \
  2. -p 2380:2380 \
  3. -v /etc/localtime:/etc/localtime:ro \
  4. -v /data:/data \
  5. pingcap/pd:latest \
  6. --name="pd1" \
  7. --data-dir="/data/pd1" \
  8. --advertise-client-urls="http://192.168.1.101:2379" \
  9. --peer-urls="http://0.0.0.0:2380" \
  10. --advertise-peer-urls="http://192.168.1.101:2380" \

Start PD2 on Node2:

  1. docker run -d --name pd3 \
  2. -p 2379:2379 \
  3. -p 2380:2380 \
  4. -v /etc/localtime:/etc/localtime:ro \
  5. -v /data:/data \
  6. pingcap/pd:latest \
  7. --name="pd3" \
  8. --data-dir="/data/pd3" \
  9. --client-urls="http://0.0.0.0:2379" \
  10. --peer-urls="http://0.0.0.0:2380" \
  11. --initial-cluster="pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380"

Log in to the three TiKV machines and start TiKV respectively:

Start TiKV1 on Node4:

Start TiKV2 on Node5:

  1. docker run -d --name tikv2 \
  2. -p 20160:20160 \
  3. -v /etc/localtime:/etc/localtime:ro \
  4. -v /data:/data \
  5. pingcap/tikv:latest \
  6. --addr="0.0.0.0:20160" \
  7. --advertise-addr="192.168.1.105:20160" \
  8. --data-dir="/data/tikv2" \
  9. --pd="192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379"

Start TiKV3 on Node6:

You can check whether the TiKV cluster has been successfully deployed using the following command:

  1. curl 192.168.1.101:2379/pd/api/v1/stores

If you want to try the Go client, see Try Two Types of APIs.