V3.0.5 V4.0.9 都尝试过,稳定复现,用 tiup 导入集群后 node_exporter blackbox_exporter 目录全都不对了。

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】ansible 版本 V3.0.5 V4.0.9 都尝试过,稳定复现。

【问题描述】

使用 ansible 部署 V3.0.5 V4.0.9 后导入 tiup,然后,能正常

tiup cluster display test-cluster

一旦执行,reload

tiup cluster reload test-cluster

就出目录错误,没导入之前是好的,node_exporter blackbox_exporter 也是指定了单独的目录的。导入完成以后,目录全变成默认目录了。


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

  1. 请问导入前 ansible 的配置是什么?
  2. 麻烦 display 下 tiup 的结果,多谢。

1、 导入前的 ansible 配置

## TiDB Cluster Part
[tidb_servers]
tidb_104 ansible_connection=ssh ansible_host=10.10.10.104 deploy_dir=/data/tidb/deploy
tidb_105 ansible_connection=ssh ansible_host=10.10.10.105 deploy_dir=/data/tidb/deploy
tidb_106 ansible_connection=ssh ansible_host=10.10.10.106 deploy_dir=/data/tidb/deploy

[tikv_servers]
tikv_107 ansible_connection=ssh ansible_host=10.10.10.107 deploy_dir=/data/tidb/deploy
tikv_108 ansible_connection=ssh ansible_host=10.10.10.108 deploy_dir=/data/tidb/deploy
tikv_109 ansible_connection=ssh ansible_host=10.10.10.109 deploy_dir=/data/tidb/deploy

[pd_servers]
tipd_110 ansible_connection=ssh ansible_host=10.10.10.110 deploy_dir=/data/tidb/deploy
tipd_111 ansible_connection=ssh ansible_host=10.10.10.111 deploy_dir=/data/tidb/deploy
tipd_112 ansible_connection=ssh ansible_host=10.10.10.112 deploy_dir=/data/tidb/deploy

[spark_master]

[spark_slaves]

[lightning_server]

[importer_server]

## Monitoring Part
# prometheus and pushgateway servers
[monitoring_servers]
monitoring_servers_111 ansible_connection=ssh ansible_host=10.10.10.111 deploy_dir=/data/tidb/deploy

[grafana_servers]
grafana_servers_112 ansible_connection=ssh ansible_host=10.10.10.112 deploy_dir=/data/tidb/deploy

# node_exporter and blackbox_exporter servers
[monitored_servers]
exporter_blackbox104 ansible_connection=ssh ansible_host=10.10.10.104 deploy_dir=/data/tidb/deploy
exporter_blackbox_105 ansible_connection=ssh ansible_host=10.10.10.105 deploy_dir=/data/tidb/deploy
exporter_blackbox_106 ansible_connection=ssh ansible_host=10.10.10.106 deploy_dir=/data/tidb/deploy
exporter_blackbox_107 ansible_connection=ssh ansible_host=10.10.10.107 deploy_dir=/data/tidb/deploy
exporter_blackbox_108 ansible_connection=ssh ansible_host=10.10.10.108 deploy_dir=/data/tidb/deploy
exporter_blackbox_109 ansible_connection=ssh ansible_host=10.10.10.109 deploy_dir=/data/tidb/deploy
exporter_blackbox_110 ansible_connection=ssh ansible_host=10.10.10.110 deploy_dir=/data/tidb/deploy
exporter_blackbox_111 ansible_connection=ssh ansible_host=10.10.10.111 deploy_dir=/data/tidb/deploy
exporter_blackbox_112 ansible_connection=ssh ansible_host=10.10.10.112 deploy_dir=/data/tidb/deploy

[alertmanager_servers]
alertmanager_servers_110 ansible_connection=ssh ansible_host=10.10.10.110 deploy_dir=/data/tidb/deploy

[kafka_exporter_servers]

## Binlog Part
[pump_servers]

[drainer_servers]

## For TiFlash Part, please contact us for beta-testing and user manual
[tiflash_servers]

## Group variables
[pd_servers:vars]
# location_labels = ["zone","rack","host"]

## Global variables
[all:vars]
deploy_dir = /home/tidb/deploy

## Connection
# ssh via normal user
ansible_user = tidb

cluster_name = test-cluster

# CPU architecture: amd64, arm64
cpu_architecture = amd64

tidb_version = v3.0.5

# process supervision, [systemd, supervise]
process_supervision = systemd

timezone = Asia/Shanghai

enable_firewalld = False
# check NTP service
enable_ntpd = True
set_hostname = False

## binlog trigger
enable_binlog = False

# kafka cluster address for monitoring, example:
# kafka_addrs = "192.168.0.11:9092,192.168.0.12:9092,192.168.0.13:9092"
kafka_addrs = ""

# zookeeper address of kafka cluster for monitoring, example:
# zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"
zookeeper_addrs = ""

# enable TLS authentication in the TiDB cluster
enable_tls = False

# KV mode
deploy_without_tidb = False

# wait for region replication complete before start tidb-server.
wait_replication = True

# Optional: Set if you already have a alertmanager server.
# Format: alertmanager_host:alertmanager_port
alertmanager_target = ""

grafana_admin_user = "admin"
grafana_admin_password = "admin"


### Collect diagnosis
collect_log_recent_hours = 2

enable_bandwidth_limit = True
# default: 10Mb/s, unit: Kbit/s
collect_bandwidth_limit = 10000

2、导入后 能用 display

3、reload 后会出错,如上述错误,

麻烦您看下,/data/tidb/deploy 之前deploy 目录下 对应的 run.sh 文件有吗? 如果有的话,可以试试把 systemd 目录下的 service 文件中的 sh 文件 改为对应的目录,看看是否可行,多谢。

这个解决方法不科学,统一走的是 tiup 管理,我手工改,虽然是可以解决,但是还是希望 tiup 统一解决,我尝试过手工改,但是,改了后 reload 又给搞回去了。

所以,没意义,你说是不是呢?我在回复这个问题的时候,又一次全新部署后导入 tiup,又是上述的问题,确实是稳定复现。

问题已经很明确了,
其实导入之前设置的目录是 /data/tidb/deploy
导入之后 tiup reload 把目录改成了默认的目录了 /home/tidb/deploy/

image
有哪些会用到这个目录吗? 如果没有的话,把这里修改为使用的目录,应该就可以了。

解决问题的路子错了,
tiup 导入的时候,应该读取拓扑结构中的自定义的

deploy_dir=

所以,本质问题是,导入的时候读取错了,读成了[all:vars]下的deploy_dir 了,你可以看tiup 源码。

提交了一个 issue: https://github.com/pingcap/tiup/issues/1297

嗯,这是当前解决方法,具体原因是目前不会读取这里的配置,已经提交上面的 PR 修改。多谢。