Pigsty v1.5.0
Docker 应用程序支持
亮点概述
- 完善的 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_cleanpg_disable_purge->pg_safeguarddcs_exists_action->dcs_cleandcs_disable_purge->dcs_safeguard
参数重命名
node_ntp_config->node_ntp_enablednode_admin_setup->node_admin_enablednode_admin_pks->node_admin_pk_listnode_dns_hosts->node_etc_hosts_defaultnode_dns_hosts_extra->node_etc_hostsnode_dns_server->node_dns_methodnode_local_repo_url->node_repo_local_urlsnode_packages->node_packages_defaultnode_extra_packages->node_packagesnode_packages_meta->node_packages_metanode_meta_pip_install->node_packages_meta_pipnode_sysctl_params->node_tune_paramsapp_list->nginx_indexesgrafana_plugin->grafana_plugin_methodgrafana_cache->grafana_plugin_cachegrafana_plugins->grafana_plugin_listgrafana_git_plugin_git->grafana_plugin_githaproxy_admin_auth_enabled->haproxy_auth_enabledpg_shared_libraries->pg_libsdcs_type->pg_dcs_type