搭建私有镜像
在构建私有云时,通常会使用隔离的网络环境,此时无法访问 TiUP 的官方镜像。因此,我们提供了构建私有镜像的方案,它主要由 mirrors 组件来实现,该方案也可用于离线部署。
mirrors 组件介绍
mirrors
组件的帮助文档如下:
tiup mirrors --help
Starting component `mirrors`: /Users/joshua/.tiup/components/mirrors/v0.0.1/mirrors
Build a local mirrors and download all selected components
Usage:
tiup mirrors <target-dir> [global-version] [flags]
Examples:
tiup mirrors local-path --arch amd64,arm --os linux,darwin # Specify the architectures and OSs
tiup mirrors local-path --full # Build a full local mirrors
tiup mirrors local-path --tikv v4 # Specify the version via prefix
tiup mirrors local-path --tidb all --pd all # Download all version for specific component
Flags:
--overwrite Overwrite the exists tarball
-f, --full Build a full mirrors repository
-a, --arch strings Specify the downloading architecture (default [amd64])
-o, --os strings Specify the downloading os (default [linux,darwin])
--tidb strings Specify the versions for component tidb
--tikv strings Specify the versions for component tikv
--pd strings Specify the versions for component pd
--playground strings Specify the versions for component playground
--client strings Specify the versions for component client
--prometheus strings Specify the versions for component prometheus
--package strings Specify the versions for component package
--grafana strings Specify the versions for component grafana
--alertmanager strings Specify the versions for component alertmanager
--blackbox_exporter strings Specify the versions for component blackbox_exporter
--node_exporter strings Specify the versions for component node_exporter
--pushgateway strings Specify the versions for component pushgateway
--tiflash strings Specify the versions for component tiflash
--drainer strings Specify the versions for component drainer
--pump strings Specify the versions for component pump
--cluster strings Specify the versions for component cluster
--mirrors strings Specify the versions for component mirrors
--bench strings Specify the versions for component bench
--insight strings Specify the versions for component insight
--doc strings Specify the versions for component doc
--ctl strings Specify the versions for component ctl
-h, --help help for tiup
tiup mirrors
命令的基本用法如下:
tiup mirrors <target-dir> [global-version] [flags]
target-dir
:指需要把克隆下来的数据放到哪个目录里。global-version
:用于为所有组件快速设置一个共同的版本。
tiup mirrors
命令提供了很多可选参数,日后可能会提供更多。但这些参数其实可以分为四类:
指定是否覆盖本地的包
--overwrite
参数的意义为,如果指定的<target-dir>
中已经有想要下载的包,是否要用官方镜像的包覆盖。如果设置了这个参数,则会覆盖。是否全量克隆
如果指定了
--full
参数,则会完整地克隆官方镜像。注意:
如果不指定
--full
参数或其它参数,那么就只会克隆一些元信息。限定只克隆特定平台的包
如果只想克隆某个平台的包,那么可以使用
--os
和--arch
来限定:- 只想克隆 linux 平台的,则执行
tiup mirros <target-dir> --os=linux
- 只想克隆 amd64 架构的,则执行
tiup mirros <target-dir> --arch=amd64
- 只想克隆 linux/amd64 的,则执行
tiup mirros <target-dir> --os=linux --arch=amd64
- 只想克隆 linux 平台的,则执行
限定只克隆组件的特定版本
如果只想克隆某个组件的某一个版本而不是所有版本,则使用
--<component>=<version>
来限定,例如:- 只想克隆 TiDB 的 v4 版本,则执行
tiup mirrors <target-dir> --tidb v4
- 只想克隆 TiDB 的 v4 版本,以及 TiKV 的所有版本,则执行
tiup mirros <target-dir> --tidb v4 --tikv all
- 克隆一个集群的所有组件的特定版本,则执行
tiup mirrors <target-dir> v4.0.0-rc
- 只想克隆 TiDB 的 v4 版本,则执行
使用示例
使用 TiUP 离线安装 TiDB 集群
以在隔离的环境中安装一个 v4.0.0-rc 的 TiDB 集群为例,可以执行以下步骤:
在一台和外网相通的机器上拉取需要的组件:
tiup mirrors package --os=linux v4.0.0-rc
该命令会在当前目录下创建一个名叫
package
的目录,里面有启动一个集群必要的组件包。通过 tar 命令将该组件包打包然后发送到隔离环境的中控机:
tar czvf package.tar.gz package
此时,
package.tar.gz
就是一个独立的离线环境。将包发送到目标集群的中控机后,执行以下命令安装 TiUP:
tar xzvf package.tar.gz
cd package
sh local_install.sh
根据提示安装完 TiUP 之后,再部署 TiDB 集群:
export TIUP_MIRRORS=/path/to/mirror
tiup cluster deploy <cluster-name> <cluster-version> <topology-file>
tiup cluster start <cluster-name>
/path/to/mirror
是tiup mirrors <target-dir>
中<target-dir>
所在的位置,如果在/tmp/package
则:export TIUP_MIRRORS=/tmp/package
部署完成后,集群相关操作可参考 cluster 命令。
构建私有镜像
构建私有镜像的方式和离线安装包的制作过程相同,只需要将 package 目录中的内容上传到 CDN 或者文件服务器即可,最简单的方式是:
cd package
python -m SimpleHTTPServer 8000
这样就在 http://127.0.0.1:8000 这个地址建立了私有镜像。
通过私有镜像安装 TiUP:
export TIUP_MIRRORS=http://127.0.0.1:8000
curl $TIUP_MIRRORS/install.sh | sh
导入 PATH 变量之后就可以正常使用 TiUP 了(需要保持 TIUP_MIRRORS
变量指向私有镜像)。