我们使用pacemaker、corosync来自动进行故障转移。我们注意到一种行为——当主节点重新启动时,备用节点接管为主节点——这很好。当节点重新上线并在其上启动服务时,它将收回主节点的角色。理想情况下,它应该以待机状态启动。我们是否缺少任何配置?
pcs 资源默认 O/p: 资源粘性: INFINITY 迁移阈值: 0
粘性设置为无限。请建议。
添加配置详细信息:
[root@Node1 心跳]# pcs config show –l 集群名称:cluster1 Corosync 节点: 节点1 节点2 起搏器节点: 节点1 节点2 资源: 硕士:msPostgresql 元属性:master-node-max=1clone-max=2notify=truemaster-max=1clone-node-max=1 资源:pgsql(类=ocf提供者=心跳类型=pgsql) 属性: master_ip=10.70.10.1 node_list="Node1 Node2" pgctl=/usr/pgsql-9.6/bin/pg_ctl pgdata=/var/lib/pgsql/9.6/data/ Primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5 “ psql=/usr/pgsql-9.6/bin/psql rep_mode=异步 restart_on_promote=true Restore_command="cp /var/lib/pgsql/9.6/data/archivedir/%f %p" 元属性:失败超时=60 操作:降级间隔=0s on-fail=stop timeout=60s (pgsql-demote-interval-0s) 方法间隔=0s 超时=5s (pgsql-methods-interval-0s) 监控间隔=4s on-fail=重启超时=60s (pgsql-monitor-interval-4s) 监控间隔=3s on-fail=重启角色=Master超时=60s (pgsql-monitor-interval-3s) 通知间隔=0s 超时=60s (pgsql-notify-interval-0s) 升级间隔=0s on-fail=重启超时=60s (pgsql-promote-interval-0s) 启动间隔=0s on-fail=重启超时=60s (pgsql-start-interval-0s) 停止间隔=0s on-fail=块超时=60s (pgsql-stop-interval-0s) 组别:大师组 资源:vip-master(类=ocf提供商=心跳类型=IPaddr2) 属性:cidr_netmask=24 ip=10.70.10.2 操作:监控间隔=10s on-fail=重启超时=60s (vip-master-monitor-interval-10s) 启动间隔=0s on-fail=重启超时=60s (vip-master-start-interval-0s) 停止间隔=0s on-fail=区块超时=60s (vip-master-stop-interval-0s) 资源:vip-rep(类=ocf提供商=心跳类型=IPaddr2) 属性:cidr_netmask=24 ip=10.70.10.1 元属性:迁移阈值=0 操作:监控间隔=10s on-fail=重启超时=60s (vip-rep-monitor-interval-10s) 启动间隔=0s on-fail=停止超时=60s (vip-rep-start-interval-0s) 停止间隔=0s on-fail=忽略超时=60s (vip-rep-stop-interval-0s) 斯托尼斯设备: 击剑等级: 位置限制: 订购限制: 提升 msPostgresql 然后启动 master-group (分数:INFINITY)(非对称) 降级 msPostgresql 然后停止 master-group (score:0) (非对称) 托管限制: master-group with msPostgresql (score:INFINITY) (rsc-role:Started) (with-rsc-role:Master) 门票限制: 警报: 未定义警报 资源默认值: 资源粘性:INFINITY 迁移阈值:0 操作默认值: 没有设置默认值 集群属性: 集群基础设施:corosync 集群名称:cluster1 集群重新检查间隔:60 直流版本:1.1.19-8.el7-c3c624ea3d 有看门狗:假 无仲裁策略:忽略 启动失败是致命的: false 启用 stonith: false 节点属性: 节点1:pgsql-data-status=STREAMING|ASYNC 节点2:pgsql-data-status=最新 法定人数: 选项:
谢谢 !
答案1
您已将 Postgresql 设置为在引导时启动。这意味着当主节点重新启动时,它将重新加入已运行 Postgresql 的集群,导致集群必须执行服务恢复(在 Postgresql 上停止/启动),因为集群应该只有一个 Postgresql Master 实例跑步。集群在各处停止 Postgresql,然后选择一个节点(在您的情况下是原始主节点),可以在其中启动 Postgresql Master 的单个实例并在那里启动它。
要解决此问题,请确保您已postgresql
禁用并在启动时启用 Pacemaker/Corosync:
# systemctl disable postgresql-9.6
# systemctl enable pacemaker corosync