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
即可。
安装 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 组件获取 PostgreSQL-repmgr 连接地址,进入 PostgreSQL-repmgr 组件的 Web 终端内。env | grep REPMGR_PARTNER_NODES
将上述的内容复制出并修改成以下格式,然后进入 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
验证集群,进入 Pgpool 组件的 Web 终端中。# 连接 postgresqlPGPASSWORD=$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
。
进入组件内 -> 其他设置,将组件部署类型修改为 有状态服务
。
进入组件内 -> 环境变量,新增以下环境变量:
# 默认初始化的数据库POSTGRESQL_DATABASE=initialize# 创建普通用户和密码POSTGRESQL_USERNAME=adminPOSTGRESQL_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
,其他自定义即可。
在组件视图内构建组件等待构建完成并启动。
6. 修改组件实例数量进入组件内 -> 伸缩,将组件实例数量设置为 3
,等待所有实例启动即可。
进入团队内 -> 新建组件 -> 基于镜像创建组件,应用、组件、英文名称等自定义即可,镜像填写 bitnami/pgpool:4.4.2
。
进入组件内 -> 环境变量,新增以下环境变量:
# pgpool admin 用户与密码PGPOOL_ADMIN_USERNAME=adminPGPOOL_ADMIN_PASSWORD=admin@123# postgres 用户与密码PGPOOL_POSTGRES_USERNAME=postgresPGPOOL_POSTGRES_PASSWORD=postgres@123# 用于执行流检查的用户和密码PGPOOL_SR_CHECK_USER=adminPGPOOL_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 终端中,输入以下命令验证集群:
# 连接 postgresqlPGPASSWORD=$PGPOOL_POSTGRES_PASSWORD psql -U $PGPOOL_POSTGRES_USERNAME -h localhost# 查询集群节点show pool_nodes;
status 字段均为 UP 即可。
最后外部连接如想使用本地工具连接到 postgresql,可在 pgpool 组件的端口内打开对外服务端口,通过该端口连接到 postgresql,默认用户密码为 postgres/postgres@123
。
为了保障高可用集群,Kubernetes 集群至少有 3 个节点,且底层存储使用分布式存储,如没有分布式存储,需将 Postgresql 存储切换为本地存储也可保障高可用集群的数据。可通过以下方式进行高可用集群验证:
通过 Pgpool 连接后,创建数据库并写入数据,再进入 PostgreSQL-repmgr 组件的 Web 终端内查询每个实例是否都有数据。挂掉主节点,验证是否主节点自动切换并可正常连接并写入。关键词:
(责任编辑:黄俊飞)推荐内容
- PostgreSQL-HA 高可用集群在 Rainbond
- 今日聚焦!外交部:如加方不听劝告,中方
- 沈丘县自然资源局:微笑服务转作风 优质
- 科技人员田间送“农技”,助力春耕迎“薯
- 独山子石化公司塔里木120万吨年二期乙烯
- 归去来结局_归来去结局是什么_环球热消息
- 微资讯!全面战争战锤3纳垢传奇领主有哪
- 今日观点!应变硬化的工程意义_应变硬化
- 云南省投资控股集团10亿元超短期融资券将
- 前沿热点:2023上海幼儿园报名操作流程视
- 《花间绘君颜》5月10日邀约新故事线更新
- 抖音提出AIGC相关规范!AI生成内容要有相
- 湖北荆门:优化住房公积金使用政策 单缴
- 净网2023 安徽网警依法处置“怀远涡河三
- 环球关注:进一步提升性价比 海豹冠军版
- 万科9665.49万元入股上海合科置业 参与
- 普利制药董秘回复:公司已于2023年4月25
- 深圳市社保线上服务已恢复使用,这些业务
- 男子列车上猥亵女子,被发现后下车逃跑,
- 太突然!又一家新能源车企申请破产,年销
- 新消息丨茂名高水加油站_关于茂名高水加
- 银行股大象起舞 机构瞄准两条投资主线
- 中原青年相聚山西晋城共谋合作发展
- 伍超群“零添加”差异化营销闯新路 千禾
- 观速讯丨自我意识的生长点与发展路径思考
- 市民带娃参观深大被拦 大学校园开放与否
- 四川省2023年大震巨灾综合实战演练——两
- 散逸层有极光吗(散逸层) 世界资讯
- 环球快看点丨光线传媒(300251.SZ):目前
- 【播资讯】怎么做碳烤鱼好吃?
- 硕贝德:公司的5G毫米波AiP模块已实现小批
- 京基智农:前4月累计销售生猪54.70万头,
- 从会种地到“慧”种地 内蒙古藏粮于技赋
- 天天资讯:成本下滑 己内酰胺价格下跌(
- 全球观点:记者观察丨枪支暴力愈演愈烈
- 苹果手机开不了机一直闪白苹果怎么回事
- FIT HON TENG(06088.HK):WHA Nghe A
- 天天视点!两跳满分,全红婵夺冠!中国跳
- 响水县税务局:税宣活动在线上线下同步发
- 应急管理部:4月自然灾害造成直接经济损
- 环球快资讯丨香港手机卡购买_手机卡购买
- 首场南京!江苏十三城组团邀你畅游
- 滴滴:捏扁搓圆从头过?总算活过来了 焦
- 2022年因欠钱车被债主开走可以报警吗
- 世界热头条丨天舟六号有效装载容积扩大20
- 环球短讯!剑桥包搭配什么衣服-剑桥包
- 周四有新股:创业板朗坤环境申购分析!
- 观速讯丨黑龙江省七台河市市场监管局新兴
- 【独家】1.5万人的奥林匹克花园,物业怎
- 南京通报:7名干部被查!-当前关注
- 浙商证券给予晶科能源买入评级-当前热讯
- 四方光电(688665):5月8日技术指标出现
- 让山里孩子“有学上”“上好学”
- 柴达木盆地柏树山云海翻腾宛若仙境
- 凌家滩国家考古遗址公园挂牌成立
- 手术室里开黄腔,“医疗性骚扰”该治|天
- 福建高等教育自学考试官网
- nvidia没有显示设置-nvidia显示设置不可
- 【天天新要闻】轻小说文库_日本轻小说文
- 环球快看点丨孟永生
- 新消息丨茂名高水加油站_关于茂名高水加
- 银行股大象起舞 机构瞄准两条投资主线
- 中原青年相聚山西晋城共谋合作发展
- 伍超群“零添加”差异化营销闯新路 千禾
- 观速讯丨自我意识的生长点与发展路径思考
- 市民带娃参观深大被拦 大学校园开放与否
- 四川省2023年大震巨灾综合实战演练——两
- 散逸层有极光吗(散逸层) 世界资讯
- 环球快看点丨光线传媒(300251.SZ):目前
- 【播资讯】怎么做碳烤鱼好吃?
- 硕贝德:公司的5G毫米波AiP模块已实现小批
- 京基智农:前4月累计销售生猪54.70万头,
- 从会种地到“慧”种地 内蒙古藏粮于技赋
- 天天资讯:成本下滑 己内酰胺价格下跌(
- 全球观点:记者观察丨枪支暴力愈演愈烈
- 苹果手机开不了机一直闪白苹果怎么回事
- FIT HON TENG(06088.HK):WHA Nghe A
- 天天视点!两跳满分,全红婵夺冠!中国跳
- 响水县税务局:税宣活动在线上线下同步发
- 应急管理部:4月自然灾害造成直接经济损
- 环球快资讯丨香港手机卡购买_手机卡购买
- 首场南京!江苏十三城组团邀你畅游
- 滴滴:捏扁搓圆从头过?总算活过来了 焦
- 2022年因欠钱车被债主开走可以报警吗
- 世界热头条丨天舟六号有效装载容积扩大20
- 环球短讯!剑桥包搭配什么衣服-剑桥包
- 周四有新股:创业板朗坤环境申购分析!
- 观速讯丨黑龙江省七台河市市场监管局新兴
- 【独家】1.5万人的奥林匹克花园,物业怎
- 南京通报:7名干部被查!-当前关注
- 浙商证券给予晶科能源买入评级-当前热讯
- 四方光电(688665):5月8日技术指标出现
- 让山里孩子“有学上”“上好学”
- 柴达木盆地柏树山云海翻腾宛若仙境
- 凌家滩国家考古遗址公园挂牌成立
- 手术室里开黄腔,“医疗性骚扰”该治|天
- 福建高等教育自学考试官网
- nvidia没有显示设置-nvidia显示设置不可
- 【天天新要闻】轻小说文库_日本轻小说文
- 环球快看点丨孟永生
- 喜迎变化的巨蟹座,工作积极,爱情甜蜜
- 真我Buds Air5 Pro:同轴双单元耳机
- 【天天时快讯】荥经县气象局发布地质灾害
- 消费品进口涵盖吃、穿、用、行多领域 助
- 2023年深圳有什么创业补贴政策吗?深圳电
- 被网络骚扰,还被线下骚扰怎么办
- 上海老人故意推倒摩托车案,车主终于收到
- 当前报道:获批上市!美国食药监局批准世
- 磷酸钙结石_磷酸钙-焦点简讯
- 【当前独家】郭冬临真实老婆照片_郭冬临
- 个人工商营业执照注销流程_工商营业执照
- 世界观点:教学过程动力学
- 假期最后一天阳了,“二阳”会大规模来袭
- 天天动态:年轻时林青霞的照片!这才是行
- 【快播报】webp格式转换工具_webp格式
- 偶数什么意思(偶数是什么意思简介介绍)
- 合肥市教育局:不在名单中的学校不得招生
- 项目找资金 资金找项目 金点子 项目找资金
- 紫金县气象台发布暴雨黄色预警【III级/较
- 官方:伊戈达拉预计将在下周的某个时间点