本博客來源自個人畢業設計的開發過程中,需要使用TiKV做為K-V store進行持久化存儲數據,為方便開發故部署單節點集群,方便調試:
本部署方案,修改自TiKV官方文檔中3節點部署方案,利用docker 用戶自定義網絡實現單機部署。部署並驗證后,顯示部署方案可行;
關於docker如何安裝和使用,請參考:docker 安裝與使用
TiKV整體架構:https://tikv.org/docs/4.0/concepts/architecture/
單主機3節點TiKV部署方案:
名稱 |
節點IP |
服務 |
數據路徑 |
節點1 |
172.18.0.11 |
PD1 |
/mnt/tikv/pd1 |
節點2 |
172.18.0.12 |
PD2 |
/mnt/tikv/pd2 |
節點3 |
172.18.0.13 |
PD3 |
/mnt/tikv/pd3 |
節點4 |
172.18.0.14 |
TiKV1 |
/mnt/tikv/tikv1 |
節點5 |
172.18.0.15 |
TiKV2 |
/mnt/tikv/tikv2 |
節點6 |
172.18.0.16 |
TiKV3 |
/mnt/tikv/tikv3 |
環境初始化命令:
mkdir -p /mnt/tikv/pd1 mkdir -p /mnt/tikv/pd2 mkdir -p /mnt/tikv/pd3 mkdir -p /mnt/tikv/tikv1 mkdir -p /mnt/tikv/tikv2 mkdir -p /mnt/tikv/tikv3 docker network create --subnet=172.18.0.0/16 yx-network # 創建自定義網絡
# 拉取鏡像docker pull pingcap/tikv:latest docker pull pingcap/pd:latest
節點啟動腳本:
PD1:
docker run -d --name pd1 \ -p 12379:2379 \ -p 12380:2380 \ -v /etc/localtime:/etc/localtime:ro \ -v /mnt/tikv/pd1:/data \ --network yx-network \ --ip 172.18.0.11 \ pingcap/pd:latest \ --name="pd1" \ --data-dir="/data/pd1" \ --client-urls="http://0.0.0.0:2379" \ --advertise-client-urls="http://172.18.0.11:2379" \ --peer-urls="http://0.0.0.0:2380" \ --advertise-peer-urls="http://172.18.0.11:2380" \ --initial-cluster="pd1=http://172.18.0.11:2380,pd2=http://172.18.0.12:2380,pd3=http://172.18.0.13:2380"
PD2:
docker run -d --name pd2 \ -p 22379:2379 \ -p 22380:2380 \ -v /etc/localtime:/etc/localtime:ro \ -v /mnt/tikv/pd2:/data \ --network yx-network \ --ip 172.18.0.12 \ pingcap/pd:latest \ --name="pd2" \ --data-dir="/data/pd2" \ --client-urls="http://0.0.0.0:2379" \ --advertise-client-urls="http://172.18.0.12:2379" \ --peer-urls="http://0.0.0.0:2380" \ --advertise-peer-urls="http://172.18.0.12:2380" \ --initial-cluster="pd1=http://172.18.0.11:2380,pd2=http://172.18.0.12:2380,pd3=http://172.18.0.13:2380"
PD3:
docker run -d --name pd3 \ -p 32379:2379 \ -p 32380:2380 \ -v /etc/localtime:/etc/localtime:ro \ -v /mnt/tikv/pd3:/data \ --network yx-network \ --ip 172.18.0.13 \ pingcap/pd:latest \ --name="pd3" \ --data-dir="/data/pd3" \ --client-urls="http://0.0.0.0:2379" \ --advertise-client-urls="http://172.18.0.13:2379" \ --peer-urls="http://0.0.0.0:2380" \ --advertise-peer-urls="http://172.18.0.13:2380" \ --initial-cluster="pd1=http://172.18.0.11:2380,pd2=http://172.18.0.12:2380,pd3=http://172.18.0.13:2380"
TiKV1:
docker run -d --name tikv1 \ -p 40160:20160 \ -v /etc/localtime:/etc/localtime:ro \ -v /mnt/tikv/tikv1:/data \ --network yx-network \ --ip 172.18.0.14 \ pingcap/tikv:latest \ --addr="0.0.0.0:20160" \ --advertise-addr="172.18.0.14:20160" \ --data-dir="/data/tikv1" \ --pd="172.18.0.11:2379,172.18.0.12:2379,172.18.0.13:2379"
TiKV2:
docker run -d --name tikv2 \ -p 50160:20160 \ -v /etc/localtime:/etc/localtime:ro \ -v /mnt/tikv/tikv2:/data \ --network yx-network \ --ip 172.18.0.15 \ pingcap/tikv:latest \ --addr="0.0.0.0:20160" \ --advertise-addr="172.18.0.15:20160" \ --data-dir="/data/tikv2" \ --pd="172.18.0.11:2379,172.18.0.12:2379,172.18.0.13:2379"
TiKV3:
docker run -d --name tikv3 \ -p 60160:20160 \ -v /etc/localtime:/etc/localtime:ro \ -v /mnt/tikv/tikv3:/data \ --network yx-network \ --ip 172.18.0.16 \ pingcap/tikv:latest \ --addr="0.0.0.0:20160" \ --advertise-addr="172.18.0.16:20160" \ --data-dir="/data/tikv3" \ --pd="172.18.0.11:2379,172.18.0.12:2379,172.18.0.13:2379"
集群驗證:
curl 172.18.0.11:2379/pd/api/v1/stores # 驗證集群,所有返回Up即成功!
保持更新,轉載請注明出處,更多內容請關注cnblogs.com/xuyaowen;
訪問dashboard:http://172.18.0.11:2379/dashboard
參考文檔:https://github.com/yaowenxu/Workplace/tree/master/understand-TiKV