PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案

这篇具有很好参考价值的文章主要介绍了PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PostgreSQL 是一种流行的开源关系型数据库管理系统。它提供了标准的SQL语言接口用于操作数据库。

repmgr 是一个用于 PostgreSQL 数据库复制管理的开源工具。它提供了自动化的复制管理,包括:

  • 故障检测和自动故障切换:repmgr 可以检测到主服务器故障并自动切换到备用服务器。
  • 自动故障恢复:repmgr 可以检测到从服务器故障并自动将其重新加入到复制拓扑中。
  • 多个备用服务器:repmgr 支持多个备用服务器,可以在主服务器故障时自动切换到最合适的备用服务器。
  • 灵活的复制拓扑:repmgr 支持各种复制拓扑,包括单主服务器和多主服务器。
  • 管理和监控:repmgr 提供了用于管理和监控PostgreSQL复制的各种工具和命令。

可以说 repmgr 是一个扩展模块,简化了 PostgreSQL 复制的管理和维护,提高系统的可靠性和可用性。它是一个非常有用的工具,特别是对于需要高可用性的生产环境。同时 repmgr 也是由 Postgresql 社区开发以及维护的。

Pgpool 是一个高性能的连接池和负载均衡器,用于 PostgreSQL 数据库。Pgpool 可以作为中间层,位于客户端和 PostgreSQL 服务器之间,来管理连接请求并分配给不同的 PostgreSQL 服务器进行处理,以提高整体的系统性能和可用性。Pgpool 的一些主要功能包括:

  • 连接池:Pgpool在应用程序和数据库之间建立一个连接池,使得多个应用程序可以共享一组数据库连接,避免了重复的连接和断开。
  • 负载均衡:Pgpool可以将客户端请求均衡地分配到多个PostgreSQL服务器上,以实现负载均衡和更好的性能。
  • 高可用性:Pgpool可以检测到PostgreSQL服务器的故障,并自动将客户端请求重新路由到其他可用服务器,从而提高系统的可用性和稳定性。
  • 并行查询:Pgpool可以将大型查询分成几个子查询,然后将这些子查询并行发送到多个PostgreSQL服务器上执行,以提高查询性能。

本文将介绍在 Rainbond 上使用 Postgresql-repmgr + Pgpool 实现 Postgresql 高可用集群的部署和管理。

架构

当使用 Postgresql HA 集群时,应用只需连接 pgpool 即可。

  • 通过 pgpool 实现读写分离,写入操作由 Master 执行,读取操作由 Slave 执行。
  • 由 repmgr 实现流复制,Master 数据自动复制到 Slave。
  • 当 Master 遇故障下线时,由 repmgr 自定选择 Slave 为 Master,并继续执行写入操作。
  • 当某个节点遇故障下线时,由 pgpool 自动断开故障节点的连接,并切换到可用的节点上。

部署 Rainbond

安装 Rainbond,可通过一条命令快速安装 Rainbond,或选择 基于主机安装 和 基于 Kubernetes 安装 Rainbond。

curl -o install.sh https://get.rainbond.com && bash ./install.sh

通过 Rainbond 开源应用商店部署 PostgreSQL 集群

Postgresql HA 集群已发布到 Rainbond 开源应用商店,可一键部署 Postgresql HA 集群。

登陆 Rainbond 控制台,进入 平台管理 -> 应用市场 -> 开源应用商店 中搜索 postgresql-ha 并安装。

安装完成后的拓扑图如下。

配置 Pgpool 组件

  1. 获取 PostgreSQL-repmgr 连接地址,进入 PostgreSQL-repmgr 组件的 Web 终端内。
env | grep REPMGR_PARTNER_NODES
  1. 将上述的内容复制出并修改成以下格式,然后进入 Pgpool 组件内,修改PGPOOL_BACKEND_NODES 环境变量,并更新组件。
0:pg-grde8ebc-0.pg-grde8ebc.dev.svc.cluster.local:5432,1:pg-grde8ebc-1.pg-grde8ebc.dev.svc.cluster.local:5432,2:pg-grde8ebc-2.pg-grde8ebc.dev.svc.cluster.local:5432
  1. 验证集群,进入 Pgpool 组件的 Web 终端中。
# 连接 postgresql
PGPASSWORD=$PGPOOL_POSTGRES_PASSWORD psql -U $PGPOOL_POSTGRES_USERNAME -h localhost

# 查询集群节点
show pool_nodes;

status 字段均为 UP 即可。

从零开始部署 PostgreSQL 集群

从零开始在 Rainbond 上部署 Postgresql HA 集群也是非常简单的,大致分为以下几个步骤:

  • 基于镜像部署 PostgreSQL-repmgr 组件,并修改组件配置。
  • 基于镜像部署 pgpool 组件,并修改组件配置。
  • 建立组件之间的依赖关系。

镜像均采用 bitnami 制作的 postgresql-repmgr 和 pgpool,因 bitnami 制作的镜像将很多配置文件都抽离成了环境变量,配置比较方便。

部署 PostgreSQL-repmgr 组件

1. 创建组件

进入团队内 -> 新建组件 -> 基于镜像创建组件,应用、组件、英文名称等自定义即可,镜像填写 bitnami/postgresql-repmgr:14.7.0

2. 修改组件类型

进入组件内 -> 其他设置,将组件部署类型修改为 有状态服务

3. 添加环境变量

进入组件内 -> 环境变量,新增以下环境变量:

# 默认初始化的数据库
POSTGRESQL_DATABASE=initialize

# 创建普通用户和密码
POSTGRESQL_USERNAME=admin
POSTGRESQL_PASSWORD=admin@123

# 管理员 postgres 密码
POSTGRESQL_POSTGRES_PASSWORD=postgres@123

# repmgr 用户密码
REPMGR_PASSWORD=repmgrpass

# 初始化主节点的 HOST。Rainbond 控制台自动渲染 SERVICE_NAME 变量,获取当前 Statefulset 的控制器名称。
REPMGR_PRIMARY_HOST=${SERVICE_NAME}-0.${SERVICE_NAME}.${NAMESPACE}.svc.cluster.local

# 集群中的所有节点,以逗号分隔
REPMGR_PARTNER_NODES=${SERVICE_NAME}-0.${SERVICE_NAME}.${NAMESPACE}.svc.cluster.local,${SERVICE_NAME}-1.${SERVICE_NAME}.${NAMESPACE}.svc.cluster.local,${SERVICE_NAME}-2.${SERVICE_NAME}.${NAMESPACE}.svc.cluster.local

进入组件内 -> 其他设置,添加 Kubernetes 属性,选择 env,添加以下内容:

# repmgr 节点名称
- name: REPMGR_NODE_NAME
  value: "$(POD_NAME)"
# repmgr 节点网络名称
- name: REPMGR_NODE_NETWORK_NAME
  value: "$(POD_NAME).$(SERVICE_NAME).$(NAMESPACE).svc.cluster.local"
  
### "$(POD_NAME)" 用于定义 env 之间的相互依赖

4. 添加组件存储

进入组件内 -> 存储,添加新的存储,存储路径为 /bitnami/postgresql,其他自定义即可。

5. 启动组件

在组件视图内构建组件等待构建完成并启动。

6. 修改组件实例数量

进入组件内 -> 伸缩,将组件实例数量设置为 3,等待所有实例启动即可。

部署 pgpool 组件

1. 创建组件

进入团队内 -> 新建组件 -> 基于镜像创建组件,应用、组件、英文名称等自定义即可,镜像填写 bitnami/pgpool:4.4.2

2. 添加环境变量

进入组件内 -> 环境变量,新增以下环境变量:

# pgpool admin 用户与密码
PGPOOL_ADMIN_USERNAME=admin
PGPOOL_ADMIN_PASSWORD=admin@123

# postgres 用户与密码
PGPOOL_POSTGRES_USERNAME=postgres
PGPOOL_POSTGRES_PASSWORD=postgres@123

# 用于执行流检查的用户和密码
PGPOOL_SR_CHECK_USER=admin
PGPOOL_SR_CHECK_PASSWORD=admin@123

# postgresql 后端节点。节点列表获取进入到 PostgreSQL-repmgr 组件的 Web 终端内,使用 env | grep REPMGR_PARTNER_NODES 命令获取,然后修改为以下格式
PGPOOL_BACKEND_NODES=0:postgresql-ha-repmgr-0.postgresql-ha-repmgr.dev.svc.cluster.local:5432,1:postgresql-ha-repmgr-1.postgresql-ha-repmgr.dev.svc.cluster.local:5432,2:postgresql-ha-repmgr-2.postgresql-ha-repmgr.dev.svc.cluster.local:5432

3. 添加依赖

在应用视图,将 pgpool 组件依赖至 PostgreSQL-repmgr 组件。

4. 启动组件

在 pgpool 组件视图内构建组件等待构建完成并启动。

5. 验证集群

进入 Pgpool 组件的 Web 终端中,输入以下命令验证集群:

# 连接 postgresql
PGPASSWORD=$PGPOOL_POSTGRES_PASSWORD psql -U $PGPOOL_POSTGRES_USERNAME -h localhost

# 查询集群节点
show pool_nodes;

status 字段均为 UP 即可。

最后

外部连接

如想使用本地工具连接到 postgresql,可在 pgpool 组件的端口内打开对外服务端口,通过该端口连接到 postgresql,默认用户密码为 postgres/postgres@123

验证高可用集群

为了保障高可用集群,Kubernetes 集群至少有 3 个节点,且底层存储使用分布式存储,如没有分布式存储,需将 Postgresql 存储切换为本地存储也可保障高可用集群的数据。可通过以下方式进行高可用集群验证:文章来源地址https://www.toymoban.com/news/detail-437349.html

  • 通过 Pgpool 连接后,创建数据库并写入数据,再进入 PostgreSQL-repmgr 组件的 Web 终端内查询每个实例是否都有数据。
  • 挂掉主节点,验证是否主节点自动切换并可正常连接并写入。

到了这里,关于PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop高可用(HA)集群搭建

    高可用(high availability,HA)指的是若当前工作中的机器宕机了,系统会自动处理异常,并将工作无缝地转移到其他备用机器上,以保证服务的高可靠性与可用性。 而Zookeeper是一个分布式协调服务, Zookeeper即可用来保证Hadoop集群的高可用性 。通过zookeeper集群与Hadoop2.X中的两个

    2024年02月16日
    浏览(44)
  • Hadoop HA-hadoop完全分布式高可用集群配置、高可用集群启动方式、master/slave1/slave2配置

             本文章使用root用户完成相关配置与启动、这里分为master、slave1、slave2进行配置         一、将hadoop解压至需要的目录下          二、配置hadoop-env.sh启动文件         三、配置hdfs-site.xml文件         四、配置core-site.xml文件         五、配置yarn-site.x

    2024年02月06日
    浏览(54)
  • Hadoop YARN HA 集群安装部署详细图文教程

    目录 一、YARN 集群角色、部署规划 1.1 集群角色--概述 1.2 集群角色--ResourceManager(RM)  1.3 集群角色--NodeManager(NM)  1.4 HA 集群部署规划 二、YARN RM 重启机制 2.1 概述  2.2 演示  2.2.1 不开启 RM 重启机制现象  2.3 两种实现方案与区别  2.3.1 Non-work-preserving RM restart 2.3.2 

    2024年02月04日
    浏览(53)
  • 分布式数据库Apache Doris HA集群部署

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前服务于工业互联网 擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优

    2024年02月06日
    浏览(53)
  • HadoopHA模式(由于Hadoop的HA模式是在Hadoop完全分布式基础上,利用zookeeper等协调工具配置的高可用的Hadoop集群模式)

    目录 1.前期准备 1.1.hadoop-3.1.3.tar.gz,jdk-8u212-linux-x64.tar.gz,apache-zookeeper-3.5.7-bin.tar.gz三个包提取码:k5y6 2.解压安装包,配置环境变量 3. 将三个节点分别命名为master、slave1、slave2并做免密登录 免密在前面Hadoop完全分布式搭建说过,这里不再赘述 4.搭建zookeeper集群  根据配置的

    2024年02月04日
    浏览(43)
  • 全平台数据(数据库)管理工具 DataCap 管理 Rainbond 上的所有数据库

    DataCap是用于数据转换、集成和可视化的集成软件,支持多种数据源、文件类型、大数据相关数据库、关系数据库、NoSQL数据库等。通过该 DataCap 可以实现对多个数据源的管理,对数据源下的数据进行各种操作转换,制作数据图表,监控数据源等功能。 安装 Rainbond,可通过一条

    2023年04月21日
    浏览(56)
  • 安装部署postgresql-15 高可用(pgpool)

    安装部署postgresql-15 高可用(pgpool) 装部署postgresql-15 高可用(pgpool)一主二从 centos7 x86_64 数据库版本: postgresql 15 服务器IP: 10.10.3.11 10.10.3.12 10.10.3.13 vip : 10.10.3.100 官网地址: https://www.postgresql.org/download/linux/redhat/ RPM包下载: 1 创建pg15的安装目录 mkdir -p /u01/apps/pgsql15/data

    2024年02月04日
    浏览(62)
  • Zabbix第二部分:基于Proxy分布式部署实现Web监控和Zabbix HA集群的搭建

    1)分担 server 的集中式压力; 2)解决多机房之间的网络延时问题。 agent -- proxy -- server zabbix-server :整个监控体系中最核心的组件,它负责接收客户端发送的报告信息,所有配置、 统计数据及操作数据都由它组织。 Database :所有配置信息和zabbix收集到的数据都存储在数据库

    2024年02月06日
    浏览(40)
  • 【PG】PostgreSQL高可用方案repmgr部署(非常详细)

    目录 简介 1 概述 1.1 术语 1.2 组件 1.2.1 repmgr 1.2.2 repmgrd 1.3 Repmgr用户与元数据 2 安装部署 2.0 部署环境  2.1 安装要求 2.1.1 操作系统 2.1.2 PostgreSQL 版本 2.1.3 操作系统用户 2.1.4 安装位置 2.1.5 版本要求 2.2 安装 2.2.1 软件包安装 2.2.2 源码编译安装 3 快速开始 3.2 PostgreSQL部署主库

    2024年02月02日
    浏览(46)
  • Kubernetes高可用集群二进制部署(二)ETCD集群部署

    Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署api-server Kubernetes高可用集群二进制部署(四)部署kubectl和kube-controller-man

    2024年02月14日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包