tikv开发环境非典型部署

tikv开发环境非典型部署

作为tidb的铁粉儿最近不满足于玩儿tidb,想着了解一下tikv。于是利用云厂商优势搞来几台虚机部署环境。tiup是个好工具,可以方便的部署环境,不过部署的环境只能通过内网访问,开发应用不大方便,于是琢磨着能不能建立一个环境通过公网直接访问方便开发。

实验过程描述

云环境,通过公网ip访问tikv集群

  • 环境表述

pd-server及tikv-server01 部署在一台vm之上;公网IP114.67.122.185;内网IP10.0.1.110

实验过程

  • client访问代码

cli, err := tikv.NewRawKVClient([]string{"114.67.122.185:2379"}, config.Security{})

if err != nil {

panic(err)

}

defer cli.Close()

fmt.Printf("cluster ID: %d\n", cli.ClusterID())

key := []byte("Company")

val := []byte("PingCAP")

// put key into tikv

err = cli.Put(key, val)

if err != nil {

panic(err)

}

fmt.Printf("Successfully put %s:%s to tikv\n", key, val)

// get key from tikv

val, err = cli.Get(key)

if err != nil {

panic(err)

}

fmt.Printf("found val: %s for key: %s\n", val, key)

// delete key from tikv

err = cli.Delete(key)

if err != nil {

panic(err)

}

fmt.Printf("key: %s deleted\n", key)

// get key again from tikv

val, err = cli.Get(key)

if err != nil {

panic(err)

}

fmt.Printf("found val: %s for key: %s\n", val, key)

  • pd以及tikv配置

bin/pd-server --name=pd-10.0.1.110-2379 --client-urls=http://0.0.0.0:2379 --advertise-client-urls=http://114.67.122.185:2379 --peer-urls=http://0.0.0.0:2380 --advertise-peer-urls=http://114.67.122.185:2380 --data-dir=/tidb-data/pd-2379 --initial-cluster=pd-10.0.1.110-2379=http://114.67.122.185:2380 --config=conf/pd.toml --log-file=/tidb-deploy/pd-2379/log/pd.log


bin/tikv-server --addr 0.0.0.0:20160 --advertise-addr 114.67.122.185:20160 --status-addr 114.67.122.185:20180 --pd 114.67.122.185:2379 --data-dir /tidb-data/tikv-20160 --config conf/tikv.toml --log-file /tidb-deploy/tikv-20160/log/tikv.log

tikv启动报错


[2020/06/08 16:04:40.681 +08:00] [FATAL] [server.rs:832] ["the maximum number of open file descriptors is too small, got 1024, expect greater or equal to 82920"]

解决上面报错有两种方式

  1. 临时就改方案,机器重启后失效

ulimit -n 1024000

  1. 固化修改

配置/etc/security/limits.conf文件,然后重启服务器


tidb soft nofile 82920

tidb hard nofile 82920

程序验证通过

安全方面考虑

最好有acl避免被黑

为啥不用tiup部署

tiup针对tidb整体方案进行了优化,会根据部署ip地址进行配置,且指定公网ip地址时部署失败,所以如果是部署生产环境且为内网访问使用tiup一定很香,但是部署开发环境且会根据场景配置pd以及tikv-server的参数手动部署更灵活

文后思考

其实全公网部署tikv即便是开发环境一样存在安全风险,最佳的部署方案应该有一个proxy层来作为跳板,上线时吧proxy改为pd地址即可,如果社区里有proxy方案还望不吝分享。

1赞