云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
可观测监控 Prometheus 版,每月50GB免费额度
简介: 云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator

使用 PGOKubernetes 上运行 Cloud Native PostgreSQL:来自 Crunchy DataPostgres Operator


  • Cloud Native PostgreSQL
  • Crunchy Data
  • Postgres Operator

PGO 是由 Crunchy Data 开发并包含在 Crunchy PostgreSQL for Kubernetes 中的 Postgres Operator,可自动化并简化在 Kubernetes 上部署和管理开源 PostgreSQL 集群。


  • Crunchy PostgreSQL for Kubernetes

无论您是需要启动并运行一个简单的 Postgres 集群,还是需要在生产中部署一个高可用性、容错群集群,或者是运行自己的数据库即服务(database-as-a-service)PostgreSQL Operator 都提供了保持云原生 Postgres 集群健康所需的基本功能,包括:


Postgres 集群供应


轻松创建、扩展和删除 PostgreSQL 集群,同时完全自定义您的 PodPostgreSQL 配置!


  • provisioning
  • 轻松创建、扩展和删除 PostgreSQL 集群


高可用性


由基于分布式共识的高可用性解决方案支持的安全、自动故障转移。使用 Pod Anti-Affinity 来帮助恢复;您可以配置它的 aggressive!失败的初选会自动恢复,从而加快恢复时间。


  • 高可用性
  • Pod Anti-Affinity

支持在多个 Kubernetes 集群中工作的备用 PostgreSQL 集群

  • 多个 Kubernetes 集群


灾难恢复


备份和恢复利用开源 pgBackRest 实用程序,包括对完整、增量和差异备份以及高效增量恢复的支持。设置您希望备份保留多长时间。适用于非常大的数据库!

  • 灾难恢复


TLS


通过为 PostgreSQL 服务器启用 TLS 来保护应用程序和数据服务器之间的通信,包括强制所有连接使用 TLS 的能力。

  • PostgreSQL 服务器启用 TLS


监控


使用开源 pgMonitor 库跟踪 PostgreSQL 集群的运行状况。

  • 监控
  • pgMonitor


PostgreSQL 用户管理


使用强大的命令从您的 PostgreSQL 集群中快速添加和删除用户。管理密码过期策略或使用您首选的 PostgreSQL 身份验证方案。


升级管理


以最小的可用性影响安全地应用 PostgreSQL 更新到您的 PostgreSQL 集群。


高级复制支持


对于对丢失事务敏感的工作负载,可以在异步复制同步复制之间进行选择。

  • 异步复制
  • 同步复制


克隆


使用 pgo create cluster --restore-from 从现有集群或备份创建新集群。


连接池


使用 pgBouncer 进行连接池。

  • pgBouncer


K8S 亲和力和容忍度


使用 node affinity(节点亲和性) 将 PostgreSQL 集群部署到您偏好的 Kubernetes 节点,或者指定 Kubernetes 可以将 PostgreSQL 实例调度到哪些节点并具有 tolerations(容忍度)。

  • node affinity
  • Kubernetes 节点
  • tolerations(容忍度)


定期备份


选择备份类型(完整、增量、差异)以及您希望它在每个 PostgreSQL 集群上发生的频率。

  • scheduling-backups


备份到 S3 或 GCS


将您的备份存储在 Amazon S3、任何支持 S3 协议的对象存储系统或 GCS 中。PostgreSQL Operator 可以从这些备份中备份、恢复和创建新集群。

  • 将您的备份存储在 Amazon S3
  • GCS


多命名空间支持


您可以控制 PGO(Postgres Operator) 如何利用具有多种不同部署模型的 Kubernetes 命名空间:


  • PGO 和所有 PostgreSQL 集群部署到同一个命名空间
  • PGO 部署到一个命名空间,并将所有 PostgreSQL 集群部署到不同的命名空间
  • PGO 部署到一个命名空间,并跨多个命名空间管理 PostgreSQL 集群
  • 使用 pgo 客户端运行 pgo create namespacepgo delete namespace 动态添加和删除由 PostgreSQL Operator 管理的命名空间

Kubernetes 命名空间


完全可定制性


Postgres Operator(PGO) 使 Postgres 在支持 Kubernetes 的平台上启动和运行变得容易,但也可以进行进一步的自定义。因此,PGO 允许您进一步自定义您的部署,包括:


  • 为主存储、副本存储和备份存储选择不同的存储类
  • 为每个 PostgreSQL 集群部署选择自己的容器资源类;区分用于主集群和副本集群的资源!
  • 使用自己的容器镜像仓库,包括支持 imagePullSecrets 和私有仓库
  • 自定义您的 PostgreSQL 配置
  • 带上您自己的受信任证书颁发机构 (CA) 以与 Operator API server 一起使用
  • 覆盖每个集群的 PostgreSQL 配置


工作原理


image.png


Crunchy PostgreSQL Operator 扩展了 Kubernetes,为快速创建和管理 PostgreSQL 集群提供更高级别的抽象。Crunchy PostgreSQL Operator 利用称为 “自定义资源(Custom Resources)”Kubernetes 概念来创建多个自定义资源定义 (CRD),以允许管理 PostgreSQL 集群。


包含的组件


使用 PostgreSQL Operator 部署的 PostgreSQL 容器包括以下组件:

  • PostgreSQL
  • PostgreSQL Contrib Modules
  • PL/Python + PL/Python 3
  • PL/Perl
  • pgAudit
  • pgAudit Analyze
  • pgnodemx
  • pg_cron
  • pg_partman
  • set_user
  • TimescaleDB (Apache 2 edition)
  • wal2json
  • pgBackRest
  • pgBouncer
  • pgAdmin 4
  • pgMonitor
  • Patroni
  • LLVM (for JIT compilation)

除上述内容外,地理空间增强的 PostgreSQL + PostGIS 容器还添加了以下组件:


  • PostGIS
  • pgRouting
  • PL/R

PostgreSQL Operator Monitoring 使用以下组件:

  • pgMonitor
  • Prometheus
  • Grafana
  • Alertmanager

未直接与 PostgreSQL Operator 集成但可以与其一起工作的其他容器包括:


  • pgPool II
  • pg_upgrade
  • pgBench

有关 PostgreSQL Operator 的哪些版本包含哪些组件的更多信息,请访问文档的兼容性部分。


支持的平台


PGOPostgres Operator,是 Kubernetes-native 的,并保持与 Kubernetes 1.11 的向后兼容性,并针对以下平台进行了测试:


  • Kubernetes 1.17+
  • Openshift 4.4+
  • OpenShift 3.11
  • Google Kubernetes Engine (GKE), including Anthos
  • Amazon EKS
  • Microsoft AKS
  • VMware Tanzu

此列表仅包括 Postgres Operator 在发布过程中经过专门测试的平台:PGO 也适用于其他 Kubernetes 发行版。


存储


PGO,即 Postgres Operator,使用各种不同类型的 Kubernetes 存储和 Storage Classes 以及 hostPathNFS 进行了测试。


有各种不同类型的 Storage Class 可供 Kubernetes 使用,PGO 尽最大努力测试每一个,但由于这一领域的广度,PGO 无法验证每一类中的 Postgres Operator 功能。尽管如此,PostgreSQL Operator 被设计为与存储类无关,并已被证明可以与其他存储类一起工作。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
10月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
5月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
6月前
|
运维 Kubernetes Cloud Native
云栖实录 | 智能运维:云原生大规模集群GitOps实践
云栖实录 | 智能运维:云原生大规模集群GitOps实践
219 1
|
8月前
|
人工智能 关系型数据库 MySQL
AnalyticDB MySQL版:云原生离在线一体化数据仓库支持实时业务决策
AnalyticDB MySQL版是阿里云推出的云原生离在线一体化数据仓库,支持实时业务决策。产品定位为兼具数据库应用性和大数据处理能力的数仓,适用于大规模数据分析场景。核心技术包括混合负载、异构加速、智能弹性与硬件优化及AI集成,支持流批一体架构和物化视图等功能,帮助用户实现高效、低成本的数据处理与分析。通过存算分离和智能调度,AnalyticDB MySQL可在复杂查询和突发流量下提供卓越性能,并结合AI技术提升数据价值挖掘能力。
187 16
|
7月前
|
人工智能 关系型数据库 分布式数据库
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
384 0
|
8月前
|
运维 Cloud Native 开发工具
智能运维:云原生大规模集群GitOps实践
智能运维:云原生大规模集群GitOps实践,由阿里云运维专家钟炯恩分享。内容涵盖云原生运维挑战、管理实践、GitOps实践及智能运维体系。通过OAM模型和GitOps优化方案,解决大规模集群的发布效率与稳定性问题,推动智能运维工程演进。适用于云原生环境下的高效运维管理。
226 8
|
10月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的数据库集群
PostgreSQL的逻辑存储结构涵盖了数据库集群、数据库、表、索引、视图等对象,每个对象都有唯一的oid标识。数据库集群是由单个PostgreSQL实例管理的所有数据库集合,共享同一配置和资源。集群的数据存储在一个称为数据目录的单一目录中,可通过-D选项或PGDATA环境变量指定。
149 3

推荐镜像

更多