如何在线的将本地node_exporter组件从在线的v0.17.0升级到v1.3.1版本(prometheus已经有该版本,但是pingcap只出了0.17.0版本)

【 TiDB 使用环境`】测试环境本地镜像源
【 TiDB 版本】v5.4.0
【遇到的问题】
1/如何在线的将本地node_exporter组件从在线的v0.17.0升级到v1.3.1版本(prometheus已经有该版本,但是pingcap只出了0.17.0版本)
2/start部署好的集群时,分发到其他节点的组件的可执行文件,是从管理机的哪个地方复制分发的
【复现路径】
本地镜像源有两个node_exporter版本的组件,v0.17.0(tidb官方发布的最高版本)和v1.3.1(我从prometheus官方自己下载的版本)。
我第一次部署集群,该组件安装的是v1.3.1版本,然后我destroy该集群,将镜像源里面v1.3.1版本的node_exporter.gz包删除掉,再将.tiup/components下node_exporter组件的v1.3.1版本的目录直接删除掉。
用tiup list node_exporter检查了一下可用版本,也确实只有v0.17.0版本可用。
然后我重新部署了集群,去其他节点检查启动的node_exporter,发现启动的v1.3.1的版本。
检查其他节点的node_exporter可执行文件,发现也确实是v1.3.1版本。
所以问下:这个1.3.1版本的node_exporter可执行文件是哪来的?
【问题现象及影响】

  1. 各节点从哪个地方分发? → 从 community-server 包中分发;

  2. 这个1.3.1版本的node_exporter可执行文件是哪来的? → 本地镜像操作过程中做过哪些操作,可能跟本地镜像源有关,麻烦提供下复现操作步骤。

v1.3.1版本是prometheus官网github上下载的,通过publish发布到了本地镜像源

1 个赞

发布到镜像源之后,我可以部署的时候用1.3.1版本部署,没有问题,但是现在在线环境下为她升级到1.3.1就不行,我这边怀疑,因为node_exporter严格上不属于cluster组件,所以不能用update升级。

一、复现

下述步骤 mirror-szp 及 mirror-tidb-community-server-v6.0.0-linux-amd64 确实可以复现你说的问题,直接部署可以,update 不可以(单纯留步骤,废话忽略):

tiup mirror init /home/tidb/szp
tiup mirror set /home/tidb/szp
tiup mirror grant jan
tiup mirror publish node_exporter v1.3.1 ../node_exporter-v1.3.1.linux-amd64.tar.gz node_exporter-v1.3.1.linux-amd64/node_exporter
tiup mirror clone tidb-community-server-v6.0.0-linux-amd64 v6.0.0 --os=linux --arch=amd64 
tiup mirror set /home/tidb/tidb-community-server-v6.0.0-linux-amd64/
cp -rp /home/tidb/tidb-community-server-v6.0.0-linux-amd64/keys /home/tidb/.tiup/
tiup mirror merge ./szp/

二、解答

  1. 分发到其他节点的组件的可执行文件,是从管理机的哪个地方复制分发的?
    /home/tidb/.tiup/storage/cluster/packages

  2. 如何在线的将本地node_exporter组件从在线的v0.17.0升级到v1.3.1版本?

[tidb@BJ-AZ1-155 ~]$ tiup mirror set /home/tidb/tidb-community-server-v6.0.0-linux-amd64/
Successfully set mirror to /home/tidb/tidb-community-server-v6.0.0-linux-amd64

[tidb@BJ-AZ1-155 ~]$ tiup list node_exporter
Available versions for node_exporter:
Version  Installed  Release                    Platforms
-------  ---------  -------                    ---------
v0.17.0  YES        2020-05-28T18:36:38+08:00  linux/amd64
v1.3.1              2022-06-08T16:33:33+08:00  linux/amd64

[tidb@BJ-AZ1-155 ~]$ tiup install node_exporter
Error: resource /node_exporter-v1.3.1-linux-amd64.tar.gz: not found

[tidb@BJ-AZ1-155 ~]$ tiup mirror set /home/tidb/szp
Successfully set mirror to /home/tidb/szp

[tidb@BJ-AZ1-155 ~]$ tiup install node_exporter
[tidb@BJ-AZ1-155 ~]$ tiup list node_exporter
Available versions for node_exporter:
Version  Installed  Release                    Platforms
-------  ---------  -------                    ---------
v1.3.1   YES        2022-06-08T17:29:34+08:00  linux/amd64

[tidb@BJ-AZ1-155 ~]$ tiup update node_exporter
component node_exporter version v1.3.1 is already installed
Updated successfully!
  1. 如何在线环境下为她升级到1.3.1?
    可是就算更新了 v1.3.1 也没什么用,因为不会分发在已 start 的集群分发到各个节点;即使走 patch 绕过,也不行,如你所说(报错所示),node_exporter 不属于 tidb-cluster 组件( [pd tikv pump tidb tiflash drainer cdc prometheus grafana alertmanager tispark-master tispark-worker])。其实单纯 update tidb 也不会分发到各个节点,只是本地更新了。
[tidb@BJ-AZ1-155 ~]$ tiup cluster patch tidb-test node_exporter-v1.3.1.linux-amd64.tar.gz -R node_exporter
tiup is checking updates for component cluster ...
Starting component `cluster`: /home/tidb/.tiup/components/cluster/v1.9.6/tiup-cluster /home/tidb/.tiup/components/cluster/v1.9.6/tiup-cluster patch tidb-test node_exporter-v1.3.1.linux-amd64.tar.gz -R node_exporter

Error: not valid role: node_exporter, should be one of: [pd tikv pump tidb tiflash drainer cdc prometheus grafana alertmanager tispark-master tispark-worker]
3 个赞

感谢兄弟付出时间进行测试。
你的结论其实和我测试的测试结果基本一致。
而且我还发现还有一点,只要本地镜像源部署过一次集群,后面铲掉集群,再重新部署每次他也会去加载第一次部署的node_exporter组件版本,应该是。tiup被污染了,删掉本地镜像源和.tiup后,能重新第一次部署其他版本。

1 个赞

其实把镜像地址切换到 官方地址 https://tiup-mirrors.pingcap.com 应该是可以部署 v0.17.0 的 exporter 的。

嗯嗯,不够生产都是离线环境。然后现在我做了一个直接分发可执行文件去替换各节点的操作,然后kill掉各节点node进程,进程自动恢复后就是高版本,这种方式可以搞在线升级

你在其他节点ps -ef | grep node 一下就懂了

嗯嗯,这种也可以绕过,去本地改。可以提个 issue,让官方在这块加个 “分发” 和 “回退” 功能。
但是回退的话,可能比较复杂,因为有的组件是不支持回退的,比如:tikv。

大佬,tql

关于这个升级的问题,后面有了解决方案,我写了一篇文章,包含解决在线升级以及更多的相关方案
专栏 - 升级解决node_exporter组件panic的漫漫探索之路 | TiDB 社区

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。