暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 TiUP 部署 TiDB 集群及 TiFlash–Part.1

李敏 2020-04-20
2645

在 TiDB 集群的部署中,除了推荐的 Ansible 方式之外,PingCAP 近期推出了一款全新的部署工具–TiUP。

官方介绍:https://pingcap.com/docs-cn/stable/how-to/deploy/orchestrated/tiup/

本次测试单机单实例(单个节点只运行一个 TiDB 或者 TiKV 实例)下 TiUP 部署 TiDB 集群及 TiFlash。

使用到的主机如下:

所使用的 topology.yaml 文件的内容如下,请根据实际环境修改:

# # Global variables are applied to all deployments and as the default value of # # them if the specific deployment value missing. global: user: "tidb" ssh_port: 22 deploy_dir: "/home/tidb/deploy" data_dir: "/data1" # # Monitored variables are used to all the machine monitored: node_exporter_port: 9100 blackbox_exporter_port: 9115 # deploy_dir: "/home/tidb/deploy/monitored-9100" # data_dir: "/data1/monitored-9100" # log_dir: "/home/tidb/deploy/monitored-9100/log" # # Server configs are used to specify the runtime configuration of TiDB components # # All configuration items can be found in TiDB docs: # # - TiDB: https://pingcap.com/docs/stable/reference/configuration/tidb-server/configuration-file/ # # - TiKV: https://pingcap.com/docs/stable/reference/configuration/tikv-server/configuration-file/ # # - PD: https://pingcap.com/docs/stable/reference/configuration/pd-server/configuration-file/ # # All configuration items use points to represent the hierarchy, e.g: # # readpool.storage.use-unified-pool # # ^ ^ # # You can overwrite this configuration via instance-level `config` field server_configs: tidb: log.slow-threshold: 300 binlog.enable: false binlog.ignore-error: false tikv: # server.grpc-concurrency: 4 # raftstore.apply-pool-size: 2 # raftstore.store-pool-size: 2 # rocksdb.max-sub-compactions: 1 # storage.block-cache.capacity: "16GB" # readpool.unified.max-thread-count: 12 readpool.storage.use-unified-pool: true readpool.coprocessor.use-unified-pool: true pd: schedule.leader-schedule-limit: 4 schedule.region-schedule-limit: 2048 schedule.replica-schedule-limit: 64 replication.enable-placement-rules: true tiflash: logger.level: "info" # pump: # gc: 7 pd_servers: - host: 192.168.10.1 # ssh_port: 22 # name: "pd-1" # client_port: 2379 # peer_port: 2380 # deploy_dir: "/home/tidb/deploy/pd-2379" # data_dir: "/data1/pd-2379" # log_dir: "/home/tidb/deploy/pd-2379/log" # numa_node: "0,1" # # Config is used to overwrite the `server_configs.pd` values # config: # schedule.max-merge-region-size: 20 # schedule.max-merge-region-keys: 200000 - host: 192.168.10.2 - host: 192.168.10.3 tidb_servers: - host: 192.168.10.1 # ssh_port: 22 # port: 4000 # status_port: 10080 # deploy_dir: "/home/tidb/deploy/tidb-4000" # log_dir: "/home/tidb/deploy/tidb-4000/log" # numa_node: "0,1" # # Config is used to overwrite the `server_configs.tidb` values # config: # log.slow-query-file: tidb-slow-overwrited.log - host: 192.168.10.2 - host: 192.168.10.3 tikv_servers: - host: 192.168.10.4 # ssh_port: 22 # port: 20160 # status_port: 20180 # deploy_dir: "/home/tidb/deploy/tikv-20160" # data_dir: "/data1/tikv-20160" # log_dir: "/home/tidb/deploy/tikv-20160/log" # numa_node: "0,1" # # Config is used to overwrite the `server_configs.tikv` values # config: # server.grpc-concurrency: 4 # server.labels: { zone: "zone1", dc: "dc1", host: "host1" } - host: 192.168.10.5 - host: 192.168.10.6 tiflash_servers: - host: 192.168.10.7 # ssh_port: 22 # tcp_port: 9000 # http_port: 8123 # flash_service_port: 3930 # flash_proxy_port: 20170 # flash_proxy_status_port: 20292 # metrics_port: 8234 # deploy_dir: /home/tidb/deploy/tiflash-9000 # data_dir: /data1/tiflash-9000 # log_dir: /home/tidb/deploy/tiflash-9000/log # numa_node: "0,1" # # Config is used to overwrite the `server_configs.tiflash` values # config: # logger.level: "info" # learner_config: # log-level: "info" # - host: 192.168.10.15 # - host: 192.168.10.16 # pump_servers: # - host: 192.168.10.17 # ssh_port: 22 # port: 8250 # deploy_dir: "/home/tidb/deploy/pump-8249" # data_dir: "/data1/pump-8249" # log_dir: "/home/tidb/deploy/pump-8249/log" # numa_node: "0,1" # # Config is used to overwrite the `server_configs.drainer` values # config: # gc: 7 # - host: 192.168.10.18 # - host: 192.168.10.19 # drainer_servers: # - host: 192.168.10.17 # port: 8249 # data_dir: "/data1/drainer-8249" # # if drainer doesn't have checkpoint, use initial commitTS to initial checkpoint # # will get a latest timestamp from pd if setting to be -1 (default -1) # commit_ts: -1 # deploy_dir: "/home/tidb/deploy/drainer-8249" # log_dir: "/home/tidb/deploy/drainer-8249/log" # numa_node: "0,1" # # Config is used to overwrite the `server_configs.drainer` values # config: # syncer.db-type: "mysql" # syncer.to.host: "127.0.0.1" # syncer.to.user: "root" # syncer.to.password: "" # syncer.to.port: 3306 # - host: 192.168.10.19 monitoring_servers: - host: 192.168.10.3 # ssh_port: 22 # port: 9090 # deploy_dir: "/home/tidb/deploy/prometheus-8249" # data_dir: "/data1/prometheus-8249" # log_dir: "/home/tidb/deploy/prometheus-8249/log" grafana_servers: - host: 192.168.10.3 # port: 3000 # deploy_dir: /home/tidb/deploy/grafana-3000 alertmanager_servers: - host: 192.168.10.3 # ssh_port: 22 # web_port: 9093 # cluster_port: 9094 # deploy_dir: "/home/tidb/deploy/alertmanager-9093" # data_dir: "/data1/alertmanager-9093" # log_dir: "/home/tidb/deploy/alertmanager-9093/log"

此时即可开始在 TiUP 节点上进行部署了:

tiup cluster deploy tidb-test v4.0.0-rc ./topology.yaml --user root

部署开始前会根据 yaml 文件,生成当前的拓扑图,供 DBA 检查和修改:

输入节点的 root 密码之后,就可以开始部署了,日志如下:

Attention: 1. If the topology is not what you expected, check your yaml file. 2. Please confirm there is no port/directory conflicts in same host. Do you want to continue? [y/N]: y Input SSH password: + Generate SSH keys ... Done + Download TiDB components - Download pd:v4.0.0-rc ... Done - Download tikv:v4.0.0-rc ... Done - Download tidb:v4.0.0-rc ... Done - Download tiflash:v4.0.0-rc ... Done - Download prometheus:v4.0.0-rc ... Done - Download grafana:v4.0.0-rc ... Done - Download alertmanager:v0.17.0 ... Done - Download node_exporter:v0.17.0 ... Done - Download blackbox_exporter:v0.12.0 ... Done + Initialize target host environments - Prepare 192.168.10.1:22 ... Done - Prepare 192.168.10.2:22 ... Done - Prepare 192.168.10.3:22 ... Done - Prepare 192.168.10.4:22 ... Done - Prepare 192.168.10.5:22 ... Done - Prepare 192.168.10.6:22 ... Done - Prepare 192.168.10.7:22 ... Done + Copy files - Copy pd -> 192.168.10.1 ... Done - Copy pd -> 192.168.10.2 ... Done - Copy pd -> 192.168.10.3 ... Done - Copy tikv -> 192.168.10.4 ... Done - Copy tikv -> 192.168.10.5 ... Done - Copy tikv -> 192.168.10.6 ... Done - Copy tidb -> 192.168.10.1 ... Done - Copy tidb -> 192.168.10.2 ... Done - Copy tidb -> 192.168.10.3 ... Done - Copy tiflash -> 192.168.10.7 ... Done - Copy prometheus -> 192.168.10.3 ... Done - Copy grafana -> 192.168.10.3 ... Done - Copy alertmanager -> 192.168.10.3 ... Done - Copy node_exporter -> 192.168.10.4 ... Done - Copy node_exporter -> 192.168.10.5 ... Done - Copy node_exporter -> 192.168.10.6 ... Done - Copy node_exporter -> 192.168.10.7 ... Done - Copy node_exporter -> 192.168.10.1 ... Done - Copy node_exporter -> 192.168.10.2 ... Done - Copy node_exporter -> 192.168.10.3 ... Done - Copy blackbox_exporter -> 192.168.10.4 ... Done - Copy blackbox_exporter -> 192.168.10.5 ... Done - Copy blackbox_exporter -> 192.168.10.6 ... Done - Copy blackbox_exporter -> 192.168.10.7 ... Done - Copy blackbox_exporter -> 192.168.10.1 ... Done - Copy blackbox_exporter -> 192.168.10.2 ... Done - Copy blackbox_exporter -> 192.168.10.3 ... Done Deployed cluster `tidb-test` successfully, you can start the cluster via `tiup cluster start tidb-test`

可以看到部署肥肠的方便。随后,启动整个集群:

tiup cluster start tidb-test

启动日志如下:

[tidb@tidb1pd1 ~]$ tiup cluster start tidb-test Starting component `cluster`: /home/tidb/.tiup/components/cluster/v0.4.9/cluster start tidb-test Starting cluster tidb-test... + [ Serial ] - SSHKeySet: privateKey=/home/tidb/.tiup/storage/cluster/clusters/tidb-test/ssh/id_rsa, publicKey=/home/tidb/.tiup/storage/cluster/clusters/tidb-test/ssh/id_rsa.pub + [Parallel] - UserSSH: user=tidb, host=192.168.10.3 + [Parallel] - UserSSH: user=tidb, host=192.168.10.1 + [Parallel] - UserSSH: user=tidb, host=192.168.10.2 + [Parallel] - UserSSH: user=tidb, host=192.168.10.6 + [Parallel] - UserSSH: user=tidb, host=192.168.10.3 + [Parallel] - UserSSH: user=tidb, host=192.168.10.3 + [Parallel] - UserSSH: user=tidb, host=192.168.10.4 + [Parallel] - UserSSH: user=tidb, host=192.168.10.7 + [Parallel] - UserSSH: user=tidb, host=192.168.10.3 + [Parallel] - UserSSH: user=tidb, host=192.168.10.5 + [Parallel] - UserSSH: user=tidb, host=192.168.10.2 + [Parallel] - UserSSH: user=tidb, host=192.168.10.3 + [Parallel] - UserSSH: user=tidb, host=192.168.10.1 + [ Serial ] - ClusterOperate: operation=StartOperation, options={Roles:[] Nodes:[] Force:false Timeout:0} Starting component pd Starting instance pd 192.168.10.2:2379 Starting instance pd 192.168.10.3:2379 Starting instance pd 192.168.10.1:2379 Start pd 192.168.10.3:2379 success Start pd 192.168.10.1:2379 success Start pd 192.168.10.2:2379 success Starting component node_exporter Starting instance 192.168.10.1 Start 192.168.10.1 success Starting component blackbox_exporter Starting instance 192.168.10.1 Start 192.168.10.1 success Starting component node_exporter Starting instance 192.168.10.2 Start 192.168.10.2 success Starting component blackbox_exporter Starting instance 192.168.10.2 Start 192.168.10.2 success Starting component node_exporter Starting instance 192.168.10.3 Start 192.168.10.3 success Starting component blackbox_exporter Starting instance 192.168.10.3 Start 192.168.10.3 success Starting component tikv Starting instance tikv 192.168.10.6:20160 Starting instance tikv 192.168.10.5:20160 Starting instance tikv 192.168.10.4:20160 Start tikv 192.168.10.4:20160 success Start tikv 192.168.10.5:20160 success Start tikv 192.168.10.6:20160 success Starting component node_exporter Starting instance 192.168.10.4 Start 192.168.10.4 success Starting component blackbox_exporter Starting instance 192.168.10.4 Start 192.168.10.4 success Starting component node_exporter Starting instance 192.168.10.5 Start 192.168.10.5 success Starting component blackbox_exporter Starting instance 192.168.10.5 Start 192.168.10.5 success Starting component node_exporter Starting instance 192.168.10.6 Start 192.168.10.6 success Starting component blackbox_exporter Starting instance 192.168.10.6 Start 192.168.10.6 success Starting component tidb Starting instance tidb 192.168.10.3:4000 Starting instance tidb 192.168.10.1:4000 Starting instance tidb 192.168.10.2:4000 Start tidb 192.168.10.3:4000 success Start tidb 192.168.10.2:4000 success Start tidb 192.168.10.1:4000 success Starting component tiflash Starting instance tiflash 192.168.10.7:9000 Start tiflash 192.168.10.7:9000 success Starting component node_exporter Starting instance 192.168.10.7 Start 192.168.10.7 success Starting component blackbox_exporter Starting instance 192.168.10.7 Start 192.168.10.7 success Starting component prometheus Starting instance prometheus 192.168.10.3:9090 Start prometheus 192.168.10.3:9090 success Starting component grafana Starting instance grafana 192.168.10.3:3000 Start grafana 192.168.10.3:3000 success Starting component alertmanager Starting instance alertmanager 192.168.10.3:9093 Start alertmanager 192.168.10.3:9093 success Checking service state of pd 192.168.10.2 Active: active (running) since Mon 2020-04-20 10:36:12 CST; 52s ago 192.168.10.1 Active: active (running) since Mon 2020-04-20 10:36:13 CST; 52s ago 192.168.10.3 Active: active (running) since Mon 2020-04-20 10:36:12 CST; 52s ago Checking service state of tikv 192.168.10.5 Active: active (running) since Mon 2020-04-20 10:36:24 CST; 41s ago 192.168.10.4 Active: active (running) since Mon 2020-04-20 10:36:23 CST; 41s ago 192.168.10.6 Active: active (running) since Mon 2020-04-20 10:36:23 CST; 41s ago Checking service state of tidb 192.168.10.1 Active: active (running) since Mon 2020-04-20 10:36:40 CST; 27s ago 192.168.10.2 Active: active (running) since Mon 2020-04-20 10:36:39 CST; 27s ago 192.168.10.3 Active: active (running) since Mon 2020-04-20 10:36:38 CST; 28s ago Checking service state of tiflash 192.168.10.7 Active: active (running) since Mon 2020-04-20 10:36:49 CST; 19s ago Checking service state of prometheus 192.168.10.3 Active: active (running) since Mon 2020-04-20 10:36:54 CST; 13s ago Checking service state of grafana 192.168.10.3 Active: active (running) since Mon 2020-04-20 10:36:56 CST; 13s ago Checking service state of alertmanager 192.168.10.3 Active: active (running) since Mon 2020-04-20 10:37:02 CST; 8s ago Started cluster `tidb-test` successfully

可以看到节点逐个启动了。TiUP 提供了 ansible 所不具有的查看集群状态的方式:

tiup cluster display tidb-test

集群各节点状态
详细的显示了 IP,节点角色,端口,资源状态,数据目录,部署目录等等详细信息,非常有用。

下篇将使用 TiUP 搭建单机多实例集群。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论