离线安装
Pigsty 的 标准安装 流程需要访问互联网,然而生产环境的数据库服务器通常是与互联网隔离的。
因此 Pigsty 提供了离线安装的功能,允许您在没有互联网访问的环境中,同样完成安装与部署。
如果您有互联网访问,提前下载好预制的 离线软件包 也可以帮助您加速安装的过程,并增强安装过程的确定性与可靠性。
简短版本
在执行 标准安装 前,首先下载好 Pigsty 软件包与 离线软件包 。
| 软件包下载地址 | CDN(中国大陆) | GitHub Release |
|---|---|---|
| Pigsty 源码包 | pigsty-v2.7.0.tgz | pigsty-v2.7.0.tgz |
| EL8 兼容 离线软件包 | pigsty-pkg-v2.7.0.el8.x86_64.tgz | pigsty-pkg-v2.7.0.el8.x86_64.tgz |
| Debian 12 离线软件包 | pigsty-pkg-v2.7.0.debian12.x86_64.tgz | pigsty-pkg-v2.7.0.debian12.x86_64.tgz |
| Ubuntu 22.04 离线软件包 | pigsty-pkg-v2.7.0.ubuntu22.x86_64.tgz | pigsty-pkg-v2.7.0.ubuntu22.x86_64.tgz |
您也可以使用 curl 通过命令行下载:
上传 Pigsty 软件包与离线软件包至管理节点,将离线包放置于 /tmp/pkg.tgz,然后通过 bootstrap 过程启用。
提示:如果您的节点带有互联网访问, bootstrap 的过程中会询问是否下载离线软件包,回复 y 即可自动下载。
离线安装基本原理
Pigsty 会在安装过程中从互联网上游的 yum/apt 软件仓库,下载所需的 rpm/deb 包并构建一个本地软件源(默认位于 /www/pigsty)。
本地软件源由 Nginx 对外提供服务,后续无论是本机还是其他节点,都默认会使用本地软件源进行安装,而不再需要访问互联网。
使用本地软件源有三个主要好处:
- 本地软件源可以避免重复的下载请求与流量消耗,显著加速安装速度并提高安装过程的可靠性。
- 构建本地软件源会对当前可用软件版本取快照,确保部署环境内节点所安装软件版本的一致性。
- 构建好的本地软件源可以整体打包,复制到安装有相同操作系统的隔离环境中用于离线安装。
离线安装的原理是:首先在一台具有相同操作系统,且有互联网访问的节点上,完成 标准安装 流程。
然后对构建好的本地软件源(默认位于 /www/pigsty )取快照并打包,制作 成为 离线软件包,供安装有同样操作系统的生产环境网络隔离节点使用。
当 Pigsty 执行 安装 时,如果发现本地软件源已经存在,就会进入离线安装模式。 在此模式下,Pigsty 将跳过从互联网下载并构建本地软件源的过程,使用本地软件源完成整个安装过程,期间无需互联网访问。
判定本地软件源存在的标准是:默认位于 /www/pigsty/repo_complete 的标记文件存在。
这个标记文件会在标准安装过程中,下载完成后自动生成,说明这是一个可用的本地软件源。
删除本地软件源的 repo_complete 标记文件后,安装时将重新从上游下载 缺失的 软件包。
离线软件包
离线软件包是一个使用 gzip 与 tar 制作的标准 Tarball,以 .tgz 后缀结尾。通常放置于 /tmp/pkg.tgz 路径,并解压至 /www/pigsty 使用。
Pigsty 为 首要支持 的三大操作系统发行版提供了预制离线软件包。如果您使用相同的操作系统版本,可以开箱即用。
https://github.com/Vonng/pigsty/releases/download/v2.7.0/pigsty-pkg-v2.7.0.el8.x86_64.tgz # EL 8.9 (Green Obsidian) https://github.com/Vonng/pigsty/releases/download/v2.7.0/pigsty-pkg-v2.7.0.debian12.x86_64.tgz # Debian 12 (bookworm) https://github.com/Vonng/pigsty/releases/download/v2.7.0/pigsty-pkg-v2.7.0.ubuntu22.x86_64.tgz # Ubuntu 22.04 (jammy)
https://get.pigsty.cc/v2.7.0/pigsty-pkg-v2.7.0.el8.x86_64.tgz # EL 8.9 (Green Obsidian) https://get.pigsty.cc/v2.7.0/pigsty-pkg-v2.7.0.debian12.x86_64.tgz # Debian 12 (bookworm) https://get.pigsty.cc/v2.7.0/pigsty-pkg-v2.7.0.ubuntu22.x86_64.tgz # Ubuntu 22.04 (jammy)
Bootstrap
Ansible 是 Pigsty 的核心依赖,离线安装首先需要解决如何在没有互联网访问或本地源的情况下,离线安装 Ansible 的问题。
Pigsty 的离线软件包中默认已经包含了 ansible 及其依赖,从离线软件包中提取并安装 ansible 的这一过程,称为 Bootstrap。
首先将离线软件包拷贝至生产环境管理节点上,并放置于 /tmp/pkg.tgz 路径下备用,然后执行 bootstrap 命令即可:
bootstrap 脚本会帮助您自动解压位于 /tmp/pkg.tgz 的离线软件包,向节点添加并启用本地源,并安装 Ansible 及其依赖。
如果您的环境有互联网访问,并且当前操作系统有可用的离线软件包。那么 bootstrap 还会在离线软件包不存在时,询问你是否要下载。
Bootstrap 过程的逻辑
- 检查安装的前提条件是否满足(操作系统,芯片架构,内核)
- 检查本地离线安装包(
/tmp/pkg.tgz)是否存在?
- 是 -> 解压到
/www/pigsty并配置本地FS软件源启用它。 - 否 -> 进一步决定是否从互联网下载离线软件包?(前提是对应操作系统的离线软件包存在!)
- 是 -> 从 GitHub 或 CDN 下载离线软件包并解压
- 否 -> 是否添加操作系统基础的上游源地址以供从互联网下载 ?
- 是 -> 根据地区与操作系统版本写入对应的上游源:
/etc/yum.repos.d/或/etc/apt/source.list.d - 否 -> 用户自己搞定,或者当前系统的默认配置就带有 Ansible
- 是 -> 根据地区与操作系统版本写入对应的上游源:
- 现在,我们有了一个可用的本地软件源,可用来安装 Pigsty 所需的软件包,特别是 Ansible。
- 优先级顺序: 本地的
pkg.tgz> 下载的pkg.tgz> 原始上游 > 默认配置
- 从上一步配置的软件源中,安装一些基本的重要软件,不同版本的软件略有不同:
- EL 8/9:
ansible python3-jmespath python3.11-jmespath python3-cryptography createrepo_c unzip wget dnf-utils sshpass modulemd-tools - ubuntu/debian:
ansible python3-jmespath dpkg-dev unzip wget sshpass acl
- EL 8/9:
- 检查
ansible是否成功安装。
例:有互联网访问,在 Bootstrap 过程中下载离线软件包(EL8)
在一台安装了 RockyLinux 8.9 ,有互联网访问的节点上,因为该操作系统(Rocky 8.9)提供了官方的离线软件包,所以在 ./bootstrap 过程中,
如果没有检测到可用的 /www/pigsty 本地软件源,或 /tmp/pkg.tgz 离线软件包,就会询问用户是否下载离线软件包,回复 y 即可。
当然您也可以直接使用 bootstrap -y 直接默认回复 “yes”。
例:无互联网访问,下载好离线包并从本地 bootstrap (Debian 12)
在一台互联网隔离的 Debian 12 节点上,用户已经提前下载好离线软件包,并上传至该节点的指定路径下。
如果离线软件包存在于 /tmp/pkg.tgz, bootstrap 会直接使用它,输出结果为:
例:有互联网访问,但没离线包,直接从互联网 Bootstrap (Ubuntu 20.04)
在一台有互联网访问的 Ubuntu 20.04 节点上,因为 Pigsty 官方没有提供离线软件包,因此选择在线安装。在这种情况下,Bootstrap 会使用可用的源,使用 yum/apt 安装 ansible 与依赖:
制作离线软件包
Pigsty 提供了制作离线软件包的脚本 bin/cache 。默认会将 /www/pigsty 目录压缩打包,放置于 /tmp/pkg.tgz 下。
制作完成后,将其拷贝至生产环境管理节点,参考 bootstrap 过程使用即可,您也可以手工完成这一过程:
制作离线软件安装包的样例输出
例如,在标准安装完成后的 Ubuntu 22.04 系统上执行 bin/cache 脚本,即可创建离线软件包(/tmp/pkg.tgz)。