v1.5.0 发布注记
v1.5添加了Docker支持,ETCD作为DCS的能力,基础设施自我监控与CMDB改进
v1.5.0
亮点概述
- 完善的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
v1.5.1
亮点
重要:修复了PG14.0-14.3中 CREATE INDEX|REINDEX CONCURRENTLY
可能导致索引数据损坏的问题。
Pigsty v1.5.1 升级默认PostgreSQL版本至 14.4 强烈建议尽快更新。
软件升级
- postgres 升级至 to 14.4
- haproxy 升级至 to 2.6.0
- grafana 升级至 to 9.0.0
- prometheus 升级至 2.36.0
- patroni 升级至 2.1.4
问题修复
- 修复了
pgsql-migration.yml
中的TYPO - 移除了HAProxy配置文件中的PID配置项
- 移除了默认软件包中的 i686 软件包
- 默认启用所有Systemd Redis Service
- 默认启用所有Systemd Patroni Service
API变更
grafana_database
与grafana_pgurl
被标记为过时API,将从后续版本移除
New Apps
- wiki.js : 使用Postgres搭建本地维基百科
- FerretDB : 使用Postgres提供MongoDB API