关于location_labels的配置问题

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.5
  • 【问题描述】:tidb集群是通过ansible安装的,然后我弄了个tiup的离线包(里面也是4.0.5的tidb),我把集群导入到tiup进行管理。执行tiup cluster display cluster-name时,提示信息如下:

multiple TiKV instances are deployed at the same host but location label missing

ansible安装时,inventory.ini里面:
location_labels 配置为:[“zone",“rack”,“host”]
TiKV是单机多实例,
TiKV实例的 label配置为:labels=“host=tikv1”,
这种配置有问题吗?

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

tiup 中关于 label 的配置可以参考一下配置模板
https://github.com/pingcap/tiup/blob/master/examples/topology.example.yaml#L117

我的tidb之前通过ansible装的,然后现在tiup接管了,并没有tiup安装配置的topology文件;
现在我遇到这个问题,我想请问下,该怎么改,以便不让tiup display提示tikv的label标签丢失错。
当然,我的疑问主要是我ansible都配了的,为什么tiup接管后,提示错误,我该怎么处理。

通过 tiup cluster edit-config {clusgter-name} 进入 topology 修改

因为单机多实例部署情况下,如果没有设置 label ,当一台服务器宕机时,容易导致单个 region 的多数副本丢失,导致 region 无法正常提供服务。所以在 tiup 中目前加了关于单机多实例部署的 label 检测,之前 ansiable 是没有检测的

1 个赞

我在单机多实例的inventory.ini里面配了:labels=“host=tikv1”,
这个是不是有啥问题,:grinning:

方便提供一下完整的 inventory.ini 配置文件以及 import 之后 tiup edit-config 的结果么
可能是 tiup import ansible 的时候没有读取到 label 的配置,这个需要具体看下

目前情况先手动通过 tiup edit-config 再配置一下吧

label_inventory_ini%E9%85%8D%E7%BD%AE2

然后tiup edit-config ,我截取tikv节点的信息吧,的确没配置,但是我是从ansible导过来的,不知道为什么丢掉了;

27

目前的话 tiup 从 ansible import 生成 tiup 配置文件的时候是没有解析 inventory.ini 中的 label 设置并生成到新的 tiup 配置文件的。
但是这个不会导致之前打的 label 丢失,tiup 还是继承了原配置,tiup 是有拷贝原配置文件再分发的,只是 tiup edit-config 的配置文件中没有显示 label 的设置。

目前的解决方案就是:执行 tiup cluster edit-config 把目前的 label 配置上去

关于 import 的时候没有处理 label 标签这个我会去 github 提个 issue ,让 PingCAP 看能不能处理一下

1 个赞

11
36

我想请教下,我这么配置有问题吗?报错的时候说类型不符合。。

18

可以参考一下配置模板中关于 label 的配置:
https://github.com/pingcap/tiup/blob/master/examples/topology.example.yaml#L117

之前在安装时遇到过类似问题,最后是把server_configs/pd/replication.location-labels与tikv_servers/server.labels的值设置的维度一样才解决,就是其中一个的值如果只有host那么另一个也只写host。
预感之后把ansible部署的整合到tiup时还会遇到这个问题,我mark一下

您好!
现在我的配置是可以保存了,但是tiup cluster display ${cluster_name}的时候报以下内容:
25

edit-config的信息如下:
33

我设置的label: {host:“tikv2”}

请问这个怎么处理,谢谢~

tikv_servers:
  - host: 10.0.1.14
    config:
        server.labels: { host: "tikv" }

这样设置,注意一下格式,比如空格这些, yaml 对于格式是强要求

可以了,感谢

:handshake::handshake::handshake: