TiKV 开发环境单机部署

tikv是一个分布式的kv存储系统,开发环境免不了部署多个节点。手头资源不够的同学可以用pingcap官方给出的docker-compose方案https://github.com/pingcap/tidb-docker-compose。 麻烦就从这里开始了。这个方案暴露到本地的端口只有tidb、grafana的端口(4000、 9090、3000);pd、tikv的端口并没有暴露到本地。需要修改的地方有几处:

  • 为了保证容器内时间和宿主机时间一致,最好在每个"volumes"下添加"- /etc/localtime:/etc/localtime:ro"
  • 为容器pd0、pd1、pd2添加"ports"暴露端口号,由于我们要吧端口全部映射到本地所以三个pd节点使用不同的端口号。修改完的pd大概长这个样子
  pd1:
    image: pingcap/pd:latest
    ports:
      - "2378:2378"
    volumes:
      - ./config/pd.toml:/pd.toml:ro
      - ./data:/data
      - ./logs:/logs
      - /etc/localtime:/etc/localtime:ro
    command:
      - --name=pd1
      - --client-urls=http://0.0.0.0:2378
      - --peer-urls=http://0.0.0.0:2380
      - --advertise-client-urls=http://pd1:2378
      - --advertise-peer-urls=http://pd1:2380
      - --initial-cluster=pd0=http://pd0:2380,pd1=http://pd1:2380,pd2=http://pd2:2380
      - --data-dir=/data/pd1
      - --config=/pd.toml
      - --log-file=/logs/pd1.log
    restart: on-failure

暴露tikv的端口号,前面改了pd的端口应声,需要修改"command","- --pd=pd0:2379,pd1:2378,pd2:2377"

  tikv2:
    image: pingcap/tikv:latest
    ports:
      - "20162:20162"
 
    volumes:
      - ./config/tikv.toml:/tikv.toml:ro
      - ./data:/data
      - ./logs:/logs
      - /etc/localtime:/etc/localtime:ro
    command:
      - --addr=0.0.0.0:20162
      - --advertise-addr=tikv2:20162
      - --data-dir=/data/tikv2
      - --pd=pd0:2379,pd1:2378,pd2:2377
      - --config=/tikv.toml
      - --log-file=/logs/tikv2.log
    depends_on:
      - "pd0"
      - "pd1"
      - "pd2"
    restart: on-failure

修改好的docker-compose.yml在这里https://github.com/jiashiwen/usetikv/blob/master/docker-compose.yml,想省事儿的同学直接覆盖官方的docker-compse文件就可以了 最后修改一下本地/etc/hosts文件,pd及tikv都是通过hostname绑定的“advertise-client-urls”,不绑定hosts找不到pd和tikv的节点

127.0.0.1  pd0
127.0.0.1  pd1
127.0.0.1  pd2
127.0.0.1  tikv0
127.0.0.1  tikv1
127.0.0.1  tikv2

至此,环境搭建完毕,愉快的run demo吧。

2赞

看的懵懵懂懂,还得动手实践才能理清思路。

遇到坑才能成长,多交流

1赞