当前位置: 首页 > article >正文

基于 Patroni + etcd + HAProxy 的 PostgreSQL 高可用集群实战指南

1. 为什么需要PostgreSQL高可用集群数据库作为现代应用的核心组件其稳定性直接影响整个系统的可靠性。想象一下电商大促时数据库突然宕机或者医院系统因数据库故障无法挂号——这些场景对业务连续性要求极高。传统的主从复制方案需要人工干预故障转移而PatronietcdHAProxy这套组合拳能实现真正的自动化高可用。我在金融行业的一次项目迁移中就深刻体会到高可用的价值。当时凌晨3点主库意外崩溃Patroni在5秒内完成主从切换业务系统甚至没来得及触发告警。这种无感故障转移正是生产环境所需要的。这套架构的核心优势在于自动故障检测与恢复Patroni持续监控PostgreSQL状态通过etcd集群协调主从切换零人工干预从节点故障到新主库选举全程自动化读写分离HAProxy智能路由读写请求提升整体吞吐量服务发现etcd实时维护集群拓扑客户端无需硬编码连接信息2. 架构设计与组件选型2.1 黄金三角分工解析etcd相当于集群的神经系统我用动物园管理员来类比它的角色。就像管理员需要记录所有动物的状态和位置etcd负责存储当前主库是哪个节点各节点的健康状态集群配置参数故障转移历史记录选择etcd而不是ZooKeeper的原因很简单它用Go编写部署更轻量且HTTP API对开发者更友好。实测在3节点集群中键值读写延迟能控制在10ms以内。Patroni则是大脑决定什么时候该进行主从切换。它的决策依据包括本地PostgreSQL进程是否响应etcd中其他节点的状态预设的故障转移策略我特别喜欢它的failover_priority配置可以指定某些节点优先成为新主库。这在跨机房部署时特别有用能避免主库切换到远端机房。HAProxy扮演交通警察的角色它的智能路由体现在写请求永远指向主库读请求均匀分发到所有健康节点自动屏蔽故障节点支持多种负载均衡算法2.2 硬件资源配置建议根据处理过的企业案例给出不同规模集群的配置参考业务规模节点数CPU内存磁盘类型网络要求中小型34核8GBSSD本地盘1Gbps局域网中大型58核16GBNVMe云盘10Gbps内网大型716核32GB分布式存储方案多网卡绑定特别提醒etcd节点最好使用低延迟存储我在某次性能调优中发现改用Intel Optane持久内存后选举速度提升了40%。3. 手把手部署实战3.1 环境准备与依赖安装先搞定基础环境这里以Ubuntu 22.04为例# 安装Docker和必要工具 sudo apt update sudo apt install -y docker.io docker-compose jq # 配置Docker用户组 sudo usermod -aG docker $USER newgrp docker # 创建项目目录结构 mkdir -p pg-ha/{etcd,patroni,haproxy} cd pg-ha遇到权限问题别慌有一次客户环境因为SELinux没配置好折腾了我两小时。记住检查getenforce # 如果是Enforcing模式需要调整策略3.2 etcd集群部署细节etcd集群建议至少3节点这里给出优化后的docker-compose配置# etcd1服务片段示例 etcd1: image: quay.io/coreos/etcd:v3.5.7 environment: - ETCD_NAMEetcd1 - ETCD_INITIAL_CLUSTER_TOKENetcd-cluster-1 - ETCD_DATA_DIR/data.etcd - ETCD_SNAPSHOT_COUNT10000 # 提高快照频率 - ETCD_HEARTBEAT_INTERVAL500 # 调优心跳参数 - ETCD_ELECTION_TIMEOUT2500 volumes: - ./etcd/etcd1:/data.etcd关键参数解析ETCD_SNAPSHOT_COUNT控制日志压缩频率生产环境建议5000以上选举超时不要设太短否则网络抖动会导致频繁主节点切换数据目录一定要挂载到宿主机避免容器重建丢失数据启动后验证集群健康状态docker exec -it etcd1 etcdctl endpoint health --cluster3.3 Patroni配置的坑与技巧分享几个血泪教训总结的配置要点# patroni1的环境变量示例 environment: - PATRONI_POSTGRESQL_BIN_DIR/usr/lib/postgresql/14/bin - PATRONI_POSTGRESQL_DATA_DIR/var/lib/postgresql/data/pgdata - PATRONI_REPLICATION_USERNAMEreplicator - PATRONI_REPLICATION_PASSWORD$(openssl rand -base64 32) - PATRONI_SUPERUSER_USERNAMEpostgres - PATRONI_SUPERUSER_PASSWORD$(openssl rand -base64 32) - PATRONI_failover_priority1 # 该节点优先成为主库 - PATRONI_retry_timeout10 # 控制重试行为特别注意PostgreSQL大版本升级时需要同步更新BIN_DIR密码建议用随机生成不要使用示例中的固定值生产环境一定要配置pg_hba.conf限制访问IP检查Patroni日志的小技巧docker logs -f patroni1 | grep -E INFO|ERROR3.4 HAProxy高级路由配置除了基础的负载均衡HAProxy还能实现这些高级功能# 在backend部分添加这些配置 backend pgsql_back option httpchk GET /master # 专用健康检查端点 http-check expect status 200 server patroni1 patroni1:5432 check port 8008 inter 5s fall 2 rise 3 server patroni2 patroni2:5432 check port 8008 inter 5s fall 2 rise 3 server patroni3 patroni3:5432 check port 8008 inter 5s fall 2 rise 3 # 读写分离规则 acl is_write method POST PUT DELETE use_server patroni1 if is_write监控面板配置listen stats bind *:8080 mode http stats enable stats uri /haproxy?stats4. 生产环境运维要点4.1 监控与告警方案推荐组合使用这些监控手段Patroni自身指标curl http://patroni1:8008/metrics | grep pg_is_in_recoveryPrometheus监控体系etcd指标暴露端口2379/metricsHAProxy指标通过Prometheus exporter采集PostgreSQL的pg_stat_activity监控关键告警规则主从切换次数突增副本延迟超过10秒etcd leader频繁变更4.2 常见故障处理手册记录几个典型故障的处理过程案例一脑裂场景现象两个节点同时认为自己是主库 解决方法# 强制指定主库 patronictl failover --force --master patroni1案例二etcd存储空间不足症状Patroni报request timeout错误 处理步骤清理etcd历史版本etcdctl compact $(etcdctl endpoint status -w json | jq .[].header.revision)调整自动压缩参数ETCD_AUTO_COMPACTION_RETENTION2h案例三HAProxy不识别新主库排查路径检查Patroni的REST API返回值curl -s http://patroni1:8008 | jq .role验证HAProxy健康检查配置查看TCP连接状态ss -tulnp | grep 54324.3 版本升级最佳实践PostgreSQL大版本升级的平滑方案滚动升级步骤graph LR A[停用待升级节点] -- B[移除HAProxy路由] B -- C[执行pg_upgrade] C -- D[启动新版本Patroni] D -- E[加入HAProxy路由]关键检查点提前测试扩展插件兼容性确保wal_level配置一致验证备份恢复流程回退方案保留旧数据目录至少24小时准备版本特定的HAProxy配置这套架构经过多个金融级项目的验证最长的无故障运行记录达到873天。记住高可用的真谛不在于完全避免故障而在于故障发生时用户毫无感知。

相关文章:

基于 Patroni + etcd + HAProxy 的 PostgreSQL 高可用集群实战指南

1. 为什么需要PostgreSQL高可用集群? 数据库作为现代应用的核心组件,其稳定性直接影响整个系统的可靠性。想象一下电商大促时数据库突然宕机,或者医院系统因数据库故障无法挂号——这些场景对业务连续性要求极高。传统的主从复制方案需要人工…...

抖音批量下载终极指南:5分钟掌握无水印视频采集

抖音批量下载终极指南:5分钟掌握无水印视频采集 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

手把手教你用Pollyoyo实现高级图表绘制(含PlantUML和Mermaid教程)

代码驱动图表革命:Pollyoyo深度应用指南 在数据可视化和技术文档编写领域,图表的质量和效率直接影响着信息传递的效果。传统拖拽式绘图工具虽然直观,但对于需要频繁更新、版本控制或批量生成的场景显得力不从心。这正是Pollyoyo这类代码驱动…...

GitHub汉化插件终极指南:3分钟实现GitHub中文界面的完整教程

GitHub汉化插件终极指南:3分钟实现GitHub中文界面的完整教程 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为GitHub…...

如何无线地将照片从 iPhone 传输到 PC?

我们经常在 iPhone 上存储大量照片,将它们传输到电脑是备份照片并释放 iPhone 空间的好方法。通常,你会使用 USB 数据线将 iPhone 连接到电脑进行传输。但是,如果你没有 USB 数据线,或者你的电脑无法识别你的 iPhone,该…...

保姆级教程:用Python和OpenCV同时录制RealSense D435i的深度、彩色、红外和IMU数据流

RealSense D435i多模态数据采集实战:从环境配置到自动化脚本的全流程指南 当你第一次拿到RealSense D435i这款强大的深度感知设备时,可能会被它丰富的传感器阵列所震撼——RGB摄像头、立体红外摄像头、深度传感器以及惯性测量单元(IMU)的集成&#xff0c…...

数字孪生赋能智慧校园:三维可视化运维检测平台的创新实践

1. 数字孪生如何重塑智慧校园管理 第一次看到浙江工商大学的数字孪生校园平台时,我完全被震撼到了——整个校园的每栋建筑、每条道路甚至每棵树都以三维形式精确还原在屏幕上,实时数据像血液一样在虚拟校园中流动。这种技术正在彻底改变传统校园管理模式…...

医学影像预处理还有必要吗?从APTOS2019看端到端模型如何‘吃掉’传统步骤

医学影像预处理:从手工优化到端到端学习的范式迁移 在Kaggle APTOS2019糖尿病视网膜病变检测竞赛中,一个有趣的现象引发了计算机视觉领域的讨论:冠亚军团队均未采用传统图像预处理流程。这与2015年同类型竞赛中Ben Graham团队依赖精心设计的预…...

纽约出租车2022年1月-8月完整数据集分析报告-包含黄色出租车绿色出租车全量数据-地理空间信息-时间分布-支付类型分布-交通模式研究-算法训练数据

纽约出租车2022年1月-8月数据集分析报告 引言与背景 纽约市的出租车数据是研究城市交通模式、出行行为和经济活动的重要资源。本数据集包含了2022年1月和8月的黄色出租车和绿色出租车的完整运营记录,以及详细的地理空间信息。这些数据不仅对于交通规划、城市管理和…...

Python Tkinter如何实现组件隐藏与显示_利用pack_forget管理布局

pack_forget() 并未销毁组件,仅临时移除布局;组件对象、事件绑定和属性均保持有效,与 destroy() 的不可逆性有本质区别。pack_forget 后组件真的“消失”了吗?不是销毁,只是从布局管理器中临时移除;组件对象…...

Google Core Web Vitals(核心网页指标)

一、核心三大指标 (Core Web Vitals)1. LCP (Largest Contentful Paint) - 最大内容绘制:含义: 页面中最大的可见内容(如主图、大标题、视频)加载完成并渲染出来的时间。它代表了用户认为“主要内容已加载”的时刻。 目标&#xf…...

Mac option+command+方向键失效问题

optioncommand方向键失效问题 查看mac设置里的调度中心是否设置成功-看看SB网易云是不是有占用快捷键, 把这里的全局快捷键取消掉...

破局35岁:软件测试工程师的职业突围指南

被折叠的黄金十年当自动化脚本以毫秒级速度执行完上千条测试用例,当AI模型开始自动生成边界值分析报告,35岁的软件测试工程师站在技术洪流与职业周期的交汇点。行业数据显示,2025年测试岗位的AI工具渗透率已达67%,而35岁以上从业者…...

10分钟训练AI歌手:Retrieval-based Voice Conversion技术完全指南

10分钟训练AI歌手&#xff1a;Retrieval-based Voice Conversion技术完全指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Vo…...

讯飞有个妹子中了1000万大乐透

讯飞有个妹子中了1000万大乐透。怎么看都不对。&#xff08;1&#xff09;一会说1000万&#xff0c;一会又说1500万。 &#xff08;2&#xff09;离职“不要奖金”基本不可能&#xff0c;这中奖税后也几百万起&#xff0c;不可能立马辞职。 &#xff08;3&#xff09;兑奖、辞职…...

文档解析新选择:Youtu-Parsing双并行加速,快速处理大量文档

文档解析新选择&#xff1a;Youtu-Parsing双并行加速&#xff0c;快速处理大量文档 1. 引言&#xff1a;文档解析的痛点与解决方案 每天&#xff0c;我们都在与各种文档打交道——学术论文、商业合同、财务报表、技术文档。这些文档往往包含复杂的元素&#xff1a;文字、表格…...

AI驱动的运维智能监控:从理论到实践

AI驱动的运维智能监控&#xff1a;从理论到实践 一、AI驱动运维的核心概念 1.1 AI在运维中的应用价值 AI驱动的运维智能监控是指利用人工智能技术提升运维效率和系统可靠性的方法。其核心价值包括&#xff1a; 智能异常检测&#xff1a;自动识别系统异常和潜在问题预测性维护&a…...

体系结构论文(110):MAGE: A Multi-Agent Engine for Automated RTLCode Generation

MAGE: A Multi-Agent Engine for Automated RTL Code Generation 【DAC25】 文章想解决什么问题 现有 LLM 自动写 RTL 的主要问题&#xff0c;不是“能不能生成”&#xff0c;而是生成结果往往语法能过&#xff0c;但功能不一定对。尤其 RTL 设计涉及 Verilog 本体、testbench、…...

三伍微Wi-Fi射频前端芯片全解析:从GaAs/SOI开关到IoT FEM的国产替代方案

1. 三伍微Wi-Fi射频前端芯片的技术突围 在智能家居和物联网设备爆发的今天&#xff0c;Wi-Fi射频前端芯片就像无线信号的"交通警察"&#xff0c;负责指挥数据流的收发和功率调节。三伍微的国产化方案用GaAs&#xff08;砷化镓&#xff09;和SOI&#xff08;绝缘体上硅…...

数据库高可用与灾备方案:从设计到实现

数据库高可用与灾备方案&#xff1a;从设计到实现 一、数据库高可用的核心概念 1.1 高可用的定义与重要性 数据库高可用性是指数据库系统在面对各种故障和挑战时&#xff0c;能够持续提供服务的能力。高可用对于企业级应用至关重要&#xff1a; 业务连续性&#xff1a;确保核心…...

AI工具爱毕业(aibiye)帮助用户高效复现数学建模论文,并优化排版效果

还在为论文写作头痛&#xff1f;特别是数学建模的优秀论文复现与排版&#xff0c;时间紧、任务重&#xff0c;AI工具能帮上大忙吗&#xff1f;今天&#xff0c;我们评测10款热门AI论文写作工具&#xff0c;帮你精准筛选最适合的助手。 aibiye&#xff1a;专注于语法润色与结构…...

爱毕业(aibiye)提供AI驱动的数学建模论文复现和智能排版解决方案

还在为论文写作头痛&#xff1f;特别是数学建模的优秀论文复现与排版&#xff0c;时间紧、任务重&#xff0c;AI工具能帮上大忙吗&#xff1f;今天&#xff0c;我们评测10款热门AI论文写作工具&#xff0c;帮你精准筛选最适合的助手。 aibiye&#xff1a;专注于语法润色与结构…...

使用爱毕业(aibiye)的AI功能,轻松实现数学建模论文的复现与自动化排版

还在为论文写作头痛&#xff1f;特别是数学建模的优秀论文复现与排版&#xff0c;时间紧、任务重&#xff0c;AI工具能帮上大忙吗&#xff1f;今天&#xff0c;我们评测10款热门AI论文写作工具&#xff0c;帮你精准筛选最适合的助手。 aibiye&#xff1a;专注于语法润色与结构…...

借助爱毕业(aibiye)的AI工具,可高效完成数学建模论文的复现与智能排版

还在为论文写作头痛&#xff1f;特别是数学建模的优秀论文复现与排版&#xff0c;时间紧、任务重&#xff0c;AI工具能帮上大忙吗&#xff1f;今天&#xff0c;我们评测10款热门AI论文写作工具&#xff0c;帮你精准筛选最适合的助手。 aibiye&#xff1a;专注于语法润色与结构…...

爱毕业(aibiye)结合AI技术,助力数学建模论文的复现与精准排版

还在为论文写作头痛&#xff1f;特别是数学建模的优秀论文复现与排版&#xff0c;时间紧、任务重&#xff0c;AI工具能帮上大忙吗&#xff1f;今天&#xff0c;我们评测10款热门AI论文写作工具&#xff0c;帮你精准筛选最适合的助手。 aibiye&#xff1a;专注于语法润色与结构…...

MRU Cache Policy

MRU Cache Policy https://damodev.csdn.net/68a6f07d4e4959284dac0774.html https://www.geeksforgeeks.org/computer-organization-architecture/cache-replacement-policies/...

永不掉线的CRM架构揭秘:拆解高可用网站容灾设计与云原生实践

引言&#xff1a;为什么“永不掉线”是业务底线&#xff0c;而非技术奢望&#xff1f;在数字化转型的深水区&#xff0c;CRM&#xff08;客户关系管理系统&#xff09;早已不再是简单的“客户信息记录本”。它是销售漏斗的引擎、客服响应的神经中枢、甚至是生产系统的一部分。当…...

基于改进YOLO11算法的芯片微缺陷检测系统(UI界面+数据集+分析界面+处置建议+训练代码)

摘要&#xff1a;芯片制造过程中的微小缺陷&#xff08;5-7像素&#xff09;检测是质量控制的关键环节&#xff0c;但现有目标检测算法在处理此类微小目标时存在特征信息丢失、检测精度低和漏检率高等问题。针对上述问题&#xff0c;本文提出了一种基于YOLO11的改进检测方法YOL…...

为什么92%的AIAgent在复杂场景下“视而不见”?2026奇点大会揭幕多模态感知鲁棒性黄金标准

第一章&#xff1a;2026奇点大会核心洞察&#xff1a;AIAgent多模态感知失效的系统性归因 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点大会上&#xff0c;来自全球17个前沿AI实验室的联合压力测试表明&#xff1a;当AIAgent同时处理跨模态时序信号&#xff08;如…...

告别重复造轮子:Codex写脚本——运维/DevOps场景下的自动化脚本批量生成实战

前言&#xff1a;运维之痛与破局之道重复造轮子的真实成本在运维和DevOps的日常工作中&#xff0c;脚本编写占据了大量时间。据调查&#xff0c;一个熟练的运维工程师编写一个简单的环境配置脚本可能需要30分钟到1小时&#xff0c;而这类脚本在项目迭代、环境迁移过程中需要反复…...