目标:搭建一个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,先后执行以下命令:
- ./deploy.sh mount(格式化远程机的ssd,并mount到/data目录)
- ./deploy.sh copy(拷贝binary package包括自添加的conf/到远程机)
- ./deploy.sh start(先后启动pd-server和3台tikv-server)
当看到以下server状态时,表明tikv集群成功建立
![](https://img.haomeiwen.com/i1071648/9b4c71453a63fbe9.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测试了。
网友评论