写点什么

TiDB 在 X86 和 ARM 混合平台下的离线部署和升级

  • 2022 年 7 月 11 日
  • 本文字数:3838 字

    阅读完需:约 13 分钟

作者: hey-hoho 原文来源:https://tidb.net/blog/e92230a3


【是否原创】是


【首发渠道】TiDB 社区

背景

在之前我们团队发布了 TiDB 基于 X86 和 ARM 混合部署架构的文章:TiDB 5.0 异步事务特性体验——基于 X86 和 ARM 混合部署架构,最近有朋友问到离线模式下如何对混合部署的 TiDB 集群进行升级,因此用本文来做一个梳理总结。

部署的本质

TiDB 从 4.0 版本开始推出了自己的集群运维和包管理工具 TiUP,这个工具的诞生极大地降低了上手 TiDB 的门槛,简简单单几行命令就能拉起一个复杂的 TiDB 集群,而且 TiDB 生态下的众多组件也可以通过 TiUP 来管理,相比 TiDB-Ansible 时代,可以说是从火车进化到了高铁。


那么熟悉使用 TiUP 部署 TiBD 的朋友一定会对以下两条命令印象深刻。


第一个就是tiup cluster deploy,如果稍微仔细观察一下这个命令输出的日志,就能发现它主要做了这几件事。首先就是根据部署拓扑文件的内容做节点 ssh 互信,接着开始下载需要用的 TiDB 组件的资源包(在线模式下),然后在各节点上初始化环境(比如创建部署用户以及授权等),再把资源包按节点角色依次分发下去。到这里部署工作基本准备就绪了,只待点火发射。


这里对部署 TiDB 涉及到的几个用户推荐大家认真读一下社区里 @buptzhoutian 的文章《TiUP cluster 用到的三个账户》,受益匪浅。


第二个就是tiup cluster start,这个命令会让各节点运行组件的二进制文件,通过一些参数把组件关联到一起,各组件的启动顺序是 PD->TiKV->TiDB-> 监控。以 PD 组件和 TiDB 组件的启动命令为例(仅做参考):


## 启动PD./pd-server --name=pd1 --data-dir=pd1 --client-urls="http://pdhost:2379" --peer-urls="http://host:2380" -L "info" --log-file=pd.log
## 启动TiDB./tidb-server --store=tikv --path="pdhost:2379" --log-file=tidb.log
复制代码


如果尝试过使用编译源码方式启动 TiDB 的朋友应该会比较熟悉。


到这里,各组件的进程已经成功在操作系统中运行起来了。


TiUP 的镜像

前面提到了deploy命令会去下载资源包,那这些资源包是从哪里下载的呢?


TiUP 提供了镜像管理机制,TiDB 的所有组件都从镜像仓库下载,它默认的镜像源是 https://tiup-mirrors.pingcap.com。官方镜像源提供了 TiDB 生态下所有组件、所有版本、所有支持平台的资源文件,比如我们可以使用tiup list tidb查看镜像源支持的所有 TiDB 组件详细情况。


[root@localhost ~]# tiup list tidbAvailable versions for tidb:Version                             Installed  Release                              Platforms-------                             ---------  -------                              ---------nightly -> v5.0.0-nightly-20210829             2021-08-29T21:28:54+08:00            darwin/amd64,darwin/arm64,linux/amd64,linux/arm64........v4.0.14                                        2021-07-27T18:08:31+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.0-20210329                                2021-03-29T19:45:19+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.0-20210403                                2021-04-03T09:13:36+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.0-20210408                                2021-04-08T17:02:41+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.0-nightly-20210829                        2021-08-29T21:28:54+08:00            darwin/amd64,darwin/arm64,linux/amd64,linux/arm64v5.0.0-rc                                      2021-01-12T23:40:27+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.0                                         2021-04-07T17:30:00+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.1                                         2021-04-24T21:31:28+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.2                                         2021-06-09T22:49:33+08:00            darwin/amd64,linux/amd64,linux/arm64v5.0.3                                         2021-07-02T16:13:22+08:00            darwin/amd64,linux/amd64,linux/arm64v5.1.0                                         2021-06-24T16:23:50+08:00            darwin/amd64,linux/amd64,linux/arm64v5.1.1                                         2021-07-30T15:59:38+08:00            darwin/amd64,darwin/arm64,linux/amd64,linux/arm64v5.2.0                                         2021-08-27T18:40:58+08:00            darwin/amd64,darwin/arm64,linux/amd64,linux/arm64
复制代码


但是一般来说,生产环境的服务器是网络隔离环境,不允许直接从外网下载任何东西,针对这种场景 TiUP 也支持本地镜像模式,这部分的介绍可以参考官方文档:



那么很明显,如果要基于 TiUP 实现离线部署 TiDB,那么最重要的就是搭建一个私有镜像源

搭建私有镜像源

官方文档的每个版本都介绍了离线部署的步骤,这里不再重复。


但是文档描述的都是默认在 X86 平台下的部署过程,官网下载页面的离线包也是 X86 的,那么用这种方式去做混合平台部署显然行不通,ARM 的资源包上哪去找?。


我们稍加观察会发现,按照官网的离线部署方式安装完 TiUP 后,它的镜像源实际上是指向了这个资源包的目录:


[root@localhost ~]# tiup mirror show/root/tidb-community-server-v5.1.0-linux-amd64
复制代码


这意味着如果我在这个目录里放了两个平台的资源文件,执行deploy的时候就不会找不到文件了


那么是不是简单地下载一份 ARM 平台的资源包放进去就完事呢?肯定是不行的,因为 TiUP 有一套自己的校验机制确保镜像安全可靠,对镜像管理有严格的流程。


从官网文档可以得知,TiUP 提供了镜像克隆功能,可以把外网的镜像打包到本地形成一个镜像源。在一台联网并且安装了 TiUP 的机器上,我们只需要如下一个命令就可以把两个平台的资源包放到一个本地镜像中:


# 可以使用--arch参数指定平台,默认是"amd64,arm64",所以这省略了[root@localhost ~]# tiup mirror clone ./mirror v5.1.0 --os=linux
复制代码


下载好的文件如下图所示:



这里面有个local_install.sh是不是非常熟悉,这个就是用来安装 TiUP 的脚本文件。接下来我们把这个mirror目录复制到没有外网的服务器上,然后执行安装文件就可以了:


[root@localhost ~]# scp ./mirror/* root@10.3.65.136:/root/mirror
复制代码


[root@localhost mirror]# sh local_install.sh[root@localhost mirror]# source /root/.bash_profile[root@localhost mirror]# tiup mirror show/root/mirror
复制代码


到这里,一个 TiDB v5.1.0 版本的私有镜像源就创建好了,这时候你再用tiup list tidb就只能看到这个版本的 tidb 组件信息。

离线混合部署

镜像源准备好以后,部署过程其实和在线部署没有太大区别,这里只需要注意一点,部署拓扑文件里面指定好各自节点对应的架构平台即可:


global:  user: 'tidb'  ssh_port: 22  deploy_dir: '/tidb-deploy'  data_dir: '/tidb-data'  arch: "arm64"
server_configs: {}
pd_servers: - host: 10.3.65.139 - host: 10.3.65.140 - host: 10.3.65.145
tidb_servers: - host: 10.3.65.139 - host: 10.3.65.140 - host: 10.3.72.125 arch: "amd64"
tikv_servers: - host: 10.3.65.141 - host: 10.3.65.142 - host: 10.3.65.143
monitoring_servers: - host: 10.3.65.149
grafana_servers: - host: 10.3.65.149
alertmanager_servers: - host: 10.3.65.149
复制代码


接着就是一路的tiup cluster deploytiup cluster start即可,部署成功后查看 TiBD 集群信息:


离线混合升级

那么混合部署的集群如何升级呢,其实还是前面提到的 TiUP 镜像问题。比如我要从 v5.1.0 离线升级到 v5.2.0,如果现在的镜像源中有 v5.2.0 的资源文件那么问题就非常容易了。


前面我们提到过,并不能直接把 v5.2.0 的资源文件直接扔到镜像源目录中,目前我知道的有两种实现方案。


第一种是采用官方介绍的镜像合并功能,不过这种方式实施起来稍微有点复杂,加上文档介绍的不够详细我一直卡在管理员认证这里。


第二种是投机取巧方案但是非常好用。就是再克隆一份 v5.2.0 的离线包到本地,然后上传到服务器后修改 TiUP 镜像源地址:


[root@localhost ~]# tiup mirror clone ./mirror2 v5.2.0 --os=linux[root@localhost ~]# scp ./mirror2/* root@10.3.65.136:/root/mirror2
复制代码


[root@localhost ~]# tiup mirror set /root/mirror2  # 在这里偷梁换柱[root@localhost ~]# tiup mirror show/root/mirror2[root@localhost ~]# tiup list tidbAvailable versions for tidb:Version  Installed  Release                    Platforms-------  ---------  -------                    ---------v5.2.0              2021-08-27T18:40:58+08:00  linux/amd64,linux/arm64
复制代码


接着就是常规的tiup cluster upgrade操作了,升级完成后集群信息如下:



nice。

总结

别的就不多说了,一句话:TiUP 真香啊~


它还有好多隐藏的好玩的功能等待大家去探索。


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB在X86和ARM混合平台下的离线部署和升级_安装 & 部署_TiDB 社区干货传送门_InfoQ写作社区