服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - PostgreSQL - 聊聊基础设施即代码(IAC),Zalando Postgres Operator

聊聊基础设施即代码(IAC),Zalando Postgres Operator

2023-05-07 03:05未知服务器之家 PostgreSQL

Postgres Operator 在由 Patroni 提供支持的 Kubernetes (K8s) 上提供易于运行的高可用性 PostgreSQL 集群。它仅通过 Postgres 清单 (CRD) 进行配置,以轻松集成到自动化 CI/CD 管道中,而无需直接访问 Kubernetes API,从而促进基础设施即代码(infrastr

Postgres Operator 在由 Patroni 提供支持的 Kubernetes (K8s) 上提供易于运行的高可用性 PostgreSQL 集群。它仅通过 Postgres 清单 (CRD) 进行配置,以轻松集成到自动化 CI/CD 管道中,而无需直接访问 Kubernetes API,从而促进基础设施即代码(infrastructure as code)而不是手动操作。

  • Patroni: https://github.com/zalando/patroni
  • PostgreSQL: https://www.postgresql.org/

Operator 功能

  • Postgres 集群变化的滚动更新,包括快速的小版本更新
  • 无需重新启动 pod 即可调整实时卷大小(AWS EBS、PVC)
  • 使用 PGBouncer 进行数据库连接池
  • 支持 PG13 的快速升级。支持所有集群全局升级
  • 恢复和克隆 Postgres 集群(包括主要版本升级)
  • 此外,可以配置到 S3 存储桶的逻辑备份
  • 来自 S3 WAL 存档的备用集群
  • 可针对非云环境进行配置
  • K8s 上的基本凭证和用户管理,简化应用程序部署
  • 支持自定义 TLS 证书
  • 创建和编辑 Postgres 集群清单的 UI
  • 在 Amazon AWS、Google Cloud、OpenShift 和 Kind 本地运行良好
  • 支持 AWS EBS gp2 到 gp3 迁移,支持 iops 和吞吐量配置

PostgreSQL 功能

  • 支持 PostgreSQL 14,从 9.6+ 开始
  • 通过 Patroni 流式复制集群
  • 通过 Spilo 使用 pg_basebackup / WAL-E 进行时间点恢复(Point-In-Time-Recovery)

Spilo: https://github.com/zalando/spilo

pg_basebackup: https://www.postgresql.org/docs/11/app-pgbasebackup.html

WAL-E: https://github.com/wal-e/wal-e

  • 预加载库:bg_mon, pg_stat_statements, pgextwlist, pg_auth_mon

bg_mon: https://github.com/CyberDem0n/bg_mon

pg_stat_statements: https://www.postgresql.org/docs/14/pgstatstatements.html

pgextwlist: https://github.com/dimitri/pgextwlist

pg_auth_mon: https://github.com/RafiaSabih/pg_auth_mon

  • 包括。流行的 Postgres 扩展,例如 decoderbufs, hypopg, pg_cron, pg_partman, pg_stat_kcache, pgq, plpgsql_check, postgis, set_user 和 timescaledb

decoderbufs: https://github.com/debezium/postgres-decoderbufs

hypopg: https://github.com/HypoPG/hypopg

pg_cron: https://github.com/citusdata/pg_cron

pg_partman: https://github.com/pgpartman/pg_partman

pg_stat_kcache: https://github.com/powa-team/pg_stat_kcache

pgq: https://github.com/pgq/pgq

plpgsql_check: https://github.com/okbob/plpgsql_check

postgis: https://postgis.net/

set_user: https://github.com/pgaudit/set_user

timescaledb: https://github.com/timescale/timescaledb

Postgres Operator 在 Zalando 开发并已在生产中使用了三年多。

使用 Spilo 12 或更旧的镜像

如果您已经在旧版本中使用带有 Spilo 12 Docker 镜像的 Postgres operator,则需要注意备份路径的更改。我们将主版本引入备份路径,以平滑现在支持的主版本升级。

  • 主版本升级: http://www.zzvips.com/uploads/allimg/gsfsbcvvuob.md data-id="pd157317-Ie0icYXX">新的 operator 配置可以设置兼容性标志 enable_spilo_wal_path_compat 以使 Spilo 在当前路径中查找 wal 段,但也可以在旧格式路径中查找。这是以潜在的性能成本为代价的,应该在几天后禁用。

    最新的 Spilo 镜像是:registry.opensource.zalan.do/acid/spilo-14:2.1-p4

    最旧的 Spilo 镜像是:registry.opensource.zalan.do/acid/spilo-12:1.6-p5

    入门

    为了快速获得第一印象,请按照入门教程的说明进行操作。

    • 入门教程: https://github.com/zalando/postgres-operator/blob/master/docs/quickstart.md

    支持的 Postgres 和应用程序设置

    聊聊基础设施即代码(IAC),Zalando Postgres Operator

    概念

    Postgres operator 在 Kubernetes (K8s) 上管理 PostgreSQL 集群:

    • operator 监视 PostgreSQL 集群清单的添加、更新和删除,并相应地更改正在运行的集群。例如,当用户提交新清单时,operator 会获取该清单并生成一个新的 Postgres 集群以及所有必要的实体,例如 K8s StatefulSets 和 Postgres 角色。有关清单可能包含的设置,请参阅此 Postgres 集群清单。

    operator: http://www.zzvips.com/uploads/allimg/mynqzr4of5v data-id="p6cd3e63-ABDxD5j5" style="text-indent: 2em;">Postgres 集群清单: https://github.com/zalando/postgres-operator/blob/master/manifests/complete-postgres-manifest.yaml

    • operator 还监视其自身配置的更新,并在必要时更改正在运行的 Postgres 集群。例如,如果 pod 中的 Docker 镜像发生变化,则 operator 执行滚动更新,这意味着它会与新的 Docker 镜像一一重新生成每个托管 StatefulSet 的 pod。

    自身配置: https://github.com/zalando/postgres-operator/blob/master/manifests/configmap.yaml

    • 最后,operator 定期将每个 Postgres 集群的实际状态与集群清单中定义的所需状态同步。
    • operator 的目标是解放双手,因为配置只能通过清单进行。这可以轻松集成到自动化部署管道中,而无需直接访问 K8s。

    作用域

    Postgres Operator 的 scope 是提供、修改配置和清理使用 Patroni 的 Postgres 集群,基本上是为了在 K8s 上轻松方便地运行基于 Patroni 的集群。配置和修改包括一侧的 K8s 资源,但也包括集群启动并运行后的数据库和角色配置。我们尽量把工作留给 K8s 和 Patroni,尤其是集群引导和高可用性。不过,operator 需要参与一些总体编排,比如滚动更新以改善用户体验。

    在当前状态下,监控或调整 Postgres 不在 operator 的作用域内。但是,通过全局可配置的 sidecar,我们提供了足够的灵活性来补充其他工具,如 ZMON、Prometheus 或更多 Postgres 特定选项。

    • ZMON: https://opensource.zalando.com/zmon/
    • Prometheus: https://prometheus.io/

    所涉实体概述

    这是一张图,它总结了 operator 在提交新的 Postgres cluster CRD 时将创建的内容:

    聊聊基础设施即代码(IAC),Zalando Postgres Operator

    如果没有对单个集群 pod 内部的概述,这张图是不完整的,所以让我们放大一下:

    聊聊基础设施即代码(IAC),Zalando Postgres Operator

    这两张图应该可以帮助您了解 operator 提供的功能类型的基础知识。

    状态

    该项目目前正在积极开发中。然而,Zalando 已经在内部使用它,以便在 K8s 上运行大量 Postgres 集群,用于 staging 环境和越来越多的 production 集群。在这种环境中,operator 被部署到多个 K8s 集群中,用户通过我们的 CI/CD 基础设施部署清单或依靠精简的用户界面来创建清单。

    • ​​https://jobs.zalando.com/tech/blog/postgresql-in-a-time-of-kubernetes/​​

延伸 · 阅读

精彩推荐
  • PostgreSQLPostgresql开启远程访问的步骤全纪录

    Postgresql开启远程访问的步骤全纪录

    postgre一般默认为本地连接,不支持远程访问,所以如果要开启远程访问,需要更改安装文件的配置。下面这篇文章主要给大家介绍了关于Postgresql开启远程...

    我勒个去6812020-04-30
  • PostgreSQLPostgresql查询效率计算初探

    Postgresql查询效率计算初探

    这篇文章主要给大家介绍了关于Postgresql查询效率计算的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Postgresql具有一定的参考学习价...

    轨迹4622020-05-03
  • PostgreSQLRDS PostgreSQL一键大版本升级技术解密

    RDS PostgreSQL一键大版本升级技术解密

    一、PostgreSQL行业位置 (一)行业位置 在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的...

    未知1192023-05-07
  • PostgreSQLPostgreSQL标准建表语句分享

    PostgreSQL标准建表语句分享

    这篇文章主要介绍了PostgreSQL标准建表语句分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    码上得天下7962021-02-27
  • PostgreSQL分布式 PostgreSQL之Citus 架构

    分布式 PostgreSQL之Citus 架构

    节点 Citus 是一种 PostgreSQL 扩展,它允许数据库服务器(称为节点)在“无共享(shared nothing)”架构中相互协调。这些节点形成一个集群,允许 PostgreSQL 保存比单...

    未知802023-05-07
  • PostgreSQLpostgresql 数据库中的数据转换

    postgresql 数据库中的数据转换

    postgres8.3以后,字段数据之间的默认转换取消了。如果需要进行数据变换的话,在postgresql数据库中,我们可以用"::"来进行字段数据的类型转换。...

    postgresql教程网12482021-10-08
  • PostgreSQL深入理解PostgreSQL的MVCC并发处理方式

    深入理解PostgreSQL的MVCC并发处理方式

    这篇文章主要介绍了深入理解PostgreSQL的MVCC并发处理方式,文中同时介绍了MVCC的缺点,需要的朋友可以参考下 ...

    PostgreSQL教程网3622020-04-25
  • PostgreSQLpostgresql 中的to_char()常用操作

    postgresql 中的to_char()常用操作

    这篇文章主要介绍了postgresql 中的to_char()常用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    J符离13432021-04-12