我们很高兴地宣布 pg_cirrus 1.0 正式发布。这个自动化工具简化了设置 3 节点集群的过程,使用户能够更轻松地在 PostgreSQL 中设置和管理高可用性。
我们理解配置 PostgreSQL 集群可能是一项复杂且耗时的任务,因此我们设计了 pg_cirrus 来帮助加快此过程并提高效率。
我们使用一个 Python 包装脚本简化了配置管理,该脚本执行 Ansible Playbook,用于主节点、备节点和 pgpool 节点。清单文件和变量文件在运行时动态生成。此外,pg_cirrus 可以在默认端口 5432 之外的其他端口上设置 PostgreSQL 数据库服务器。
我们使用 pgpool 确保 PostgreSQL 集群内的适当负载均衡,即 WRITE 请求发送到主 PostgreSQL 服务器,READ 请求发送到备 PostgreSQL 服务器。
如果主节点发生故障,其中一个备节点将自动提升为新的主节点。如果新提升的主节点也发生故障,则第三个节点将提升以处理 READ 和 WRITE 请求。
为了获得更好的用户体验,pg_cirrus 具有命令行界面,可以在运行时从用户获取配置详细信息。我们还为用户提供了 conf.yml.in、vault.yml.in 和 inventory.in 模板文件。用户还可以查看保存在 /var/log/pgpool_logs 中的 pgpool 日志。为了避免无效输入,pg_cirrus 中使用了异常处理。如果 pg_cirrus 在执行某个 Playbook 期间失败,则其余 Playbook 将不会执行,并且 pg_cirrus 将正常退出。
在 pg_cirrus 中,使用 pg_basebackup 设置物理复制。主节点的所有数据都会复制到备节点。当设置主节点时,将在主节点中针对备节点创建复制槽。在故障转移之后,当备节点提升为新的主节点时,将在新提升的主节点中创建一个复制槽,其余的备节点将继续从这个新的主节点进行复制。
为了使 pg_cirrus 安全,密码使用 Ansible Vault 存储。集群的所有节点都限制在同一个子网内,而只有 pgpool 节点可以使用密码从子网外部访问。主节点和备节点只能使用密码从集群内部访问。
为了帮助您开始使用 pg_cirrus,我们提供了以下资源
Stormatics 为 PostgreSQL 提供专业服务。我们的使命是帮助企业可靠地扩展 PostgreSQL,以满足其关键任务数据的需求。