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

PostgreSQL etcd 集群介绍

PostgreSQL 使用 etcd 集群主要是为了实现高可用性(HA)和自动故障转移,通常与 Patroni 这样的工具配合使用。

架构概述

+------------+    +------------+    +------------+
| PostgreSQL |    | PostgreSQL |    | PostgreSQL |
|   Node 1   |    |   Node 2   |   |   Node 3   |
+------------+    +------------+    +------------+|                 |                 |+-----------------+-----------------+|+---------------------+|     etcd Cluster    ||  (3 or 5 nodes)     |+---------------------+

核心组件作用

1. etcd 的角色

  • 分布式配置存储:存储集群状态、成员信息
  • 领导者选举:协调哪个 PostgreSQL 节点是主节点
  • 分布式锁:确保同一时间只有一个主节点
  • 服务发现:客户端可以查询当前的主节点信息

2. PostgreSQL 集群

  • 一主多从:一个主节点(可读写),多个备节点(只读)
  • 流复制:数据从主节点实时同步到备节点
  • 自动故障转移:主节点故障时自动提升备节点为主节点

部署配置示例

1. etcd 集群配置

# etcd 1 配置
name: etcd1
listen-client-urls: http://192.168.1.10:2379
advertise-client-urls: http://192.168.1.10:2379
initial-cluster: etcd1=http://192.168.1.10:2380,etcd2=http://192.168.1.11:2380,etcd3=http://192.168.1.12:2380
initial-cluster-token: pg-cluster
initial-cluster-state: new

2. Patroni 配置

# postgresql1.yml
scope: my-pg-cluster
name: postgresql1restapi:listen: 192.168.1.20:8008connect_address: 192.168.1.20:8008etcd:hosts: ["192.168.1.10:2379", "192.168.1.11:2379", "192.168.1.12:2379"]bootstrap:dcs:ttl: 30loop_wait: 10retry_timeout: 10maximum_lag_on_failover: 1048576postgresql:use_pg_rewind: trueuse_slots: trueparameters:wal_level: replicahot_standby: "on"max_wal_senders: 10wal_keep_size: 1GBpostgresql:listen: 192.168.1.20:5432connect_address: 192.168.1.20:5432data_dir: /var/lib/postgresql/15/mainbin_dir: /usr/lib/postgresql/15/binpgpass: /tmp/pgpass

操作命令

1. 检查 etcd 集群状态

# 检查集群成员
etcdctl --endpoints=192.168.1.10:2379 member list# 检查集群健康状态
etcdctl --endpoints=192.168.1.10:2379,192.168.1.11:2379,192.168.1.12:2379 endpoint health

2. 检查 PostgreSQL 集群状态

# 通过 Patroni API 检查
curl http://192.168.1.20:8008
curl http://192.168.1.21:8008
curl http://192.168.1.22:8008# 或使用 patronictl
patronictl -c /etc/patroni.yml list

3. 手动故障转移

# 安全地切换主节点
patronictl -c /etc/patroni.yml switchover# 重新加载配置
patronictl -c /etc/patroni.yml reload my-pg-cluster

优势特点

优点

  • 高可用性:自动故障转移,服务中断时间短
  • 数据一致性:基于流复制,数据同步可靠
  • 易于管理:Patroni 自动化运维操作
  • 可扩展性:轻松添加新的 PostgreSQL 节点

注意事项

  • etcd 集群规模:建议 3 或 5 个节点(奇数个)
  • 网络要求:节点间低延迟网络通信
  • 资源规划:etcd 需要足够的磁盘 I/O 和内存
  • 监控告警:需要监控两个集群的状态

故障排查

# 查看 Patroni 日志
journalctl -u patroni -f# 检查 etcd 领导状态
etcdctl --endpoints=192.168.1.10:2379 endpoint status# 验证 PostgreSQL 复制状态
psql -h 192.168.1.20 -c "SELECT * FROM pg_stat_replication;"

这种架构非常适合生产环境,能够提供企业级的高可用 PostgreSQL 服务。

http://www.dtcms.com/a/478404.html

相关文章:

  • 企业门户网站什么意思软件外包公司排行榜
  • Android Studio制作.9图(点9图/9Patch图)
  • 「机器学习笔记12」支持向量机(SVM)详解:从数学原理到Python实战
  • 《P4310 绝世好题》
  • 【python】第五章:python-GUI编程
  • C语言——深入解析C语言指针:从基础到实践从入门到精通(三)
  • 威科夫、缠论和订单流如何进行融合
  • 电影网站建设视频教程中级经济师考试报名
  • Spring AI 文档ETL实战:集成text-embedding-v4 与 Milvus
  • Java 包装类:自动拆箱 / 装箱与 128 陷阱
  • 行业 观察
  • 59网站一起做网店淘宝网站咋做
  • 那个公司做的外贸网站好wordpress可视化函数
  • LabelImg和Labelme:目标检测和图像分割的标注工具
  • 国外素材网站推荐linux主机上传网站
  • 开源php公司网站wordpress语音搜索
  • UE 如何迁移 DerivedDataCache 路径,避免 C 盘因海量模型缓存爆盘
  • 支付宝小程序 SEO 实战:鲜花送达类小程序抢占搜索流量指南
  • 小吉快检BL-08plus:推动动物疫病早发现、早防控的科技引擎
  • 个人网站如何搭建上海工商网官网登录
  • wordpress做小说网站网站建设 sql 模版
  • 从HIDL到AIDL:Android HAL架构的演进与抉择
  • Redis-stream、bitfield类型
  • [Python脚本]快速检测两个文件夹之间的视觉重复图片
  • 【Postgresql】PG版本升级,PG14到PG15,且数据迁移
  • 数据库原理与设计
  • iis7配置thinkphp网站做海报的网站有哪些内容
  • 【开题答辩全过程】以 博客网站为例,包含答辩的问题和答案
  • 解决 MySQL `MAX(IF())` 中 `table.column` 有值但显示 `‘default‘` 的问题
  • 如何加快门户网站建设wordpress 资源下载插件