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

为开源数据库集群配置VIP(虚拟IP)的2种方案

为开源数据库集群配置VIP(虚拟IP),Patroni和repmgr确实是最主流的两种方案。它们提供了完整的HA解决方案,包括VIP管理。以下是基于这两个工具的详细配置方案:

一、Patroni + VIP 方案

Patroni内置VIP管理功能,通过REST API和回调脚本实现。

方案架构

Primary (Node1) : 192.168.1.10 + VIP 192.168.1.100 Replica (Node2) : 192.168.1.11 Replica (Node3) : 192.168.1.12

配置步骤

1. 安装依赖

# 所有节点安装sudoapt-getinstall-y patroni etcd-client python3-psycopg2

2. Patroni配置文件 (patroni.yml)

scope:pg_clustername:node1# 各节点分别改为node1、node2、node3restapi:listen:0.0.0.0:8008connect_address:192.168.1.10:8008# 各节点使用自己的IPetcd: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:trueparameters:max_connections:100shared_buffers:128MBinitdb:-encoding:UTF8-data-checksumspg_hba:-host replication replicator 192.168.1.0/24 md5-host all all 0.0.0.0/0 md5postgresql:listen:0.0.0.0:5432connect_address:192.168.1.10:5432# 各节点使用自己的IPdata_dir:/var/lib/postgresql/14/mainpgpass:/tmp/pgpassauthentication:replication:username:replicatorpassword:rep_passwordsuperuser:username:postgrespassword:postgres_passwordparameters:logging_collector:true# VIP配置 - 关键部分tags:vip:192.168.1.100/24vip_interface:eth0vip_skip_check:falsenofailover:false

3. VIP管理脚本 (/etc/patroni/vip_manager.sh)

#!/bin/bashVIP=$1INTERFACE=$2ACTION=$3case$ACTIONinon_start)# 当成为主节点时添加VIPipaddradd$VIPdev$INTERFACE;;on_stop)# 当不再是主节点时移除VIPipaddr del$VIPdev$INTERFACE;;on_role_change)# 角色变更时的处理NEW_ROLE=$4if["$NEW_ROLE"="master"];thenipaddradd$VIPdev$INTERFACE2>/dev/null||trueelseipaddr del$VIPdev$INTERFACE2>/dev/null||truefi;;esac

4. 配置systemd服务

# /etc/systemd/system/patroni.service[Unit]Description=Runners to orchestrate a high-availability PostgreSQLAfter=syslog.target network.target[Service]Type=simpleUser=postgresGroup=postgresExecStart=/usr/bin/patroni /etc/patroni/patroni.ymlKillMode=processTimeoutSec=30Restart=no[Install]WantedBy=multi-user.target

5. 启动集群

sudosystemctl daemon-reload# 从第一个节点开始启动sudosystemctl start patroni

二、repmgr + Keepalived 方案

repmgr本身不直接管理VIP,通常与Keepalived结合使用。

方案架构

Primary + Keepalived MASTER : 192.168.1.10 + VIP 192.168.1.100 Replica + Keepalived BACKUP : 192.168.1.11

配置步骤

1. 安装软件包

# 所有节点安装sudoapt-getinstall-y postgresql-14 repmgrd keepalived

2. 配置repmgr (主节点)

# /etc/repmgr.confnode_id=1node_name=node1conninfo='host=192.168.1.10 user=repmgr dbname=repmgr connect_timeout=2'data_directory='/var/lib/postgresql/14/main'log_level=INFOlog_file='/var/log/postgresql/repmgr.log'failover=automaticpromote_command='repmgr standby promote -f /etc/repmgr.conf'follow_command='repmgr standby follow -f /etc/repmgr.conf'# 监控设置monitor_interval_secs=10monitor_history_minutes=90

3. 配置repmgrd服务

# /etc/default/repmgrdREPMGRD_ENABLED=yesREPMGRD_CONF="/etc/repmgr.conf"REPMGRD_OPTS="--daemonize=false"

4. 配置Keepalived (主节点配置)

# /etc/keepalived/keepalived.confglobal_defs{router_id pg_cluster}vrrp_script chk_pg_master{script"/usr/bin/pg_isready -h 192.168.1.10 -p 5432"interval2fall2rise2}vrrp_instance VI_1{state MASTER interface eth0 virtual_router_id51priority100advert_int1authentication{auth_type PASS auth_pass postgres}virtual_ipaddress{192.168.1.100/24 dev eth0}track_script{chk_pg_master}# 当状态变更时执行脚本notify_master"/etc/keepalived/notify_master.sh"notify_backup"/etc/keepalived/notify_backup.sh"notify_fault"/etc/keepalived/notify_fault.sh"}

5. Keepalived状态变更脚本

# /etc/keepalived/notify_master.sh#!/bin/bash# 成为主节点时的处理LOGFILE="/var/log/keepalived/state.log"echo"`date`Becoming MASTER">>$LOGFILE# 可以在这里触发repmgr的强制切换# sudo -u postgres repmgr standby promote -f /etc/repmgr.conf

6. 从节点Keepalived配置

# /etc/keepalived/keepalived.conf (从节点)global_defs{router_id pg_cluster_node2}vrrp_instance VI_1{state BACKUP interface eth0 virtual_router_id51priority90# 优先级低于主节点advert_int1authentication{auth_type PASS auth_pass postgres}virtual_ipaddress{192.168.1.100/24 dev eth0}track_script{chk_pg_master}}

三、两种方案对比与选择建议

特性Patroni方案repmgr+Keepalived方案
VIP管理内置支持,简单配置需配合Keepalived
架构复杂度较低,一体化方案较高,多组件配合
学习曲线中等,需理解DCS概念较高,需掌握多个工具
功能完整性完整HA方案需要额外组件
社区支持非常活跃稳定但相对传统
适用场景新部署,云环境传统部署,已有经验

推荐选择:

  1. 选择Patroni如果

    • 新项目或重新部署
    • 希望更现代化的方案
    • 需要与云原生工具集成
    • 希望减少运维复杂度
  2. 选择repmgr+Keepalived如果

    • 已有repmgr使用经验
    • 需要与传统运维体系集成
    • 对Keepalived有深入理解
    • 需要更细粒度的控制

最佳实践建议:

  • 生产环境建议使用Patroni,它提供了更完整和现代的HA解决方案
  • 无论选择哪种方案,都要确保有完善的监控和告警
  • 定期进行故障转移测试
  • VIP应该配合DNS使用,应用层使用域名连接数据库

两种方案都是经过大量生产验证的可靠方案,具体选择可以根据团队的技术栈和运维经验来决定。

http://www.zskr.cn/news/158360.html

相关文章:

  • 使用智能AI代理自动化创建数据故事
  • 使用threading
  • AI论文写作终极神器:8款工具精准控AI率,一键搞定毕业论文!
  • 前端 + AI 进阶 Day 3:打字机效果 + 流式交互控制
  • 【紧急预警】Open-AutoGLM或面临敏感数据外泄?专家级防护建议出炉
  • 用 C#特性 + AOP(Castle.DynamicProxy)实现无侵入日志记录全流程 - 尼古拉
  • 拒绝内卷!这个鲜为人知的职业,应届生起薪破万、缺口超300万!
  • 大模型终于能跑在普通手机上了?Open-AutoGLM技术架构深度解读
  • 【稀缺资料】Open-AutoGLM核心算法解析:掌握自主智能体设计的黄金法则
  • H3C、华为等网络设备Console口连接配置指南
  • 【GitHub项目推荐--SmolLM:Hugging Face开源的轻量级语言模型家族】
  • Google新开源项目A2UI:AI 智能体如何安全地生成丰富的用户界面?
  • 2025年吨袋生产厂家实力推荐:防水/危险品/船级社/防静电吨袋等全系产品精选 - 品牌推荐官
  • 【Open-AutoGLM源码深度解析】:揭秘国产大模型自动化黑科技核心技术
  • 2026年企业智能BI私有化部署厂商核心甄选:本地化部署服务赋能企业高效运营新生态 - 品牌2026
  • USB3.0与USCAR2汽车线束规范深度解读
  • Open-AutoGLM沉思模式打不开?20年经验专家教你7个关键步骤精准触发
  • 矩阵论的奠基人与现代应用
  • 企业ICT连通性冗余管理:交换设备的系统冗余标准规范
  • 厦门狄耐克以脑机交互技术,重塑全民脑健康新范式 - 速递信息
  • 2025盛世笔特国际文化创意产业集团有限公司推荐:口碑如何、创新能力怎么样、性价比好不好深度测评 - 工业设备
  • 揭秘Open-AutoGLM高效用法:3步实现自动化大模型调优
  • Excel实用技巧大全:从入门到精通
  • JSP+JavaScript实现验证码登录功能
  • 【AI大模型调优实战】:深度解析智谱清言沉思模式启动机制与配置陷阱
  • 函数封装(可复用)
  • 拆解UUD白羊座蓝牙音箱MX02:音质与设计的平衡
  • Revit模型导入3ds Max的完整操作指南
  • OpenCV4.2使用viz模块显示3D图像
  • 折叠屏手机形态多样化,轻薄耐用成市场竞争新焦点