生产部署

如何在 Linux 主机上安装 Pigsty?

本文是 Pigsty 生产环境多节点部署指南,部署单机版本 Demo/Dev 环境可以参考 快速上手 文档。


摘要

Postgres: 18 Linux Debian Support: 12/13 Ubuntu Support: 22/24 EL Support: 8/9/10

准备 一台具有 SSH 权限节点, 安装 兼容的 Linux 系统,使用具有免密 sshsudo 权限的 管理用户 执行以下命令:

curl -fsSL https://repo.pigsty.cc/get | bash; cd ~/pigsty;
curl -fsSL https://repo.pigsty.io/get | bash; cd ~/pigsty;

该命令会 下载 并解压 Pigsty 源码至家目录,依次完成 配置安装 即可完成部署。

./configure      # 生成配置文件(可选,如果知道如何配置可以跳过)
./deploy.yml     # 执行部署剧本,根据生成的配置文件开始安装

整个安装过程根据服务器规格/网络条件需 5~10 分钟不等,离线安装 能显著加速。 安装完成后,您可以通过域名或 80/443 端口通过 Nginx 访问 用户界面, 通过 5432 端口访问默认的 PostgreSQL 服务

如果您不需要 Pigsty 的基础设施组件,可以使用 精简安装 ,仅安装高可用 PostgreSQL 集群所必需的组件。

视频样例:20 节点生产仿真环境(Ubuntu 24.04 x86_64)


准备

安装 Pigsty 涉及一些 准备工作 ,以下是简略检查清单。

单机安装时许多限制可以放宽,通常您只需要关注本机 IP 地址 即可。如果您没有一个静态 IP 地址,可以使用 127.0.0.1 代替。

项目要求项目要求
节点至少 1C2G,上不封顶规格单节点,多节点请参考 生产部署文档
磁盘/data,主挂载路径,推荐 xfs网络静态 IPv4 地址,单节点无固定 IP 可使用 127.0.0.1
VIPL2 VIP,可选 (云环境不可用)域名本地 / 公网域名,可选,默认 i.pigsty 自签名域名
内核Linux x86_64 / aarch64发行版el8, el9, el10, d12, d13, u22, u24
LocaleC.UTF-8C防火墙端口:80 / 443 / 22 / 5432 (可选)
用户避免使用 rootpostgresSudonopass sudo 权限
SSH通过公钥 nopass可达性ssh <ip|alias> sudo ls 无错误

下载

(推荐)您可以使用以下命令自动下载、解压 Pigsty 源码包至 ~/pigsty 目录下使用:

curl -fsSL https://repo.pigsty.cc/get | bash            # 安装最新稳定版本
curl -fsSL https://repo.pigsty.cc/get | bash -s v4.0.0  # 安装特定版本
curl -fsSL https://repo.pigsty.io/get | bash            # 安装最新稳定版本
curl -fsSL https://repo.pigsty.io/get | bash -s v4.0.0  # 安装特定版本

您也可以通过 gitpig 或直接从 GitHub 下载源码和 离线软件包 压缩包的方式安装。

git clone https://github.com/pgsty/pigsty; cd pigsty; git checkout v4.0.0

配置

configure 脚本将根据您的环境和输入生成具有良好默认值的 pigsty.yml 配置清单。 这是 可选的,您可以如 配置定制 所示直接编辑 pigsty.yml

有许多 配置模板 供您参考,以下是一些快速示例:

./configure                  # 使用默认模板,安装默认的 PG 18,带有必要扩展
./configure -v 17            # 使用 PG 17 的版本,而非默认的 PG18
./configure -c rich          # 创建本地软件仓库,下载所有扩展,安装主要扩展
./configure -c slim          # 最小安装模板,与 ./slim.yml 剧本一起使用
./configure -c app/supa      # 使用 app/supa 自托管 supabase 配置模板
./configure -c ivory         # 使用 ivorysql 内核而非原生 PG
./configure -i 10.11.12.13   # 显式指定主 IP 地址
./configure -r china         # 使用中国镜像而非默认仓库
./configure -c ha/full -s    # 使用 4 节点沙箱配置模板,不进行 IP 替换和探测
配置 / configure 过程的样例输出
[vagrant@node-2 pigsty]$ ./configure
configure pigsty v4.0.0 begin
[ OK ] region  = default
[ OK ] kernel  = Linux
[ OK ] machine = x86_64
[ OK ] package = rpm,dnf
[ OK ] vendor  = rocky (Rocky Linux)
[ OK ] version = 9 (9.6)
[ OK ] sudo = vagrant ok
[ OK ] ssh = vagrant@127.0.0.1 ok
[WARN] Multiple IP address candidates found:
    (1) 192.168.121.24	inet 192.168.121.24/24 brd 192.168.121.255 scope global dynamic noprefixroute eth0
    (2) 10.10.10.12	    inet 10.10.10.12/24 brd 10.10.10.255 scope global noprefixroute eth1
[ IN ] INPUT primary_ip address (of current meta node, e.g 10.10.10.10):
=> 10.10.10.12    # <------- 在这里输入你的首要 IPv4 地址!
[ OK ] primary_ip = 10.10.10.12 (from input)
[ OK ] admin = vagrant@10.10.10.12 ok
[ OK ] mode = meta (el9)
[ OK ] locale  = C.UTF-8
[ OK ] configure pigsty done
proceed with ./deploy.yml

配置脚本常用参数

参数说明
-i|--ip当前主机的首要内网 IP 地址,用于替换配置文件中的 IP 地址占位符 10.10.10.10
-c|--conf用于指定使用的 配置模板,相对于 conf/ 目录,不带 .yml 后缀的配置名称
-v|--version用于指定要安装的 PostgreSQL 大版本,如 131415161718,部分模板不支持此配置
-r|--region用于指定上游软件源的区域,加速下载: (default|china|europe)
-n|--non-interactive直接使用命令行参数提供首要 IP 地址,跳过交互式向导
-x|--proxy使用当前环境变量配置 proxy_env 变量

如果您的机器网卡绑定了多个 IP 地址,那么需要使用 -i|--ip <ipaddr> 显式指定一个当前节点的首要 IP 地址,或在交互式问询中提供。 该脚本将把 IP 占位符 10.10.10.10 替换为当前节点的主 IPv4 地址。选用的地址应为静态 IP 地址,请勿使用公网 IP 地址。

配置过程生成的配置文件默认位于:~/pigsty/pigsty.yml,您可以在安装前进行检查与修改定制。


部署

Pigsty 中的一切都由 配置清单 所定义,也就是 上面 生成的 pigsty.yml 配置。 运行 deploy.yml 剧本 会实施这个部署计划:

./deploy.yml     # 一次性在所有节点上完成部署
安装过程的样例输出
......

TASK [pgsql : pgsql init done] *************************************************
ok: [10.10.10.11] => {
    "msg": "postgres://10.10.10.11/postgres | meta  | dbuser_meta dbuser_view "
}
......

TASK [pg_monitor : load grafana datasource meta] *******************************
changed: [10.10.10.11]

PLAY RECAP *********************************************************************
10.10.10.11                : ok=302  changed=232  unreachable=0    failed=0    skipped=65   rescued=0    ignored=1
localhost                  : ok=6    changed=3    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0

输出尾部如果带有 pgsql init donePLAY RECAP 等字样,说明安装已经完成!

上游仓库(如 Linux / PGDG 仓库)可能会因为更新而进入崩溃状态并导致安装失败(有过多次先例)! 您可以选择等待上游仓库修复后安装,或者使用预制的 离线软件包 来解决这个问题。


更多

安装完成后,您可以探索 用户界面,并通过 5432 端口访问 PostgreSQL 服务

您还可以使用 Pigsty 部署和监控 更多集群:向 配置清单 添加定义并运行:

bin/node-add   pg-test      # 将集群 pg-test 的 3 个节点纳入 Pigsty 管理
bin/pgsql-add  pg-test      # 初始化一个 3 节点的 pg-test 高可用 PG 集群
bin/redis-add  redis-ms     # 初始化 Redis 集群: redis-ms

记住,大多数模块都需要先安装 NODE 模块。查看可用的 模块 了解详情:

PGSQLINFRANODEETCDMINIOREDISFERRETDOCKER……