元节点

元节点即完整安装Pigsty,带有管理功能的节点,部署有完整的基础设施组件。

元节点即完整安装Pigsty,带有管理功能的节点,部署有完整的基础设施组件。

当您在某节点上执行 ./configure 命令时,当前节点会被默认作为元节点,填入配置文件 meta 分组中。

在每套环境中,Pigsty最少需要一个元节点,该节点将作为整个环境的控制中心。元节点负责各种管理工作:保存状态,管理配置,发起任务,收集指标,等等。整个环境的基础设施组件,Nginx,Grafana,Prometheus,Alertmanager,NTP,DNS Nameserver,DCS都将部署在元节点上。

复用元节点

元节点亦可复用为普通数据库节点,在元节点上默认运行有名为 pg-meta 的PostgreSQL数据库集群。提供额外的扩展功能:CMDB,巡检报告,扩展应用,日志分析,数据分析与处理等

以Pigsty附带的四节点沙箱环境为例,组件在节点上的分布如下图所示:

元节点 - 图1

沙箱由一个元节点与四个普通节点组成,这里元节点也被复用为一个普通节点。沙箱内部署有一套基础设施与两套数据库集群meta 为元节点,部署有基础设施组件,同时被复用为普通数据库节点,部署有单主数据库集群pg-metanode-1node-2node-3 为普通数据库节点,部署有数据库集群pg-test

元节点上的服务

元节点上默认运行的服务如下所示:

组件端口说明默认域名
Nginx80所有Web服务的入口,文件服务器pigsty
Yum80本地YUM软件源yum.pigsty
Grafana3000监控系统/可视化平台g.pigsty
AlertManager9093报警聚合管理组件a.pigsty
Prometheus9090监控时序数据库p.pigsty
Loki3100实时日志收集基础设施l.pigsty
Consul (Server)8500分布式配置管理与服务发现c.pigsty
Docker2375运行无状态服务的容器平台-
PostgreSQL5432Pigsty CMDB-
Ansible-用于发起管理命令的组件-
Consul DNS8600Consul提供的DNS服务(可选)-
Dnsmasq53DNS域名解析服务器(可选)-
NTP123NTP时间服务器(可选)-
Pgbouncer6432Pgbouncer连接池服务-
Patroni8008Patroni高可用组件-
Haproxy Primary5433集群读写服务(主库连接池)代理-
Haproxy Replica5434集群只读服务(从库连接池)代理-
Haproxy Default5436集群主库直连服务(用于管理,DDL/DML变更)-
Haproxy Offline5438集群离线读取服务(直连离线实例,用于ETL,交互式查询)-
Haproxy Admin9101Haproxy监控指标与流量管理页面-
PG Exporter9630Postgres监控指标导出器-
PGBouncer Exporter9631Pgbouncer监控指标导出器-
Node Exporter9100机器节点监控指标导出器-
Promtail9080实时收集节点与数据库日志-
vip-manager-将VIP绑定至集群主库上

元节点 - 图2

元节点与DCS

默认情况下,元节点上将部署元数据库 (Consul 或 Etcd),用户也可以使用已有的外部DCS集群。如果将DCS部署至元节点上,建议在生产环境使用3个元节点,以充分保证DCS服务的可用性。DCS外的基础设施组件都将以对等副本的方式部署在所有元节点上。元节点的数量要求最少1个,推荐3个,建议不超过5个。

DCS用于支持数据库高可用的故障检测与选主,在默认模式停止DCS服务会导致所有数据库集群拒绝写入,因此请务必确保DCS服务的可靠性(增加元节点数量,或使用外部独立维护的高可用DCS集群)

多个元节点

复数个元节点是可能的,通常一个元节点足矣,两个元节点可以互为备份,三个元节点自身便足以部署生产级DCS Server集群。

本着开箱即用的原则,Pigsty默认在所有元节点上部署DCS Server。但如果单纯是为了追求DCS Server集群的高可用而使用超过3个管理节点并没有太大的意义。您可以使用一个外部维护管理的,3~5节点的DCS集群来保证DCS服务可用性。

元节点的特征是节点地址配置于配置文件的 all.children.meta.host 分组中,带有meta_node: true 标记。在 configure 过程中,执行安装的当前节点会被配置为元节点,复数个元节点则需要手工配置,可参考三管理节点样例配置文件: pigsty-dcs3.yml

如果您没有使用任何外部DCS集群服务作为仲裁者,那么有意义的高可用最少需要3个节点。如果您只有两个节点,建议主库故障时人工介入以避免脑裂出现。

最后修改 2022-05-27: init commit (1e3e284)