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 consulting with our contributors before depending on a cluster deployed without the Ansible scripts.
Prerequisites Make sure that Docker is installed on each machine.
For more details about prerequisites, see Hardware and Software Requirements .
Deploy the TiKV cluster on multiple nodes Assume that you have 6 machines with the following details:
Name Host IP Services Data Path Node1 192.168.1.101 PD1 /data Node2 192.168.1.102 PD2 /data Node3 192.168.1.103 PD3 /data Node4 192.168.1.104 TiKV1 /data Node5 192.168.1.105 TiKV2 /data Node6 192.168.1.106 TiKV3 /data
If you want to test TiKV with a limited number of nodes, you can also use one PD instance to test the entire cluster.
Step 1: Pull the latest images of TiKV and PD from Docker Hub Start Docker and pull the latest images of TiKV and PD from Docker Hub using the following command:
docker pull pingcap/tikv:latest
docker pull pingcap/pd:latest
Step 2: Log in and start PD Log in to the three PD machines and start PD respectively:
Start PD1 on Node1:
docker run -d --name pd1 \
-p 2379:2379 \
-p 2380:2380 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/pd:latest \
--name= "pd1" \
--data-dir= "/data/pd1" \
--client-urls= "http://0.0.0.0:2379" \
--advertise-client-urls= "http://192.168.1.101:2379" \
--peer-urls= "http://0.0.0.0:2380" \
--advertise-peer-urls= "http://192.168.1.101:2380" \
--initial-cluster= "pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380"
Start PD2 on Node2:
docker run -d --name pd2 \
-p 2379:2379 \
-p 2380:2380 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/pd:latest \
--name= "pd2" \
--data-dir= "/data/pd2" \
--client-urls= "http://0.0.0.0:2379" \
--advertise-client-urls= "http://192.168.1.102:2379" \
--peer-urls= "http://0.0.0.0:2380" \
--advertise-peer-urls= "http://192.168.1.102:2380" \
--initial-cluster= "pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380"
Start PD3 on Node3:
docker run -d --name pd3 \
-p 2379:2379 \
-p 2380:2380 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/pd:latest \
--name= "pd3" \
--data-dir= "/data/pd3" \
--client-urls= "http://0.0.0.0:2379" \
--advertise-client-urls= "http://192.168.1.103:2379" \
--peer-urls= "http://0.0.0.0:2380" \
--advertise-peer-urls= "http://192.168.1.103:2380" \
--initial-cluster= "pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380"
Step 3: Log in and start TiKV Log in to the three TiKV machines and start TiKV respectively:
Start TiKV1 on Node4:
docker run -d --name tikv1 \
-p 20160:20160 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/tikv:latest \
--addr= "0.0.0.0:20160" \
--advertise-addr= "192.168.1.104:20160" \
--data-dir= "/data/tikv1" \
--pd= "192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379"
Start TiKV2 on Node5:
docker run -d --name tikv2 \
-p 20160:20160 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/tikv:latest \
--addr= "0.0.0.0:20160" \
--advertise-addr= "192.168.1.105:20160" \
--data-dir= "/data/tikv2" \
--pd= "192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379"
Start TiKV3 on Node6:
docker run -d --name tikv3 \
-p 20160:20160 \
-v /etc/localtime:/etc/localtime:ro \
-v /data:/data \
pingcap/tikv:latest \
--addr= "0.0.0.0:20160" \
--advertise-addr= "192.168.1.106:20160" \
--data-dir= "/data/tikv3" \
--pd= "192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379"
You can check whether the TiKV cluster has been successfully deployed using the following command:
curl 192.168.1.101:2379/pd/api/v1/stores
If the state of all the TiKV instances is “Up”, you have successfully deployed a TiKV cluster.
What’s next? If you want to try the Go client, see Try Two Types of APIs .