tiup mirror私有镜像搭建不生效问题汇总

【操作流程】

  1. 选取一台服务器创建/data/tiup-mirror目录,计划通过httpd服务暴露。
    chown tidb.apache /data/tiup-mirror
    chmod 755 /data/tiup-mirror
    
  2. 配置并启动httpd服务,监听端口3999,/data/tiup-mirror为server跟目录
  3. 切换tidb用户执行tiup mirror clone /data/tiup-mirror --full
  4. 全量镜像克隆完毕后到其他TiDB执行机进行镜像设置:
    tiup mirror set http://<镜像服务器地址>:3999
    

【问题】
执行tiup cluster相关指令遇到如下报错:

tiup is checking updates for component cluster ...timeout(2s)!
Error: unknown component

最初clone镜像时我是在后台夜间跑的不确定是否成功,早上来了重复执行了一遍clone发现只更新了新的4个tiup tar包,于是认为成功了。
首次在其他机器设置镜像后,最开始的报错是:

tiup is checking updates for component cluster ...timeout(2s)!
Error: read manifest from mirror(http://xxxx:3999) failed: invalid signature for file timestamp.json: not enough signatures (0) for threshold 1 in timestamp.json

于是再次clone了几次。
之后尝试把root.json先wget到本地,然后tiup mirror set http://xxxx:3999 -r /绝对路径/root.json才出现了以上报错,之后reset几次不指定root.json报错依旧。

https://github.com/pingcap/tiup/blob/041760dc4913d251287fb8578b879ba454f59515/pkg/repository/v1_repository_test.go#L82C4-L82C4

你可以尝试参考这段test代码,设置一个假的timestamp.json.这个过期时间都到2120年了。也许能解决这个验证的问题。 :joy:

可以参考下:

1 个赞

直接把目录拷贝过去,设置为稀有镜像地址测试下呢

:disguised_face:感谢各位回复,经过多次尝试发现了问题所在,目前的解决方式为:

1.在镜像机添加脚本进行快速clone全量更新:

#!/bin/sh
# 更新tiup镜像仓库,使本地镜像与官方镜像仓库保持一致
# 镜像服务器更新必须使用官方镜像,因此这里需要先进行reset,最后reset为本地镜像方便平时验证
tiup=/home/tidb/.tiup/bin/tiup
su - tidb -c "${tiup} mirror set --reset"
su - tidb -c "${tiup} mirror clone /data/tiup-mirror --os linux --arch amd64,arm64 --jobs 32 --full"
su - tidb -c "${tiup} mirror set /data/tiup-mirror"

2.在镜像机本地验证:
tiup list tidb
可以确认所有版本的tidb已列出。

3.其他机器使用私有镜像时必须:
3.1)wget http://xxx:3999/root.json -O /home/tidb/.tiup/root.json
3.2)tiup mirror set http://xxx:3999 -r /home/tidb/.tiup/root.json
上述root.json位置随意,我这里放在.tiup目录下。

4.镜像机定期使用步骤1的脚本来更新镜像

5.镜像机每更新一次镜像,使用者都需要跟进执行第3步中的两个命令(缺一不可)
目前看来全量clone会更新镜像服务器的root.json,导致使用者验证失败,但是不使用clone又更新不了镜像库(不加–full会导致产品信息被清空,即tiup list显示为空)。

我想通过共享root.json可以避免3.1的步骤,但是3.2不可避免,勉强的解决办法是镜像库保持低频更新,客户端保持略高频的mirror set…
希望未来版本有所优化。

2 个赞

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