citus
Citus 分布式 PostgreSQL 集群,提供水平扩展与分片能力
citus 配置模板使用 Citus 扩展部署分布式 PostgreSQL 集群,提供透明的水平扩展与数据分片能力。
配置概览
- 配置名称:
citus - 节点数量: 五节点(1 协调节点 + 4 数据节点)
- 配置说明:Citus 分布式 PostgreSQL 集群
- 适用系统:
el8,el9,d12,u22,u24 - 适用架构:
x86_64 - 相关配置:
meta
启用方式:
./configure -c citus [-i <primary_ip>]
配置内容
源文件地址:pigsty/conf/citus.yml
all:
children:
infra: { hosts: { 10.10.10.10: { infra_seq: 1 }} ,vars: { repo_enabled: false }}
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 }} ,vars: { etcd_cluster: etcd }}
#----------------------------------------------#
# Citus 协调节点
#----------------------------------------------#
pg-citus0:
hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
vars:
pg_cluster: pg-citus0
pg_group: 0 # Citus 协调节点组 ID
pg_users: [{ name: dbuser_citus ,password: DBUser.Citus ,pgbouncer: true ,roles: [dbrole_admin] }]
pg_databases: [{ name: citus, owner: dbuser_citus ,extensions: [{ name: citus }] }]
#----------------------------------------------#
# Citus 数据节点 1
#----------------------------------------------#
pg-citus1:
hosts: { 10.10.10.11: { pg_seq: 1, pg_role: primary } }
vars: { pg_cluster: pg-citus1, pg_group: 1 }
#----------------------------------------------#
# Citus 数据节点 2
#----------------------------------------------#
pg-citus2:
hosts: { 10.10.10.12: { pg_seq: 1, pg_role: primary } }
vars: { pg_cluster: pg-citus2, pg_group: 2 }
#----------------------------------------------#
# Citus 数据节点 3
#----------------------------------------------#
pg-citus3:
hosts: { 10.10.10.13: { pg_seq: 1, pg_role: primary } }
vars: { pg_cluster: pg-citus3, pg_group: 3 }
vars:
version: v4.0.0
admin_ip: 10.10.10.10
region: default
infra_portal:
home : { domain: i.pigsty }
nodename_overwrite: false
node_repo_modules: node,infra,pgsql
node_tune: oltp
pg_version: 17 # Citus 支持 PG 14~17
pg_conf: oltp.yml
# Citus 专用配置
pg_mode: citus
pg_shard: pg-citus # Citus 集群名称
pg_primary_db: citus # Citus 主数据库
pg_extensions: [ citus, postgis, pgvector ]
pg_libs: 'citus, pg_stat_statements, auto_explain'
pg_users: [{ name: dbuser_citus ,password: DBUser.Citus ,pgbouncer: true ,roles: [dbrole_admin] }]
pg_databases: [{ name: citus, owner: dbuser_citus ,extensions: [{ name: citus }] }]
pg_hba_rules:
- { user: 'all' ,db: 'all' ,addr: '10.10.10.0/24' ,auth: ssl ,title: 'trust citus cluster members' }
#----------------------------------------------#
# PASSWORD
#----------------------------------------------#
grafana_admin_password: pigsty
grafana_view_password: DBUser.Viewer
pg_admin_password: DBUser.DBA
pg_monitor_password: DBUser.Monitor
pg_replication_password: DBUser.Replicator
patroni_password: Patroni.API
haproxy_admin_password: pigsty
minio_secret_key: S3User.MinIO
etcd_root_password: Etcd.Root
配置解读
citus 模板部署 Citus 分布式 PostgreSQL 集群,适合需要水平扩展的大规模数据场景。
关键特性:
- 透明数据分片,自动分布数据到多个节点
- 并行查询执行,聚合多节点结果
- 支持分布式事务(2PC)
- 保持 PostgreSQL SQL 兼容性
架构说明:
- 协调节点 (pg-citus0):接收查询,路由到数据节点
- 数据节点 (pg-citus1~3):存储分片数据
适用场景:
- 单表数据量超过单机容量
- 需要水平扩展写入和查询性能
- 多租户 SaaS 应用
- 实时分析型工作负载
注意事项:
- Citus 支持 PostgreSQL 14~17
- 分布式表需要指定分布列
- 部分 PostgreSQL 特性可能受限(如外键跨分片)
- 不支持 ARM64 架构