2026/4/18 15:45:39
网站建设
项目流程
怎么买域名做企业网站,直播做网站,wordpress第三方支付,广州网站开发定制公司为开源数据库集群配置VIP#xff08;虚拟IP#xff09;#xff0c;Patroni和repmgr确实是最主流的两种方案。它们提供了完整的HA解决方案#xff0c;包括VIP管理。以下是基于这两个工具的详细配置方案#xff1a;
一、Patroni VIP 方案
Patroni内置VIP管理功能#xff0…为开源数据库集群配置VIP虚拟IPPatroni和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-psycopg22. 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:false3. 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_ROLEmaster];thenipaddradd$VIPdev$INTERFACE2/dev/null||trueelseipaddr del$VIPdev$INTERFACE2/dev/null||truefi;;esac4. 配置systemd服务# /etc/systemd/system/patroni.service[Unit]DescriptionRunners to orchestrate a high-availability PostgreSQLAftersyslog.target network.target[Service]TypesimpleUserpostgresGrouppostgresExecStart/usr/bin/patroni /etc/patroni/patroni.ymlKillModeprocessTimeoutSec30Restartno[Install]WantedBymulti-user.target5. 启动集群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 keepalived2. 配置repmgr (主节点)# /etc/repmgr.confnode_id1node_namenode1conninfohost192.168.1.10 userrepmgr dbnamerepmgr connect_timeout2data_directory/var/lib/postgresql/14/mainlog_levelINFOlog_file/var/log/postgresql/repmgr.logfailoverautomaticpromote_commandrepmgr standby promote -f /etc/repmgr.conffollow_commandrepmgr standby follow -f /etc/repmgr.conf# 监控设置monitor_interval_secs10monitor_history_minutes903. 配置repmgrd服务# /etc/default/repmgrdREPMGRD_ENABLEDyesREPMGRD_CONF/etc/repmgr.confREPMGRD_OPTS--daemonizefalse4. 配置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 5432interval2fall2rise2}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.shnotify_backup/etc/keepalived/notify_backup.shnotify_fault/etc/keepalived/notify_fault.sh}5. Keepalived状态变更脚本# /etc/keepalived/notify_master.sh#!/bin/bash# 成为主节点时的处理LOGFILE/var/log/keepalived/state.logechodateBecoming MASTER$LOGFILE# 可以在这里触发repmgr的强制切换# sudo -u postgres repmgr standby promote -f /etc/repmgr.conf6. 从节点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方案repmgrKeepalived方案VIP管理内置支持简单配置需配合Keepalived架构复杂度较低一体化方案较高多组件配合学习曲线中等需理解DCS概念较高需掌握多个工具功能完整性完整HA方案需要额外组件社区支持非常活跃稳定但相对传统适用场景新部署云环境传统部署已有经验推荐选择选择Patroni如果新项目或重新部署希望更现代化的方案需要与云原生工具集成希望减少运维复杂度选择repmgrKeepalived如果已有repmgr使用经验需要与传统运维体系集成对Keepalived有深入理解需要更细粒度的控制最佳实践建议生产环境建议使用Patroni它提供了更完整和现代的HA解决方案无论选择哪种方案都要确保有完善的监控和告警定期进行故障转移测试VIP应该配合DNS使用应用层使用域名连接数据库两种方案都是经过大量生产验证的可靠方案具体选择可以根据团队的技术栈和运维经验来决定。