# Pigsty v1.5.0

> Docker 应用程序支持

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

**v1\.5\.0 · 2022-05-22**
- [查看发布](https://github.com/pgsty/pigsty/releases/tag/v1.5.0)
- [源码 · tar\.gz](https://github.com/pgsty/pigsty/archive/refs/tags/v1.5.0.tar.gz)
- [源码 · zip](https://github.com/pgsty/pigsty/archive/refs/tags/v1.5.0.zip)
- [pgsty\/pigsty](https://github.com/pgsty/pigsty)

## 亮点概述

* 完善的 Docker 支持：在管理节点上默认启用并提供诸多开箱即用的软件模板：bytebase, pgadmin, pgweb, postgrest, minio 等。
* 基础设施自我监控：Nginx， ETCD， Consul， Prometheus， Grafana， Loki 自我监控
* CMDB 升级：兼容性改善，支持 Redis 集群/Greenplum 集群元数据，配置文件可视化。
* 服务发现改进：可以使用 Consul 自动发现所有待监控对象，并纳入 Prometheus 中。
* 更好的冷备份支持：默认定时备份任务，添加 `pg_probackup` 备份工具，一键创建延时从库。
* ETCD 现在可以用作 PostgreSQL/Patroni 的 DCS 服务，作为 Consul 的备选项。
* Redis 剧本/角色改善：现在允许对单个 Redis 实例，而非整个 Redis 节点进行初始化与移除。

## 详细变更列表

## 监控面板

* CMDB Overview：可视化 Pigsty CMDB Inventory。
* DCS Overview：查阅 Consul 与 ETCD 集群的监控指标。
* Nginx Overview：查阅 Pigsty Web 访问指标与访问日志。
* Grafana Overview：Grafana 自我监控
* Prometheus Overview：Prometheus 自我监控
* INFRA Dashboard 进行重制，反映基础设施整体状态

## 监控架构

* 现在允许使用 Consul 进行服务发现（当所有服务注册至 Consul 时）
* 现在所有的 Infra 组件会启用自我监控，并通过 `infra_register` 角色注册至 Prometheus 与 Consul 中。
* 指标收集器 pg_exporter 更新至 v0.5.0，添加新功能，`scale` 与 `default`，允许为指标指定一个倍乘因子，以及指定默认值。
*  `pg_bgwriter`, `pg_wal`, `pg_query`, `pg_db`, `pgbouncer_stat` 关于时间的指标，单位由默认的毫秒或微秒统一缩放至秒。
* `pg_table` 中的相关计数器指标，现在配置有默认值 `0`，替代原有的 `NaN`。
* `pg_class` 指标收集器默认移除，相关指标添加至 `pg_table` 与 `pg_index` 收集器中。
* `pg_table_size` 指标收集器现在默认启用，默认设置有300秒的缓存时间。

## 部署方案

* 新增可选软件包 `docker.tgz`，带有常用应用镜像：Pgadmin, Pgweb, Postgrest, ByteBase, Kong, Minio 等。
* 新增角色 ETCD，可以在 DCS Servers 指定的节点上自动部署 ETCD 服务，并自动纳入监控。
* 允许通过 `pg_dcs_type` 指定 PG 高可用使用的 DCS 服务，Consul（默认），ETCD（备选）
* 允许通过 `node_crontab` 参数，为节点配置定时任务，例如数据库备份、VACUUM，统计收集等。
* 新增了 `pg_checksum`  选项，启用时，数据库集群将启用数据校验和（此前只有 `crit` 模板默认启用）
* 新增了 `pg_delay` 选项，当实例为 Standby Cluster Leader 时，此参数可以用于配置一个 **延迟从库**
* 新增了软件包 `pg_probackup`，默认角色 `replicator` 现在默认赋予了备份相关函数所需的权限。
* Redis 部署现在拆分为两个部分：Redis 节点与 Redis 实例，通过 `redis_port` 参数可以精确控制一个具体实例。
* Loki 与 Promtail 现在使用 `frpm` 制作的 RPM 软件包进行安装。
* DCS3 配置模板现在使用一个3节点的 `pg-meta` 集群，与一个单节点的延迟从库。

## 软件升级

* 升级 PostgreSQL 至 14.3
* 升级 Redis 至 6.2.7
* 升级 PG Exporter 至 0.5.0
* 升级 Consul 至 1.12.0
* 升级 vip-manager 至 v1.0.2
* 升级 Grafana 至 v8.5.2
* 升级 Loki & Promtail 至 v2.5.0，使用 frpm 打包。

## 问题修复

* 修复了 Loki 与 Promtail 默认配置文件名的问题
* 修复了 Loki 与 Promtail 环境变量无法正确展开的问题
* 对英文文档进行了一次完整的翻译与修缮，文档依赖的 JS 资源现在直接从本地获取，无需互联网访问。

## API 变化

## 新参数

- `node_data_dir`：主要的数据挂载路径，如果不存在会被创建。
- `node_crontab_overwrite`：覆盖 `/etc/crontab` 而非追加内容。
- `node_crontab`：要被追加或覆盖的 node crontab 内容。
- `nameserver_enabled`：在这个基础设施节节点上启用 nameserver 吗？
- `prometheus_enabled`：在这个基础设施节节点上启用 prometheus 吗？
- `grafana_enabled`：在这个基础设施节节点上启用 grafana 吗？
- `loki_enabled`：在这个基础设施节节点上启用 loki 吗？
- `docker_enable`：在这个基础设施节点上启用 docker 吗？
- `consul_enable`：启用 consul 服务器/代理吗？
- `etcd_enable`：启用 etcd 服务器/客户端吗？
- `pg_checksum`：启用 pg 集群数据校验和吗？
- `pg_delay`：备份集群主库复制重放时的应用延迟。

## 参数重制

现在 `*_clean` 是布尔类型的参数，用于在初始化期间清除现有实例。

`*_safeguard` 也是布尔类型的参数，用于在执行任何剧本时，避免清除正在运行的实例。

- `pg_exists_action` -> `pg_clean`
- `pg_disable_purge` -> `pg_safeguard`
- `dcs_exists_action` -> `dcs_clean`
- `dcs_disable_purge` -> `dcs_safeguard`

## 参数重命名

- `node_ntp_config` -> `node_ntp_enabled`
- `node_admin_setup` -> `node_admin_enabled`
- `node_admin_pks` -> `node_admin_pk_list`
- `node_dns_hosts` -> `node_etc_hosts_default`
- `node_dns_hosts_extra` -> `node_etc_hosts`
- `node_dns_server` -> `node_dns_method`
- `node_local_repo_url` -> `node_repo_local_urls`
- `node_packages` -> `node_packages_default`
- `node_extra_packages` -> `node_packages`
- `node_packages_meta` -> `node_packages_meta`
- `node_meta_pip_install` -> `node_packages_meta_pip`
- `node_sysctl_params` -> `node_tune_params`
- `app_list` -> `nginx_indexes`
- `grafana_plugin` -> `grafana_plugin_method`
- `grafana_cache` -> `grafana_plugin_cache`
- `grafana_plugins` -> `grafana_plugin_list`
- `grafana_git_plugin_git` -> `grafana_plugin_git`
- `haproxy_admin_auth_enabled` -> `haproxy_auth_enabled`
- `pg_shared_libraries` -> `pg_libs`
- `dcs_type` -> `pg_dcs_type`

## 信息来源

- [GitHub Release](https://github.com/pgsty/pigsty/releases/tag/v1.5.0)
- [Pigsty v1.5 发布文章](https://pigsty.cc/blog/pigsty/v1.5/)
- [历史 About / 发布注记](https://pigsty.cc/docs/about/release/#v150)
- [源码对比：`v1.4.1...v1.5.0`](https://github.com/pgsty/pigsty/compare/v1.4.1...v1.5.0)
