TiKV集群及监控系统搭建

目标:搭建一个3节点的tikv集群,以及监控系统

根据官方推荐的软件和硬件配置要求,我选择了4台相同的物理机作为server node,还有另外几台作为监控和测试用。

ip role hardware
10.16.148.72 pd v3.0.0-beta-18-g9531e19 48core, 200g mem, ssd 900g
10.16.148.73 tikv 3.0.0-beta-5cb9ac9b0fd 同上
10.16.148.74 同上 同上
10.16.148.75 同上 同上
10.110.27.6 pushgateway 4cores
10.15.130.3 prometheus 2.2, grafana 5.3 24cores
10.110.36.144 go-ycsb client 24cores

由于对ansible不熟,又不可在单机上用docker-compose跑一个环境(容器内的profiling貌似有所限制,不过它是未来云数据库的一个重点),所以当前比较方便的方式是下载binary pacakges,命令行启动。但奇怪的是,binary包里只有bin文件夹,却没有conf,然而tikv-server命令行下是可接-C选项指定配置文件的。如果要反复地调一些参数,显然命令行下给选项是不方便的。所以暂从docker-compose repo config/tikv.toml下取一份配置文件过来。

注意事项

  • os version >= centos7.2(这里默认是centos),磁盘需为SSD,且是ext4系统(xfs有kernel bug,不推荐使用)
  • 如启动命令行所示,但加上配置文件,各配置文件模板在这儿,tikv参数含义中文解释
  • 注意各node上设置了https_proxy/http_proxy带来的副作用,可能连不上
    有一次在单机上启动tikv-server时,我的系统默认是设置了export https_proxy=http://10.10.15.2:3128,没想到tikv-server识别到它,报错不能启动了。显然pd-endpoint 127.0.0.1:2379无法由10.10.15.2:3128所reach

[2019/03/13 10:59:52.985 +08:00] [INFO] [unknown:300] ["Connecting to server 127.0.0.1:2379 via HTTP proxy ipv4:10.10.15.2:3128"]

最后,为了方便在控制机上(control machine)操作多台server,写了个脚本deploy.sh,后续测试会大量用到,实现基本的start,stop,clean,生成火焰图等操作

部署tikv,pd,prometheus,grafana等多系统

经尝试发现pd server 10.16.148.72:2379/metrics端口通过http暴露了metrics,而tikv server的l127.0.0.1:20180/metrics暴露了metrics,可问题是它只是localhost,无法由prometheus来抓取(严格讲,是不能通过外部的prometheus来抓取,但若在相同的tikv节点上安装prometheus,再让prometheus把metrics发给grafana,这可行)。这一点在tikv #6811得到验证。看来只好用docker部署个pushgateway了(不过既然是server,pull是不是要比push好些?

搭建pd-server, tikv-server

利用自定义脚本deploy.sh,先后执行以下命令:

  1. ./deploy.sh mount(格式化远程机的ssd,并mount到/data目录)
  2. ./deploy.sh copy(拷贝binary package包括自添加的conf/到远程机)
  3. ./deploy.sh start(先后启动pd-server和3台tikv-server)

当看到以下server状态时,表明tikv集群成功建立


TiKV集群及监控系统搭建_第1张图片
image.png
  • ./deploy.sh stop
    停止所有实例,重新启动前可考虑是否清除所有数据和日志
  • ./deploy.sh status/tail
    查看进程状态,打开的网络端口和日志等等
  • ./deploy perf [id] [seconds]
    对某台server作给定时间的perf record,生成火焰图,并用httpd支持查看svg文件

搭建pushgateway, prometheus,grafana监控

pushgateway用docker镜像启动,暴露9091端口;按照常见的prometheus,grafana安装说明,在prometheus.yml中加入pushgateway地址,配置项honor_labels=true; grafana中加入prometheus数据源;

为节省时间,就不自己慢慢搭面板了,于是去找有没有现成的,可以导入官方的tikv.json;面板参数解释,太丰富了(随着版本迭代有些metrics也过时了),确认一时半会研究不完[phew..]

安装部署至此。之后就是采用相关客户端如sysbench, go-ycsb测试了。

你可能感兴趣的:(TiKV集群及监控系统搭建)