Pacemaker 与主从资源的意外行为 (Postgresql)

Unexpected Behaviour of Pacemaker with Master Slave resource(Postgresql)

环境:

我正在使用 Pacemaker (pacemaker-1.1.19-8.el7_6.1.x86_64) 和 corosync(corosync-2.4.3-2.el7_5.1 .x86_64) 美分 OS 7.5。 Postgresql 版本为 9.3.21 我有两个具有节点名称的节点集群:failover1 和 failover2。 我有一个 Postgresql9 的克隆资源。以下是相同

的CIB
pcs resource create Postgresql9 ocf:heartbeat:pgsql \
        pgctl="/usr/pgsql-9.3/bin/pg_ctl" psql="/usr/pgsql-9.3/bin/psql" pgdata="/var/lib/pgsql/9.3/data/" start_opt="-p 5432" rep_mode="async" node_list="failover1 failover2" restore_command="" primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 keepalives_count=5" master_ip="10.10.17.165" restart_on_promote="true" \
        op monitor interval="20s" role="Slave" timeout="100s" \
        op monitor interval="10s" role="Master" timeout="100s" \
        op start interval="0" timeout="250s" \
        op promote interval="0" timeout="70s" \
        op stop interval="0" timeout="70s" \
        op demote interval="0" timeout="200s" \
        op notify interval="0" timeout="200s" \
        meta failure-timeout="2000s" \
        meta migration-threshold="3"
pcs resource master mspostgres Postgresql9 master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true" migration-threshold="3" target-role="Started"
pcs constraint location mspostgres prefers failover1=90
pcs constraint location mspostgres prefers failover2=80
pcs constraint colocation add DBClusterIP with Master mspostgres score=INFINITY
pcs constraint order stop DBClusterIP  then demote mspostgres  kind=Optional symmetrical=false

pcs property set cluster-recheck-interval=5min
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=ignore
pcs resource defaults migration-threshold=3
pcs property set placement-strategy=balanced
pcs property set stop-all-resources=false
pcs resource defaults failure-timeout=2000
pcs resource defaults resource-stickiness=100
pcs resource op defaults on-fail=restart

问题: 我能够 运行 此资源作为故障转移 1 的主服务器和故障转移 2 的从属服务器。当使用 pcs resource ban 命令在 failover2 上移动 master 时,我得到了想要的结果。 当我重新启动机器 failover1 时,Failover2 成为资源 Postgresql9 的主人,但是当 Failover1 机器启动时,这个资源在两台机器上都成为奴隶,并且 none 被提升。

预期情况: 理想情况下,启动 Failover1 不应影响已经 运行ning 资源 Postgresql9 Master。

如果节点重新联机,请帮助我了解集群的行为。

事实证明,Postgres 服务是从 systemctl 启用的,因此当服务器启动时 systemctl 启动 Postgres 服务,因此 _monitor() 在资源代理 return $OCF_RUNNING_MASTER 和更改 Postgres-data-status 在其他节点上的状态。