PD is the abbreviation for Placement Driver. It is used to manage and schedule the TiKV cluster.
PD supports distribution and fault-tolerance by embedding etcd.
- Make sure Go (version 1.13) is installed.
- Use
make
to install PD. PD is installed in thebin
directory.
You can run pd-server
directly on your local machine, if you want to connect to PD from outside,
you can let PD listen on the host IP.
# Set correct HostIP here.
export HostIP="192.168.199.105"
pd-server --name="pd" \
--data-dir="pd" \
--client-urls="http://${HostIP}:2379" \
--peer-urls="http://${HostIP}:2380" \
--log-file=pd.log
Using curl
to see PD member:
curl http://${HostIP}:2379/pd/api/v1/members
{
"members": [
{
"name":"pd",
"member_id":"f62e88a6e81c149",
"peer_urls": [
"http://192.168.199.105:2380"
],
"client_urls": [
"http://192.168.199.105:2379"
]
}
]
}
A better tool httpie is recommended:
http http://${HostIP}:2379/pd/api/v1/members
Access-Control-Allow-Headers: accept, content-type, authorization
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin: *
Content-Length: 673
Content-Type: application/json; charset=UTF-8
Date: Thu, 20 Feb 2020 09:49:42 GMT
{
"members": [
{
"client_urls": [
"http://192.168.199.105:2379"
],
"member_id": "f62e88a6e81c149",
"name": "pd",
"peer_urls": [
"http://192.168.199.105:2380"
]
}
]
}
You can use the following command to build a PD image directly:
docker build -t pingcap/pd .
Or you can also use following command to get PD from Docker hub:
docker pull pingcap/pd
Run a single node with Docker:
# Set correct HostIP here.
export HostIP="192.168.199.105"
docker run -d -p 2379:2379 -p 2380:2380 --name pd pingcap/pd \
--name="pd" \
--data-dir="pd" \
--client-urls="http://0.0.0.0:2379" \
--advertise-client-urls="http://${HostIP}:2379" \
--peer-urls="http://0.0.0.0:2380" \
--advertise-peer-urls="http://${HostIP}:2380" \
--log-file=pd.log
PD is a component in TiDB project, you must run it with TiDB and TiKV together, see TiDB-Ansible to learn how to set up the cluster and run them.
You can also use Docker to run the cluster.