架构规划
Pigsty 采用 模块化架构,您可以像搭积木一样组合出自己想要的部署方案,并用简单的 声明式配置 表达您的意图。
常见方案
这里有一些常见的组合模式供您参考,您可以根据自己的需求进行进一步的定制与调整:
| 方案 | INFRA | ETCD | PGSQL | MINIO | 说明 |
|---|---|---|---|---|---|
单机部署(meta) | 1 | 1 | 1 | 单机部署 默认配置,经典方案 | |
单机部署(slim) | 1 | 1 | 不要监控设施,只要数据库 | ||
基础设施(infra) | 1 | 只要监控基础设施 | |||
单机部署(rich) | 1 | 1 | 1 | 1 | 单机 + 对象存储 + 本地仓库/扩展 |
| 多节点方案 | INFRA | ETCD | PGSQL | MINIO | 说明 |
|---|---|---|---|---|---|
双节点(dual) | 1 | 1 | 2 | 2节点半 HA,可容忍坏特定一个 | |
三节点(trio) | 3 | 3 | 3 | 3 | 三节点 HA,Silo EC:1 |
四节点(full) | 1 | 1 | 1+3 | 演示专用,1 INFRA/ETCD | |
生产仿真(simu) | 3 | 5 | 9 | 4 | 20 节点,另含 2 个代理 |
| 大规模生产(自定义) | 3 | 5 | n | n | 3个 INFRA,5个 ETCD |
使用什么样的架构规划方案,取决于您对数据库可靠性的要求,以及手头可用的资源。 通常来说,严肃的生产环境部署至少需要 3 个节点以实现 高可用配置。 如果您只有 2 个节点,则可以使用 半高可用配置。
我们提供 架构咨询服务(¥2,000)为您筹划合适的 Pigsty 配置方案。
利弊权衡
- 若要使用 Pigsty 的监控系统,则至少需要 1 个 INFRA 节点,生产部署通常使用 2 个,大规模部署 3 个。
- 若要启用 PG 高可用,则至少需要 1 个 ETCD 节点;生产部署通常使用 3 个,大规模环境中使用 5 个。偶数成员也能运行,但不会比少一个成员的奇数集群提高故障容忍数,因此应优先采用奇数规模。
- 若要启用 MINIO 模块的 Silo 对象存储,则至少需要 1 个 MINIO 节点,严肃使用时通常使用 4+ 节点部署 MNMD 集群。
- PG 生产集群通常至少为两节点主从配置;严肃场景通常使用 3 节点;高只读负载可以有更多从库(几十个)
- 此外对于 PostgreSQL 来说,您还可以按需使用 离线实例,同步实例,备份集群,延迟集群等等高级配置。
单节点配置
最简单的配置,所有内容都在单个节点上运行,默认安装四个基本模块,通常用于 Demo,Devbox,或测试环境。
如果为备份/PITR 配置了外部 S3 / MinIO 备份仓库 提供兜底的 RTO/RPO,此配置亦可用于普通标准的生产环境。
单节点配置有多种变体:
- 充血版(
rich):生产版本的单机部署模版,带有本地 Silo 对象存储,使用本地软件仓库,下载所有 PG 扩展。 - 瘦身版(
slim):只安装 PGSQL 和 ETCD,不安装监控设施 —— 精简安装 也可以扩充为 多节点高可用部署 - 监控版(
infra):与slim相反,只安装 INFRA 监控基础设施,不安装数据库服务,只用来监控其他实例。 - 内核替换:用衍生分支
pgsql、mssql、polar、ivory、mysql、pgtde、oriole、agens、pgedge替换原生 PG
双节点配置
双节点配置 将启用数据库复制和 半高可用 能力,提供更好的数据冗余,以及有限的故障转移支持:
双节点配置的高可用自动切换机制有限制,这种"半 HA"设置只能从特定节点故障中自动恢复:
- 如果
node-1故障,无自动故障转移:需要手动提升node-2 - 如果
node-2故障,自动故障转移有效:node-1自动提升
三节点配置
三节点模板 在每个节点同时部署 INFRA、ETCD、PGSQL 和 MINIO(Silo),在剩余两节点连通且副本状态满足故障转移条件时,可以容忍一个节点故障。Silo 使用三节点、每节点单数据盘的 EC:1 池;已有单节点对象存储不能直接扩展成这个拓扑,应新建池并迁移对象。
| ID | NODE | PGSQL | INFRA | ETCD | MINIO |
|---|---|---|---|---|---|
| 1 | node-1 | pg-meta-1 | infra-1 | etcd-1 | minio-1 |
| 2 | node-2 | pg-meta-2 | infra-2 | etcd-2 | minio-2 |
| 3 | node-3 | pg-meta-3 | infra-3 | etcd-3 | minio-3 |
四节点配置
在这里我们出于演示目的,不配置 INFRA / ETCD 模块的高可用,您也可以对其进行进一步的调整
| ID | NODE | PGSQL | INFRA | ETCD | MINIO |
|---|---|---|---|---|---|
| 1 | node-1 | pg-meta-1 | infra-1 | etcd-1 | minio-1 |
| 2 | node-2 | pg-test-1 | infra-2 | etcd-2 | |
| 3 | node-3 | pg-test-2 | etcd-3 | ||
| 4 | node-4 | pg-test-3 |
更多节点
ha/simu 仿真模板 与 vagrant/spec/simu.rb 当前使用 20 个节点,将关键服务按组分开部署:
| 节点组 | IP 地址范围 | 数量 | 主要职责 |
|---|---|---|---|
infra / pg-meta | 10.10.10.10~10.10.10.12 | 3 | INFRA 与元数据库集群 |
proxy | 10.10.10.18~10.10.10.19 | 2 | HAProxy / VIP 接入 |
minio | 10.10.10.21~10.10.10.24 | 4 | Silo,每节点四块数据盘 |
etcd | 10.10.10.25~10.10.10.29 | 5 | ETCD,同时复用作 Redis Sentinel 测试节点 |
pg-src | 10.10.10.31~10.10.10.33 | 3 | 源 PostgreSQL 集群 |
pg-dst | 10.10.10.41~10.10.10.43 | 3 | 目标 PostgreSQL 集群 |
这是功能与生产拓扑仿真的模板;实际生产部署仍应按容量、故障域和服务依赖调整资源与共置方式。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)